Continuous Delivery & Continuous Deployment
Is your full development to operations lifecycle agile? or is it just your software development process? Do the gains your organization made adopting Agile seem to disappear as soon as “code is complete”?
Agile development has proven to be an effective way to improve the quality, flexibility, and clarity of an organization’s software development efforts. The concept of Continuous Integration has helped to make Agile a reality by ensuring frequent interaction between different developers’ work in the form of small units of change that are constantly and repeatedly examined.
But getting the most out of Agile efforts doesn’t end with Continuous Integration. If you are building and operating a software-based service, the application lifecycle doesn’t in development environments. To get the most out of Agile, you need to extend those ideas through operations as well. That means geting those small units of change promoted through your application lifecycle, fully tested, and into a customer-facing environment as quickly as possible.
The concept of Continuous Delivery extends your Continuous Integration loop to automatically deploy and test each build. Much like Continuous Integration ensures that you are never far from a working build, Continuous Delivery ensures that you are never far from a working services. And with a heavy reliance on automated testing, this doesn’t mean sacrificing quality or accepting unnecessary downtime.
At a minimum you will always have a live “early staging” environment where product managers and business stake holders can preview the latest version of the service (in a Continuous Delivery model). At the best, you will safely be pushing changes to your production systems automatically (in a Continuous Deployment model).
Newer concepts such as Test Driven Development, feature flags, and multivariate testing help to make safe Continuous Delivery/Deployment a reality. However, the underlying principals of Continuous Delivery and Continuous Deployment can help any organization that builds and operates software-based services to start to extend the benefits of Agile through their entire organization. DTO can help you figure out which parts of these methodologies is the right fit for your organization as well as help you put the right processes and tooling into place.