it:ad:continuous_deployment:home

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).


!includeurl http://skysigal.com/_media/resources/configuration/plantuml/minimalist.txt


class "Version Control Service" as VCS
class "Build Automation" as BA
class "Continuous Integration" as CI << <&cog> >>
class "Continuous Delivery" as CDEL << <&cog> >>

note left of CDEL
Process maturity heavily
affects the level of
conformance to
Continuous Delivery (CD).
Automation of Static+Dynamic
Security, Performance,
Compliance, Functional,
Post-Deployment Tests
range from 0 to 100%.
endnote

class "(Functional) Test Automation" as TA
class "Continuous Testing" as CT << <&cog> >>
class "Continuous Accredited Delivery" as CAL << <&cog> >> #E0E0E0

note left of CAL
Depends on 100%
conformance to
Continuous Delivery
intentions.
endnote


class "Continuous Deployment" as CDEP << <&cog> >>
class "Unit/Static/Dynamic Tests" as ST


CI .UP.> VCS : uses
BA <|-RIGHT- CI : improves
CI <|-DOWN- CDEL : improves
CI <|-RIGHT- CT : improves
CT <|-DOWN- CDEP : improves
CT .UP.> TA : uses

CDEL ..> CT : may use\nsome or\nall of


CDEL <|-DOWN- CAL : improves


BA -[HIDDEN]DOWN- ST
ST <.. CI : may use
ST <.. CDEL: uses


* 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.

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.