If you wished to turn your team into DevOps but you got confused, this article is for you. Here I explain the DevOps, its principles, its process and how to implement this methodology in your software development process.
What is DevOps?
If you are following our blog, you already know what the DevOps is. If not here is a quick sum up and an article that you can read about the DevOps culture:
The DevOps methodology improves communication between your developers and Ops on projects. The objectives of DevOps are as follows:
- save time on incident resolution
- launch new features faster
- reduce risks through process automation
- significantly increase the satisfaction of your customers, and your developers at the same time.
To do so, we are talking about the feedback loop. It is a DevOps concept that relies on measuring the impact of the development to know its effectiveness and continue to learn. This feedback loop is the key to achieve DevOps objectives and successfully improve your software and your team’s process. It will also help your teams delivering quality code.
Today, according to IDC, 20% of application development projects benefit from a DevOps approach. By 2021, this figure will increase to between 35% and 40%. It is no coincidence that so many IT teams are adopting the DevOps methodology for the project.
The DevOps principles
Using the DevOps methodology within your team for software development is going to change radically your organization. It will change the way your developer team is coding and deploying releases. It is based on 6 key principles:
- Continuous improvement
- Continuous testing
Automation allows developers and Ops to simplify the process and allows teams to be more productive. Since automation reduces the number of manual actions, it improves the development quality and security of the software. While iteration accelerates the development process thanks to faster end-users feedback. The self-service also accelerates releases by enabling developers to deploy applications on-demand by themselves. Continuous improvement is there to make the process more fluid. Indeed, after each incident, it is part of the DevOps process to do a post mortem. A post mortem is recording each incident, its impact, the actions taken to fix it, the cause of the problem and the actions that have been taken to prevent it to happen again. Continuous testing allows faster releases and higher quality at the same time. And finally but not least, the collaboration between developers and Ops is key to combine efforts and reach success faster.
The DevOps process
The DevOps process consists of a series of steps. Here is a diagram to help you visualize:
In the order, the DevOps process steps are:
- Plan: This is the part of the project where you are organizing the tasks, schedules and set up your project management tools. The idea is to plan tasks using the user story process from the agile methodology. Write tickets in the form of a user story will allow developers and Ops to understand what development needs to be done and why. A perfect user story as a what (who, where, trigger), a why and acceptance criteria. (Example: As a user, in my customer account, when I click on "option" I open a popup and I can change my name and first name).
- Code: Here the developers are doing code development and code review. When the code is ready, they merge it. In DevOps practice, it is important to share a code tool between Ops and developers teams like Github or Gitlab.
- Build: This step is the first one toward automation. The goal here is to build the source code into one desired format, compiling, testing and deploying in a particular place of the infrastructure. Once this step sets up the continuous integration (CI) and delivery (CD) tools can check and verify the source code from Source Code Management and build it.
- Test: The continuous testing process reduces risks. Automatic tests ensure that no bugs will be implemented in production. You have to implement testing tools in your workflow to ensure the best development quality for your software.
- Release: The code has passed the testing (continuous integration) process and is ready to be deployed.
- Deploy: The operational team is deploying the new feature in production. But as automation is one of the DevOps principles, it is possible to set up continuous deployment.
- Operate/ configure infrastructure: The Ops buildor maintain a scalable infrastructure, infrastructure as code and check security issues and log management.
- Monitor: The monitoring is an important step as it allows to fix incidents faster and to create a better experience for your end-user.
As DevOps aims to significantly increase the satisfaction of your customers, naturally your teams start again the steps with a new feature for your software or application. That is why we always draw the DevOps as an endless loop.
Implementing DevOps in your team
If your team has not yet implemented a DevOps process or even an Agile one, it can seem confusing, especially because it means shift not only the organization but also the culture of your team.
To introduce DevOps in your team you have to take your time, go step by step, don’t rush it. Here is how to gradually implement this new culture and organization:
- Start by changing the mindset of your teams. Without tools, the DevOps process can’t exist, but it is not enough, developers and Ops must understand and be interested in the work of each other. In short, developers and Ops must learn to collaborate.
- Implement an agile development process. Most of the DevOps projects use the Scrum or Kanban methodologies from Agile.
- To be able to do the fourth step, you shouldadopt cloud computing (Private, Public or Hybrid Cloud).
- Automate your software deployment thanks to continuous integration (CI) so developers can push a new feature easily.
- Use software continuous testing to reduce risks.
- Implement continuous deployment (CD), less manual actions there are, faster you can deploy new releases in production.
Keep in mind that adding those processes will change your organization and create new needs. For instance, your team may require training for the new DevOps tools that have been implemented.
You will reach the true DevOps environment when your development process will be as automated and agile as possible. If you have questions about one of the steps of the process please do not hesitate to contact us.