DevOps is a set of practices that bring together IT development and operations. It is mainly to reduce the time between submission and production changes. These practices promote the collaboration between developers and operation engineers, so that continuous software delivery can be achieved with less complex challenges to solve and faster resolution of issues that arise.
DevOps life cycle can be divided into several stages:
I. Development Stage
The planning phase includes all activities that occur before the actual coding begins. Typically, software companies develop a product roadmap based on their product vision and customer feedback. Roadmaps can be divided into epics, functions, and user stories. The user stories illustrate the functions, the people involved, and the expected output. The DevOps team usually documents the product roadmap and uses software tools to set each user story's importance and expected implementation time.
Popular code planning tools:
- Azure DevOps
We usually use version control tools to maintain code, such as Git, GitHub, and Bitbucket. These tools are also widely used to facilitate communication between development and operation teams, which is crucial to ensure communication within the DevOps team.
- Visual Studio
Building code includes all the steps needed to generate executable files. Compiling the code and converting the source code into machine code is one of the most important processes. Generally, the other building code processes are executing tests (for example, unit tests, integration tests, etc.), packaging, health checks, and generating reports.
Popular building tools:
After the DevOps team builds the code, it usually deploys the code to the staging environment. Suppose you want to perform a set of manual and automatic tests here. In that case, you can use tools such as Selenium, TestNG, or JUnit to complete automatic tests, and Docker containers are usually used to simulate test environments. Jenkins is a continuous integration tool that automates the entire testing process.
Popular test automation tools:
II. Deployment Stage
The release is the stage in the DevOps lifecycle where code is ready to be deployed. So far, the code has passed a series of manual and automatic tests, and the team should be sure that there will be no problems when deployed to the production environment.
According to the tools we use and the principles we set up, some organizations have added a manual approval process at the release stage. This allows only certain people in the organization to authorize publishing to production.
Deployment is the process of pushing changes from one environment to another. Typically, this phrase is used when pushing a product into production. Once the build is deployed, the changes can be viewed in the real-time production environment.
III. Operation Stage
When we deploy our code into a production environment, we must ensure everything works as expected. Additionally, operation teams often conduct technical and infrastructure management and interact with customers to ensure the product meets their needs. Customer insight is also critical when developing products further and should be considered during the planning phase.
The DevOps team will monitor the solution during the monitoring stage, which is the final stage of the DevOps lifecycle. This includes collecting data on customer behavior, performance, errors, and more. Team members analyze the data to gain insights, which are then used to support decision-making.
DevOps teams then restart the DevOps lifecycle. All the information and insights gathered during the operations phase are critical. For DevOps teams, there is usually no beginning or end point but rather a constant evolution of the product.
CI / CD includes continuous integration, continuous delivery, or continuous deployment.
Continuous integration is the process of submitting, building, and testing code. It is the core of the DevOps life cycle. We encourage developers to submit code frequently, and then developers can find problems early by submitting builds. Jenkins is one of the most commonly used continuous integration tools.
Continuous delivery is an extension of continuous integration. In addition to committing, building, and testing code, it also includes deploying code changes to a test and/or production environment. It is important to note that deploying to a production environment is a manual phase, and most of the other stages are automated.
Continuous deployment goes further than continuous delivery. For continuous deployment, the deployment to production will also be automated.