DevOps & ALM

Continuous Integration, Continuous Delivery, Continuous Deployment

투칼론 2015. 3. 7. 18:26
반응형

DELINEATING CONTINUOUS X – WHAT IS THE DIFFERENCE BETWEEN CONTINUOUS INTEGRATION, CONTINUOUS DELIVERY AND CONTINUOUS DEPLOYMENT?

Continuous Integration, Continuous Delivery and Continuous Deployment are a hot topic in software development, but they are often found to be confusing terms due to their similarity in both name and practice. These three practices, which I like to group under the name Continuous X, do differ and it’s important to know these differences as well as their similarities when learning about them. The Continuous X practices all focus on automating certain steps in the so-called deployment pipeline. By doing so, human error is removed from the process and the deployment pipeline is more reliable, faster and easier to repeat. The main difference between the three practices is how much of the steps in the deployment pipeline they automate.

Continuous Integration

Continuous Integration is the practice of merging all development work with the master-branch as often as possible. This enables the team to run their unit tests automatically every time they commit their code, so that bugs or other errors are found as early as possible. These tests are often run on build servers, so developers can continue their work while their tests are running. It is, however, their responsibility to check whether their tests have completed successfully! Build servers are often also used for other tasks than unit tests, like enforcing the use of coding standards or generating documentation.

Continuous Delivery

Continuous Delivery takes it a bit further than Continuous Integration. Not only does it automate unit tests, it also automates the deployment of the software on certain environments and some acceptance tests: After the unit tests the software is deployed automatically on the environment that is set up for acceptance tests. In this environment the build server runs all the acceptance tests that can be done automatically. Continous Delivery states that certain acceptance tests will still have to be done manually before deploying on the production environment. It should be possible to deploy on any environment (acceptance test, demo, production etc.) by simply pressing a button.

Continuous Deployment

Continuous Deployment takes it even further. According to this practice all acceptance tests should be automated and the software should be deployed automatically on the production environment with every commit.

Delineating Continuous X - What is the difference between Continuous Integration, Continuous Delivery and Continuous Deployment?

Figure 1. Continuous X visualized on the deployment pipeline

Which Continuous X practice is right for me?

It strongly depends on your type of business and the software product that you’re developing which practice suits your needs. Some businesses simply have certain constraints that would make Continuous Deployment impossible. It is clear, however, that IT limitations shouldn’t determine how far you go with implementing Continuous X practices, but that instead it should be decided based on your business needs.

[글참조] http://www.koenwesselman.com/difference-between-continuous-integration-continuous-delivery-and-continuous-deployment/

'DevOps & ALM' 카테고리의 다른 글

What is DevOps?  (0) 2015.03.08