What's the problem about rare deployments?
If your release cycle is very long your customer will start to ask for things which will make the system very complex. Why? Because your customer want their ideas always as fast as possible implemented. So your customer will start thinking about a system that is completly configurable while running. This new requirements will cause in a complex and less maintainable system.</p>
But... I can't release so often.
No, you can! It’s always possible to release in short cycles. Everything you need is the right set up:</p>
- Continuous integration is the important thing. Without a CI-Server you won't be able to release in short cycles.
- Test automation. You need unit tests, integration tests and for some cases UI tests.
- Monitoring. Your development team should always have an eye on the log files. If you don't know your problems in time you will have big trouble later...
- Automated deployment. If your deployment isn't automated yet and you want to deploy in short cycles you will have no time left to develop software.
- Code management with GIT. This tool supports your rapid deployments in such an dramatic way; it will blow you away.
- A very closely collaboration with your customer to manage the requirements. Don't write abstract requirements -- use examples as much as possible.
This is IMHO the minimum set up that you need if you want to have a continuous deployment.</p>
What do you get?
Your customer get what he want much faster. Your developer don’t have to create unmaintainable software but they can create awesome features. Developer and customer will love this new way to work. Rapid deployments ends up in a happy collaboration between customer and developer. Not more but also not less.</p>