IT:AD:Continuous Deployment

Summary

IT:AD:Continuous Deployment is similar to IT:AD:Continuous Delivery in that it improves on IT:AD:Continuous Integration, but due to it's complete incorporation of IT:AD:Continuous Testing each commit can be built, tested, packaged, and deployed to production safely and quickly in a sustainable way.

IT:AD:Continuous Deployment is a more mature deployment process than IT:AD:Continuous Delivery, but it's not for suitable for every type of organisation1).

Version Control ServiceBuild AutomationContinuous IntegrationContinuous DeliveryProcess maturity heavilyaffects the level ofconformance toContinuous Delivery (CD).Automation of Static+DynamicSecurity, Performance,Compliance, Functional,Post-Deployment Testsrange from 0 to 100%.(Functional) Test AutomationContinuous TestingContinuous Accredited DeliveryDepends on 100%conformance toContinuous Deliveryintentions.Continuous DeploymentUnit/Static/Dynamic Testsusesimprovesimprovesimprovesimprovesusesmay usesome orall ofimprovesmay useuses

Notes

ACiD

  • Advantages:
    • IT:AD:Continuous Deployment's incorporation of IT:AD:Continuous Testing fixes the observed problem in the majority of IT:AD:Continuous Delivery pipelines – the reliance on manual Acceptance Testing, which negates many of the time savings that the Agile methodology brought to the development process.
    • Accelerated Time to Market: CD lets an organization deliver the business value inherent in new software releases to customers more quickly. This capability helps the company stay a step ahead of the competition.
    • Building the Right Product: Frequent releases let the application development teams obtain user feedback more quickly. This lets them work on only the useful features. If they find that a feature isn’t useful, they spend no further effort on it. This helps them build the right product.
    • Improved Productivity and Efficiency: Significant time savings for developers, testers, operations engineers, etc. through automation.
    • Reliable Releases: The risks associated with a release have significantly decreased, and the release process has become more reliable. With CD, the deployment process and scripts are tested repeatedly before deployment to production. So, most errors in the deployment process and scripts have already been discovered. With more frequent releases, the number of code changes in each release decreases. This makes finding and fixing any problems that do occur easier, reducing the time in which they have an impact.
    • Improved Product Quality: The number of open bugs and production incidents has decreased significantly.
    • Improved Customer Satisfaction: A higher level of customer satisfaction is achieved.
  • Considerations:
    • There are some scenarios where end users are uncomfortable with updates being pushed:
      • When the update fails.
      • When they are in the middle of a complex series of steps and are not in a position to save their work.
    • Lack of test automation: A lack confidence in the completeness of a product's automated tests can prevent confidence in using continuous delivery.
    • Customer preferences: customers may not want continuous updates to their systems, especially at critical stages in their user operations.
    • Domain restrictions: In some domains (eg: telecom and medical) regulations require extensive testing before new versions are allowed to enter the operations phase.
    • Differences in environments: Different environments used in development, testing and production can result in undetected issues slipping to the production environment.
    • Perceived need for humans: It has been proposed that not all quality attributes can be verified by automation. Humans slows the delivery pipeline.

Notes

Continuous Delivery compared to Continuous Deployment

The fundamental difference is that IT:AD:Continuous Delivery is when you make your software product available to the customer but the decision to upgrade/install it is manual. In the case of desktop apps, they have to download/install the update, and in the case of a web service, someone has to authorize it's deployment to live.

IT:AD:Continuous Deployment is when the upgrade is automatically deployed.

In other words, with IT:AD:Continuous Delivery, a product can be automatically delivered to production at the touch of a button, once approved – whereas with IT:AD:Continuous Deployment it is automatically deployed to end production.

The second fundamental difference between the two is that whereas IT:AD:Continuous Delivery can use some [[IT/AD/Continuous Testing/]] [[IT/AD/Continuous Deployment/]] relies on using IT:AD:Continuous Testing to test the totality of the solutions's functionality.

Resources