What is DevOps?
DevOps is a culture that aims to foster collaboration between two complementary but previously separate professions: the software developer (Dev) and the administrator in charge of IT infrastructure (Ops).
Indeed, traditionally, the development team creates and improves applications with time and cost constraints . Then it delivers its code to the production team which is then responsible for deploying it in production while guaranteeing the stability of the application with a strong quality constraint .
This is where the wall of confusion between the two teams appears: the code that worked well in the developer’s environment is causing problems in production. So, whose fault is it? Communication between the Dev and Ops teams becomes complicated, and this has repercussions on the delivery of the application. The experience is not positive for the Dev and Ops teams, nor for the business teams or the product owners, not to mention, at the end of the chain, the customer who will decide whether the application is suitable for them or not.
This is where DevOps comes in, a new approach that breaks down this wall of confusion to ensure that teams work together with all stakeholders involved in the project. The common goal is then to satisfy the customer by delivering a high-quality, low-cost product that is developed quickly.
As I explained in an interview to present our Cloud & DevOps Solutions department , software is becoming more and more complex over time, teams have had to adapt and grow to meet user demands, building a wall between these two businesses. The practices and tools included in DevOps allow us to destroy the wall to be more responsive to the market and meet customer needs.
Thus, DevOps culture introduces a new paradigm that consists of breaking down barriers between professions, methods and working tools in order to better meet customer needs . This also saves time and therefore improves time-to-market.
Now that the definition of DevOs is established, let’s see what constitutes it.
What is DevOps made up of?
What are the key components of DevOps? DevOps is based primarily on a set of principles that can be summarized by the acronym “CALMS”: Culture, Automation, Lean, Measurement, Sharing.
- Culture : DevOps is a culture, a state of mind above all else. The idea is to enable team collaboration through constant communication to meet current challenges and customer needs, which are becoming increasingly complex with an ever-faster time to market. Ops and devs must share tools, but also mutual respect and total trust in the exchanges they have with their contacts. It is essential that all teams have the same overall vision of the information system. Communication between everyone is therefore facilitated, since everyone knows everything that is happening, among developers as well as administrators in charge of IT structures. Similarly, “failed fast” is important: you must know how to quickly test and challenge the functionality of an application;
- Automation : as many tasks as possible are standardized and automated as soon as possible in order to reduce the working time spent on repetitive tasks and thus gain in productivity and efficiency;
- Lean : Teams are encouraged to identify tasks that create value during the cycle and eliminate others by automating them. As a result, their work is of higher quality while requiring less time.
- Measurement : measurements and tests are carried out throughout the process to continuously adjust and ensure product quality;
- Sharing : Teams share their feedback, skills, and knowledge in pursuit of total transparency and strong collaboration between different teams. The strengths of each team are united, and complementarity becomes a key word. This value of sharing also applies to elements of daily life: sharing problems, knowledge, and feedback helps foster a sense of mutual support and empathy within teams. When they are more united, they work better together. It is with this premise in mind that Qim info launched DevOps First Friday, which allows our employees to exchange ideas in a friendly and informal manner.
That’s all clear! Now it’s time to ask how DevOps works.
How DevOps Works in Detail
What are the origins of DevOps culture?
Who invented DevOps? Dev and Ops teams were traditionally siloed, focused only on their own areas of focus, worked overtime, and botched deliveries, ultimately leading to customer dissatisfaction.
There had to be a more efficient process, so the two communities came together and began to exchange ideas. One of these pioneers was Belgian computer scientist Patrick Debois , who worked as a system administrator for the Belgian government and was deeply affected by the lack of consistency and communication between developers and administrators.
He discovered agile methods : in software engineering, these methods involve fostering collaboration between multidisciplinary teams and clients. He then created discussion groups. The DevOps adventure began with online forums and local meetings before becoming essential in the world of development.
At a conference in Toronto in 2008 entitled “Agile Infrastructure & Operations”, Patrick Debois and Andrew Schafer used the term DevOps, which had the success we know.
DevOps is an agile approach that emphasizes breaking down barriers between teams and bringing business lines together. As with any agile approach, the client is heavily involved.
Subsequently, global conferences called DevOpsDays proliferated. DevOps culture involves significant changes in a company’s way of working. Mindset is paramount in the agile approach.
Despite this need for profound change, DevOps is convincing, which we will see now.
The success of a DevOps approach relies primarily on culture, organization, and methodology. DevOps isn’t limited to automation alone. Methods from Agile culture, inspired by the Lean movement, are regularly used to implement a DevOps approach.
Let’s take a closer look at how DevOps works. Iteration paths (or cycles) are also called sprints.
Iteration involves testing and validating each step to ensure it works, before moving on to the next. This phase is repeated as many times as necessary. Sprint is a term related to agile methods that refers to a given time during which a task must be completed before being revised.
Shorter release cycles make it easier to plan and manage risks because progress is incremental , which also reduces the impact on system stability. Additionally, this shortened release cycle allows teams to adapt and respond to changing customer needs.
What is incremental or incremental production? To explain this concept simply, let’s go back to the basics of computer science. There are two main methods for updating data: one is to delete the previous data and replace it (delete-replace), while the other is to update only with new data (update).
Incremental production involves identifying differences between state N of the decision base and state N+1 of the production base. These differences can be deleted, modified, or added data. When identified, it is not necessary to rewrite all the code, but rather to update the database.
DevOps is thought of as a lifecycle where you move from one phase to another, and when the last phase ends, a new cycle begins. The DevOps lifecycle consists of various iterative and automated development processes called flows.
The number of flows and their names may differ slightly depending on the formulations used by the DevOps expert you are speaking to, but a common core composed of this flow is easily identifiable by all:
- Continuous planning corresponds to the production plan. The entire project is divided into multiple tasks. DevOps teams design the features of the applications and systems they create. They track their progress at varying levels of granularity, either lower or higher. It is necessary to create backlogs that group together all the features.
- Continuous development : Software versions are released frequently. All aspects of coding (writing, testing, reviewing, and integrating code), as well as the generation of that code, are part of continuous development.
- Continuous integration and continuous deployment : Every detected issue is resolved before other problems or security breaches occur. Changes are deployed systematically and controlled to reduce the risk of system configuration changes.
- Continuous testing : Automated tests are run at different phases of the DevOps cycle to verify that the code is intact.
- Continuous feedback : It is essential to collect and process customer feedback even after the product is deployed in order to improve it.
- Continuous operations : Software launch and future updates are automated.
The benefits of working according to the DevOps approach
The DevOps approach offers many advantages, the main ones of which we will list here:
Speed
Speed of production, speed of problem resolution… Continuous testing and automation of as many tasks as possible reduce monitoring time. In short, with DevOps, everything goes faster. The shorter the development time for an application, the faster the company benefits from the commercial value of its product. This is why the second advantage is:
Profitability
Indeed, TTM (Time-to-Market) has become a key marketing objective for many companies. In this case, this TTM corresponds to the development time of a product, in other words, the time between the idea and the launch on the market. However, the shorter this timeframe, the more agile a company is considered and the more it outpaces its competitors. This is how we arrive at the third advantage:
Business agility
It’s the ability to quickly adapt to changes and trends and demonstrate flexibility. This skill is essential for a digital services company (ESN), which must constantly remain at the forefront.
Customer satisfaction
As we saw above, one of the main characteristics of DevOps is the continuous improvement of the customer experience by involving them as much as possible, using the “continuous feedback” flow. Thus, delivery is ensured more quickly thanks to the regularity of feedback, the applications correspond as closely as possible to the customer’s expectations. It is thanks to iterative work and increased and regular customer feedback that DevOps is able to best meet the expectations of these customers.
The team’s skills development
Since the DevOps lifecycle is based on the principle of iteration and sprints, code quality is constantly improved, and any malfunction is fixed as quickly as possible. For example, according to the 2019 State of DevOps report , the best-performing organizations achieve code deployments 208 times more frequently and service recovery following an incident 2,604 times faster.
Now it’s time to ask who is using DevOps.
Who would benefit from adopting DevOps?
Who uses DevOps? Or should we say, who doesn’t?
Currently, it is considered that any company becomes a “software company.” Indeed, with the turn of the millennium, every economic player, regardless of their sector of activity, must take into account the imperative of digital transformation . A particularly well-known example is that of Nike, which has been able to take the digital turn with great efficiency.
To exist, you have to offer innovative digital tools, and faster and faster . Business is accelerating, competition is becoming fierce. In some markets, startups can arrive and disrupt a sector with an innovative service. When these services are well managed, in collaboration with technical and product teams, users will move towards these solutions because their experience is facilitated, with frequent updates and new features. Since they are aware of the rapid evolution of these services, they will even be more inclined to forgive small temporary bugs.
Thus, DevOps allows for continuous application delivery and the constant provision of new features. Error is not a problem in DevOps culture: if a mistake is made and the right feature is not targeted, DevOps teams are able to react, possibly changing the initially planned business plan.
To do this, four areas are essential to consider:
- Platform modernization : Your business must be prepared to provide the platform flexibility and scalability to handle customer demand;
- Application Modernization : Modernize your development and make the best choices for future deployment.
- IT Automation : Integrate automation into your organization as much as possible.
- Transformation : Continuously innovate to preserve the longevity of your business.
Our guide to implementing DevOps internally
As with any paradigm shift in project management, implementing DevOps is delicate and will only work successfully under certain conditions. That’s why we recommend seeking expert advice. You may be interested in our DevOps service offerings . Here, we present a guide to this implementation, based on the three pillars of DevOps: culture, process, and tools.
Adopting a new culture
We’re talking about leading change management within the organization; it all starts with people and their buy-in to a project. The primary challenge isn’t technological, but human, and your ability to establish a culture of agility within the company will make all the difference.
Likewise, don’t underestimate the commitment required for this change management. Whether within teams or at the company’s management level, everyone’s support is essential in implementing a DevOps approach. The entire team must be united and motivated around the upcoming change.
This is why it’s best to move forward gradually . Your initial goals should be modest and achievable without significant difficulty, which will make it easier for teams to accept change: when it’s smooth and satisfying, teams are more likely to continue working in that direction.
Adopt a new process
Therefore, it seems essential to familiarize yourself with agile methods . While they have proven their effectiveness, they nevertheless represent a significant change that can potentially be difficult for your teams to live with. Understanding and explaining these methods is a crucial prerequisite. To do this, you can organize training courses but also call on an agility coach who guides projects by bringing their method to workshops, interviews, and corporate seminars on agility, for example.
Finally, we recommend taking the time to evaluate your current practices . The CALMS model we mentioned earlier serves as a framework for analyzing the DevOps approach. The goal is to understand what in your practices can be considered DevOps and what deviates from it. You will then know which elements to focus on for change.
Adopting new tools
Finally, consider the tools you need to support your DevOps approach. DevOps is a culture before it is a set of tools, which is why we’ve chosen not to focus on the technical component in this guide. However, it does exist and is, of course, essential.
We will now review the tools you need to successfully engage in a DevOps approach.
Here are the best DevOps tools
What are the DevOps tools? You’ll need several that correspond to a stage of the DevOps lifecycle. Fortunately, some tools combine several functions. You can choose between different toolchains, which are collections of resources:
- All-in-one toolchains : These are suites of integrated tools that enable development and operations teams to work together efficiently and cohesively throughout the software development lifecycle. These tools provide a single or interconnected platform, from ideation to production. For example, the Microsoft Azure DevOps suite, Atlassian (Jira, Confluence, Bitbucket, Bamboo, etc.), Gitlab, etc.
- Custom toolchains : This option allows you to bring and combine the tools that teams already know and use. Integration is crucial to avoid wasting time logging into multiple locations and encountering difficulties sharing information between tools. They must be chosen carefully to ensure they meet the needs of the business and teams.
Let’s take a look at some of these custom tools:
Source code management tools
For example, there’s Git, the essential version control system these days. It can be used through software factories like GitLab, GitHub, Subversion, GitLab, or Bitbucket. These tools can be connected to solutions. We recommend choosing tools that offer code review, version control, and change management or automated deployment.
Configuration management tools
IT configuration management involves automating important and frequent tasks in an IT environment. This practice applies to a large number of machines, sometimes hundreds or thousands, and encompasses various tasks required to configure and maintain these machines.
These days, Ansible is a must-have for configuration management, and can be paired with an infrastructure-as-code tool like Terraform. The older Chef and Puppet can also help you accomplish this task.
CI/CD tools
There are many CI/CD tools on the market that can help automate software build, test, and deployment processes. Popular tools include Jenkins, GitLab CI/CD, Travis CI, CircleCI, Bamboo, Microsoft Azure DevOps, and AWS CodePipeline. These tools can help development teams work more efficiently and deliver high-quality applications faster.
Testing tools
There are also many testing tools available in the market to help development teams ensure the quality of their code, such as Selenium (frontend), JUnit (Java), TestNG (.NET), Appium (mobile apps)… Using these testing tools can help save time and resources by automating tests and delivering results faster, while verifying the quality and performance of the code.
Monitoring and alert tools
Monitoring tools help track the performance and availability of applications and IT infrastructure. Popular tools include Prometheus, Grafana, Elastic Stack, Datadog, and New Relic. Using these tools can help teams detect issues quickly, improve reliability, and optimize application performance. It’s also possible to instrument your code with OpenTelemetry to gain more detailed insights into its execution.
Project management tools
The most popular project management tools are Jira, Trello, Asana, GitLab, GitHub, and Microsoft Azure DevOps, which offer both free and paid versions depending on your needs.
Cloud providers
As mentioned above, the most popular are Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform. Others, such as Scaleway or Exoscale, can be useful, particularly in a sovereignty context.
List of jobs useful for DevOps
What are the professions involved in the DevOps process? We won’t list them all here, but we will focus on the DevOps profession before looking at the major job categories.
- The DevOps engineer (and its variant, the DevSecOps engineer) : this is one of the most sought-after IT profiles. And yet it doesn’t exist… just as there is no such thing as an Agile engineer!
However, the DevOps engineer is widely used in recruitment and brings together skills in both software development and system administration, in order to implement and improve DevOps practices within an organization.
DevOps is a philosophy, not a role, which aims to create a link between developers and IT administrators, which requires good interpersonal skills and management and steering skills.
Here are some profiles that are brought to work around DevOps:
- The Systems Engineer is an expert in hardware and software. They analyze and optimize the company’s IT tools to ensure that all users have a suitable and efficient installation. They maintain ongoing technological monitoring to anticipate system developments.
- Security engineers play a vital role in a context where cybercrime is constantly on the rise. They design software by anticipating and repairing security vulnerabilities. They also ensure that the system is resilient and reliable.
- The Network Engineer monitors and maintains the operation of a company’s networks.
- The Architect designs and supervises the overall architecture of a software system to ensure its consistency, stability and scalability.
- The Integrator implements the IT solution in the production environment and ensures its deployment. They can set up pipelines with developers to automate deliveries.
- The Front-End/Back-End/Fullstack Developer is responsible for the design of the IT solution and ensures the ergonomics of the user interface.
- The Project Manager is responsible for bringing a project to fruition and ensuring that all team members are moving forward together.
- The Agile Coach + Scrum Master participates in the company’s management change, by supporting and training teams. He is supported by the company’s management.
What is the state of the job market around this principle?
Searching for the keyword “DevOps” in March 2023 yielded more than 16,000 job openings in France on LinkedIn and more than 2,500 on Welcome to the Jungle. Refining with the two words “DevOps engineer” yielded more than 3,300 job openings on LinkedIn.
This shows that there are many job offers around DevOps in general and more specifically regarding the profession of DevOps engineer. However, there are more offers than applicants: there is a shortage . Sacha Kalusevic, director of Michael Page Tech, is interviewed by BDM and presents an overview of the IT job market for 2023. According to him,
“Many tech sectors are experiencing such severe labor and skills shortages that we are unlikely to experience a jobs crisis in 2023.”
While the IT job market is performing well, tensions are on the horizon. Dares (Department of Research, Studies, and Statistics) has published a report on careers in 2030, a report whose objective is to anticipate employers’ recruitment needs between 2019 and 2030 in various professions.
This report highlights in particular the IT engineering profession, where recruitment difficulties could increase by 2030, even though there is already tension in this sector where shortages exist, as in cybersecurity and development.
“Cybersecurity,” “development,” and “DevOps”: these are terms that refer to professions essential to DevOps and which businesses are in great need of. The sector is booming and is just waiting to hire.