What is Continuous Delivery?
Continuous Delivery (CD) - A set of principles and practices in growing use in software development to improve the process of software delivery. Techniques such as automated testing, continuous integration and automated deployments allow software to be developed to a high standard and easily packaged and deployed to test environments, resulting in the ability to rapidly, reliably and repeatedly push out enhancements and bug fixes to customers at low risk and with minimal manual overhead.
The foundation of Dev9 is our focus on Continuous Delivery - it drives our core investment in new processes and tools. Our customers leverage this investment in modern best practices, tools & processes to obtain high quality, highly collaborative solutions.
The most surprising thing about adopting a Continuous Delivery model is the tremendous improvement to team morale. Automating drudgery reduces risk, but it also improves both personal work satisfaction (focusing on the meaningful) and team relations (vastly improving quality of handoffs).
To understand the difference between Continuous Delivery & traditional development, consider the traditional (manual) model of technology implementation - the status quo at most organizations.
Many organizations have started to use Lean principles to optimize their processes, but few have applied Lean analysis techniques to the delivery of technology solutions - in particular, around manual processes. The irony is that the technical delivery processes are often a series of complex tasks that are repeated on a regular basis - making them a perfect target for Lean process improvements. Manual processes make every aspect of the delivery lifecycle painful. Development has to choose between new features and system stability. QA has to be perfect, or missed regressions cause bugs to pop back into production. Seemingly minor inconsistencies in environments cause failed deployments and mysterious errors. Departmental infighting and poor morale tend to become endemic.
Culture of Success
By implementing Lean principles focused on eliminating error prone manual processes - and automating the test, development, and deployment processes, staff are able to work much more efficiently, delivering real value faster. Even better, eliminating failed releases, 3 AM deployments, and clarifying expectations between departments improves morale and helps to lock in a culture of success. Optimizing your team for Continuous Delivery is more than just a few tools - it’s an education and a shift in culture. Releases are no longer built on a developer’s machine and emailed out. Instead, two hundred web tests are run on five browsers in fifteen minutes through a cloud-based lab. The applications themselves are architected for easy deployment. Releases happen in the afternoon, and nobody notices - except for the congratulations from your boss on another on-time production update.
Moving to a Continuous Delivery model requires a shift in people, process, and tools - in effect, a combination of bottom-up & top-down commitments to improve the culture. For clients looking to shift their existing organizations to Continuous Delivery, we recommend a three stage process:
- Gap analysis & inventory (identify missing tools, skills, and processes)
- Education (build awareness of gaps and solutions)
- Implementation (paired, hands on technical implementation)
We find that the third step is often the most critical - people learn better when doing. By blending our team with your team on a real project (often a platform migration or new application), it's easier to make the new cultural transitions stick for the long haul.
Interested in more information or putting an action plan together? Drop us a line and see how we can help.
Our methodology combines the best of modern Agile best practices, including elements drawn from Scrum, Kanban, and XP.
Automated Builds: Instant feedback on the state of the software at all times, including extensive automatically generated documentation (e.g. UML class diagrams, database schema, etc.)
Automated Tests: Our experience building massively parallel automated test suites allows for virtually instantaneous notification of any regressions - faster and less expensively than manual testing.
Continuous Integration: Immediate notification of any problems with integration - both within the application and integration points with internal and external partners.
Deployment Automation: By working from production deployment goals back into development, we create seamless, straight-forward deployment packages
Virtualization/Public/Private Cloud Ready: By leveraging our knowledge of industry standards, we develop applications that are easily deployed to current standards for both private cloud and public cloud offerings - future-proofing your investment and giving you more deployment flexibility.
Frequent Stress Free Releases: Using best practice patterns for architecture, combined with our focus on deployment, allows us to build software releases that can be moved to staging or production with zero-downtime.