Before DevOps, we had this traditional engineering practices where different teams had their own duties in the software development and release cycle. Most of the process in the software release pipeline was manual and the communication between teams created a lot of friction in the software release process. With the advent of DevOps, the siloed teams started working together, a lot of processes got automated and the software release time is reduced to a great extent when compared to traditional models. Moreover, continuous feedback in DevOps methodology helps organizations to innovate, fix bugs and change functionality in very less time.
Now let’s look into the main pillars of ALM.
1. Continuous Integration
2. Continuous Delivery
3. Continuous Deployment.
If you take the traditional software development model, the integration of code from different developers takes days to weeks to even months. Once the integration happens, there will be unexpected errors and failures. Then the teams would start working on identifying the problems and will try to fix it. Then came the concept of extreme programming followed by continuous integration. Continuous integration is a practice where you integrate the code very often to find the issues in the earlier stages. In continuous integration, every developer commit goes through the following.
1. static code analysis
2. unit tests and
3. functional tests.
5. Integration tests.
By following this, you get continuous feedback from relevant stockholders and teams associated with the project. As the CI process is automated, the teams will get notified in minutes after the developer commit if anything in the system fails. If anything goes wrong, fixing that would be the first priority rather than continuously working on the application.
Continuous Delivery is the confidence that you have in the code which passed all the tests for deploying it to production.
Continuous deployment is same like continuous delivery with the only difference of no manual intervention. Which means, in continuous delivery, there will be decision makers for moving the code to production. In continuous deployment, once the code passes all the test, it will be automatically moved to production without any manual intervention. So if a developer commit does not have any issues, it directly goes to production.
The key difference is shown in the image below.