DevOps Culture and Practices
DevOps, a term that we hear more and more in enterprises with phrases such as We do DevOps or We use DevOps tools, is the contraction of the words Development and Operations.
DevOps is a culture different from traditional corporate cultures and requires a change in mindset, processes, and tools. It is often associated with continuous integration (CI) and continuous delivery (CD) practices, which are software engineering practices, but also with Infrastructure as Code (IaC), which consists of codifying the structure and configuration of infrastructure.
In this chapter, we will see what DevOps culture is, what DevOps principles are, and the benefits it brings to a company. Then, we will explain CI/CD practices and, finally, we will detail IaC with its patterns and practices.
In this chapter, the following topics will be covered:
- Getting started with...
Getting started with DevOps
The term DevOps was introduced in 2007-2009 by Patrick Debois, Gene Kim, and John Willis, and it represents the combination of Development (Dev) and Operations (Ops). It has given rise to a movement that advocates bringing developers and operations together within teams. This is to be able to deliver added business value to users more quickly and hence be more competitive in the market.
DevOps culture is a set of practices that reduce the barriers between developers, who want to innovate and deliver faster, on the one side and, on the other side, operations, who want to guarantee the stability of production systems and the quality of the system changes they make.
DevOps culture is also the extension of agile processes (scrum, XP, and so on), which make it possible to reduce delivery times and already involve developers and business teams, but are often...
Implementing CI/CD and continuous deployment
We saw earlier that one of the key DevOps practices is the process of integration and continuous delivery, also called CI/CD. In fact, behind the acronyms of CI/CD, there are three practices:
- Continuous integration (CI)
- Continuous delivery (CD)
- Continuous deployment
What does each of these practices correspond to? What are their prerequisites and best practices? Are they applicable to all?
Let's look in detail at each of these practices, starting with continuous integration.
Continuous integration (CI)
In the following definition given by Martin Fowler, there are three key things mentioned, members of a team, integrate, and as quickly as possible:
"Continuous Integration...
Understanding IaC practices
IaC is a practice that consists of writing the code of the resources that make up an infrastructure.
This practice began to take effect with the rise of DevOps culture and with the modernization of cloud infrastructure. Indeed, Ops teams that deploy infrastructures manually take time to deliver infrastructure changes due to inconsistent handling and the risk of errors. Also, with the modernization of the cloud and its scalability, the way an infrastructure is built requires a review of provisioning and change practices by adapting a more automated method.
IaC is the process of writing the code of the provisioning and configuration steps of infrastructure components to automate its deployment in a repeatable and consistent manner.
Before we look at the use of IaC, we will see what the benefits of this practice are.
Summary
In this first chapter, we saw that DevOps culture is a story of collaboration, processes, and tools. Then, we detailed the different steps of the CI/CD process and explained the difference between and that continuous deployment.
Finally, the last part explained how to use IaC, with its best practices.
In the next chapter, we will start with the implementation of IaC and how to provision an infrastructure with Terraform.
Questions
- Of which words is DevOps a contraction?
- Is DevOps a term that represents: the name of a tool, a culture or a society, or the title of a book?
- What are the three axes of DevOps culture?
- What is the objective of continuous integration?
- What is the difference between continuous delivery and continuous deployment?
- What is IaC?
Further reading
If you want to know more about DevOps culture, here are some resources:
- The DevOps Resource Center (Microsoft resources): https://docs.microsoft.com/en-us/azure/devops/learn/
- 2018 State of DevOps Report (by Puppet): https://puppet.com/resources/whitepaper/state-of-devops-report