How To Set Up a Solid DevOps Lifecycle

Learn about the different phases in the DevOps lifecycle and what tools to use

Chris Verdence
Better Programming

--

busy highway stretching into the distance
Photo by Brian Ho on Unsplash

DevOps is a set of practices that combines IT development and operations. It is mainly intended to reduce the time between when a change is committed and when the change is in production. The practices facilitate collaboration between developers and operations engineers and hence enable continuous software delivery with less complex challenges to solve and faster resolution of problems that appear.

The DevOps lifecycle can be divided into multiple phases:

diagram showing the components of DevOps as a circle
Figure by author

The DevOps practice allows a team to manage the entire software development cycle, including development, testing, deployment, and operations. It consists of various stages, such as continuous development, continuous integration, continuous deployment, and continuous monitoring.

Development

Continuous development

Continuous development includes the planning and coding of software.

Plan

The planning phase includes all activities that take place before the actual coding is started. Typically, software companies have developed product roadmaps based on their product vision and customer feedback. The roadmap can be broken down into epics, features, and user stories. The user stories explain functionality, stakeholders, and expected output. DevOps teams typically document the product roadmap and set the importance and predicted time of implementation for each user story using software tools.

Popular code planning tools:

Code

For coding, there are a number of different coding languages and IDEs that can be used. IDE stands for integrated development environment, and typically includes a source code editor, build automation tools, and a debugger. Some of the most popular coding languages include Python, Java, and JavaScript.

For maintaining the code, it is quite common to use version control tools such as Git, GitHub, and Bitbucket. These tools are also widely used to foster communication between development and operations teams and are crucial in order to secure communication within a DevOps team.

Popular IDEs:

Continuous testing

Continuous testing is the phase where the code is built and continuously tested for bugs.

Build

Building code includes all the steps that are necessary to produce an executable file. One of the most important of those processes is compiling the code, which is the conversion of source code into machine code. Other processes that are usually a part of building code are executing tests (e.g., unit tests, integration tests, etc.), packaging, running health checks, and generating reports.

Popular build tools:

Test

After the DevOps team has built code, the code is typically deployed into a staging environment. Here a set of manual and automated tests are performed. Automated tests can be done by using tools such as Selenium, TestNG, or JUnit, while Docker containers are commonly used for simulating test environments. Jenkins is a continuous integration tool that can automate the entire testing process.

Popular testing automation tools:

Continuous Deployment

When the code is built and tested thoroughly, it is ready for release and deployment into the production environment.

Release

Release is the stage in the DevOps lifecycle where the code is ready to be deployed. At this point, the code has passed a set of manual and automated tests, and the team should be confident that no issues will arise when deployed to production.

Depending on the tools used and principles set, some organisations add a manual approval process at the release stage. This is done to allow only certain people within an organisation to authorise a release into production.

Popular release management tools:

Deploy

Deployment is the process of pushing changes from one environment to another. Often it is a phrase used when pushing builds into production. Once the build is deployed, the changes can be viewed in the live production environment.

Popular deployment tools:

Operations

Operate

When the code is deployed to production, it is important to make sure that everything is running as intended. In addition, the operations team typically do tech and infrastructure management as well as interacting with customers to make sure that the product is meeting their need. Customer insight is also crucial when further developing the product, and it should be taken into consideration in the planning stage.

Popular ITOM tools:

Continuous Monitoring

Monitor

In the monitor phase, which is the final phase of the DevOps lifecycle, the DevOps team monitors the solution. This includes collecting data about customer behavior, performance, errors, and more. The data is analyzed to gain insight and then used to support decisions.

All the information and insight collected in the operations phase is crucial when the DevOps team then starts the DevOps lifecycle over again. For DevOps teams, there is typically no start or end, but rather continuous evolution of products.

Popular infrastructure monitoring tools:

CI/CD

CI/CD includes continuous integration and continuous delivery or continuous deployment.

Continuous integration is the process of committing, building, and testing code. It is at the heart of the DevOps life cycle. Developers are encouraged to commit code frequently, and every commit is then built to allow for early detection of problems. Jenkins is one of the most commonly used tools for continuous integration.

Continuous delivery is an extension of continuous integration. In addition to committing, building, and testing code, it includes the deployment of code changes to a testing and/or production environment. It is important to note that deployment to the production environment is a manual stage, where most of the other stages are automated.

Continuous deployment goes a step further than continuous delivery. For continuous deployment, the deployment to production is also automated.

diagram showing that deployment to production is automated in continuous deployment but manual in continuous delivery
Figure by author

--

--