The complexity of today's software has changed the way we look at delivering it. The demand for constant updates has forced companies to find faster and more efficient ways to deploy tested and working versions of software. Continuous Delivery allows for just that.
The terms Continuous Delivery and Continuous Deployment are often used interchangeably in the software development world. They are actually different concepts; albeit just one distinguishable factor separates them. Continuous Delivery involves a series of defined practices to ensure code is tested and ready to deploy at any time. Continuous Deployment takes it one step further and automatically releases the code to staging.
Both concepts are natural progressions of Continuous Integration which allows project members to frequently integrate their work through automated builds. With the appropriate automated testing and verification tools, a successful build deems an integration 'ready' for deployment. Implementing either Continuous Delivery or Continuous Deployment depends solely on your company's development and deployment methodologies. For instance, at Smart Software Solutions we utilize a staging server to ensure business applications and services function as expected before releasing the code to production. In some situations, however, we may setup a Continuous Deployment environment if the client and application calls for it.
It is evident that software development is still evolving as are its methodologies. With the fifteen year anniversary of the Agile Manifesto right around the corner we are seeing an emphasis on the build, test, and deployment phases rather than the development phase that traditional Agile focuses on. Some feel that the traditional or mainstream approach to Agile conflicts with Continuous Delivery - especially on its definition of periodic intervals. Don't worry, though. Agile won't be replaced anytime soon. In fact, Continuous Delivery and Continuous Deployment can be considered an extension of Agile development for all intents and purposes. The second installment, which you can find here, covers how Agile and Continuous Delivery can co-exist.