DevOps Life cycle (CI/CD)
DevOps is a practice that allows a single team to manage the entire application development life cycle, that is, development, testing, deployment, operations.
The aim of DevOps is to shorten the system’s development life cycle while delivering features, fixes, and updates frequently in close alignment with business objectives.
It consists of various stages such as continuous development, continuous integration, continuous testing, continuous deployment, and continuous monitoring.
What do you mean Pipeline: Set of automated processes that teams can to reliably and efficiently compile, build and deploy their code to their production compute platforms.
A pipeline generally consists of a set of tools which are normally broken down
- Source Control
- Build tools
- Containerization
- Configuration Management
- Monitoring
Acceptance testing process of running a series of tests over compiled/built code to test against the predefined acceptance criteria set by the business.
Continuous deployment is a strategy for software releases wherein any code commit that passes the automated testing phase is automatically released into the production environment, making changes that are visible to the software's users.
Some popular tools that are used here are:
Source Code Management: Git, SVN, Mercurial, CVS, and JIRA
Building/ packaging Code: Ant, Maven, Gradle
Continuous Testing is the process of executing automated tests as part of the software delivery pipeline in order to obtain feedback on the business risks associated with a software release candidate as rapidly as possible.
Some popular tools that are used here are: Test sigma, Selenium, RFT, Tosca
Continuous Integration (CI): is the process in which automated build pipelines are triggered by these check in’s which allow for fast and easy to locate error detection.
Some popular tools that are used here are:
Jenkins, Buddy, TeamCity, Travis CI, Bamboo, GitLab CI, Circle CI, Code ship.
Continuous Deployment (CD) is the process that takes validated Features from a staging environment and deploys them into the production environment.
Configuration Management is the act of establishing and maintaining consistency in an application’s functional requirements and performance. The act of releasing deployments to servers, scheduling updates on all servers and most importantly keeping the configurations consistent across all the servers.
Some popular tools that are used here are:
Puppet, Chef, SaltStack, and Ansible.
CD pipeline allows these to be quickly delivered into production.
Blue/Green deployments.
Continuous Delivery (CD): is the process which allows developers and operations engineers to deliver bug fixes, features, and configuration change into production reliably, quickly and sustainably. User feedback is received much quicker.
Some popular tools that are used here are :
Jenkins, ElectricFlow, Microsoft Visual Studio, Octopus Deploy, IBMUrbanCode, AWS CodeDeploy, DeployBot, Shippable
Continuous delivery vs continuous deployment?
Continuous delivery is an approach that incorporates the concepts of continuous integration, automated testing, and continuous deployment. But business teams may decide not to release software into production with continuous delivery due to various reasons.
This above-given stage is the heart of the entire DevOps life cycle. This entire process can be automated using Jenkins.
Continuous Monitoring: This is a very crucial stage of the DevOps life cycle where you continuously monitor the performance of your application.
Some popular tools that are used here are Splunk, ELK Stack, Nagios, NewRelic and Sensu.
These DevOps stages are carried out on loop continuously till you achieve the desired product quality. Therefore almost all of the major IT companies have shifted to DevOps for building their products.