Deployable SoftwareDevelopment teams that prioritize keeping their software deployable at all times.
Version ControlVersion control is a tool that maintains current and historical versions of all code. This often has useful features such as viewing the difference between any two versions of a file.
Automated DeploymentThe ability to automatically deploy code to any environment with the push of a button. test cases against an environment and reports results.User acceptance testing is the process that a business unit uses to accept software as complete.
Operational Acceptance TestingThe process that operations teams use to accept software as resilient and supportable such as load testing.
Security TestingThe process that an information security team uses to accept software as secure such as vulnerability assessments and penetration tests.
Release ManagementThe process of planning releases and making the decision to launch a release to production.
Continuous Delivery ProcessContinuous delivery is a process of regularly checking in the work of multiple developers into a shared mainline in a version control tool. The code is then deployed to a system integration testing environment for build and unit testing until these tests pass. The code is then deployed to an automated acceptance testing environment until that test passes.With the code integrated and build, unit and automated testing completed the code is then deployed to a user acceptance testing environment. Business units test the code and open defects against any variances. When user acceptance testing is satisfied that the code is reasonably high quality it is releasable. The release management process decides when to actually deploy releasable code.
Continuous Development vs Continuous DeploymentContinuous development regularly produces code that can potentially be launched to customers. Continuous deployment regularly produces code that is launched to customers. The difference is that continuous deployment doesn't include a release management decision about when to launch a release and instead automatically releases any code that passes testing.
|Overview: Continuous Delivery|
An approach to software development that allows software to be released at any time.