Software Delivery – Continuous Itegration, Build and Deploy
ByYears ago I worked for a start-up company and under a very demanding manager. He was a stickler about not having build breaks and that our software could be delivered to whom ever we want after a build. The first task he would do on a new project was to create the make file that would build the install script for the product. To him that was the most critical component and must be constantly maintained during the development cycle. After every build of the product we had an install package.
Software delivery is so critical especially with very complex projects that involve multiple teams. Deploying software into a SOA that is 24×7 presents challenges that we never faced in our small start-up. But the principle remains the same, “You need to know how to deliver your product right from the beginning of the project”.
How many project put this as a top priority? I have seen many situations where how we deliver product into the “live” environment is not considered until the end of the project. Why should this be important?
- Large systems can be fragile
With a small product you can control the environment it will be deployed into. With large system deploys their are many factors you have to be aware of during a deploy. Just one table not being updated in a database can cause serious problems during a deploy. With the multiple connections that are involved it can be very difficult to track down the problem. - The individual teams cannot understand the whole
It is unrealistic to have all of the teams on the project understand every aspect of the deployment. The team’s focus is on their functionality they need to provide. - A continuous integration, build and deploy process needs to be implemented
Continuous integration, build and deploy are the cornerstone on which a solid software system can be built. Without this in place you will have difficulty deploying a workable solution. - A integration and build team is critical
This is the team that is responsible for building and deploying the product. They understand all of the components of the system and determines the deployment strategy.
A good Agile process depends on having the foundation in place. Continuous integration, build and deploy is the foundation for good process.