A lot of things can be hidden behind a word, and DevOps is one of them. What does this word mean and what does it imply? I'm going to share with you my feelings and my experience of DevOps...
In the IT world, one term has gained popularity over the years and revolutionized the way companies develop, deploy and manage software. It's called DevOps.
A light introduction about DevOps
DevOps, a contraction of 'Development' and 'Operations', is much more than just a trend or a collection of IT tools. It's a philosophy, an approach that has changed the way development and operations teams work together. This approach has become increasingly popular in recent years, as it allows companies to redefine more efficient and sometimes faster ways of working.
The french website of Stéphane ROBERT will give you some precise information and useful examples.
The origins of DevOps go back to around 2010. Back then, a few brave developers and other ops people were already asking questions about their methodology, their ability to develop and deploy code, the siloing of teams, and so on. At first, it was just an idea, which grew into a working group, then a local conference, and finally became what it is today: a must-have.
Two important names stand out: Patrick Debois and John Allspaw. In 2009, Patrick Debois organized the first 'DevOpsDays' conference in Ghent, Belgium, bringing together experts in development and operations to discuss the challenges and opportunities of collaboration between these two areas.
John Allspaw, then at Flickr, also played a crucial role in sharing the company's successes in collaboration between development and operations teams. His presentations highlighted the value of communication and mutual understanding in improving the reliability of online services.
Over the years, DevOps has become an increasingly widely accepted philosophy. Many organizations have seen the benefits of a more collaborative and automated approach to software development and IT operations. DevOps tools have been developed to facilitate process automation, continuous deployment and, more recently, infrastructure management as code (IaC).
So, what is DevOps ?
At the heart of DevOps are several fundamental principles that guide its implementation. One of the pillars is automation. Manual processes are replaced by scripts and tools that automate tasks or actions, speeding up deployment, reducing human error and enabling systems to be managed more efficiently.
Another key principle is collaboration. Development and operations teams work closely together, sharing knowledge and responsibilities, and communicating transparently and almost directly. This approach eliminates organisational silos and improves mutual understanding of issues.
The DevOps culture is based on continuous improvement. Teams constantly strive to optimise processes, gather feedback and adjust accordingly. Rapid feedback and the ability to adapt are essential.
How-to apply DevOps ?
DevOps is not just about theoretical concepts. In addition to changes in team and project organisation, tools and a mindset must be common and shared, as well as being accepted.
Continuous integration (CI) involves automatic builds, tests and code checks with each modification, guaranteeing consistent software quality. These include tools such as GitLab-CI, Jenkins, Travis CI, Circle CI, Drone, etc.
Continuous Delivery (CD) extends this idea by automating the deployment of software in production. Updates can be carried out smoothly, with rollback possible. Naturally, the scope of the deployment needs to be clearly defined before it goes into production. CI tools are often the same as those used for CD.
Infrastructure as Code (IaC) is another important facet of DevOps. It enables infrastructure to be managed in a programmable and sometimes immutable way, making it easier to set up, update and monitor systems. Today, the most popular tool on the market is Terraform and its free OpenTofu solution.
If I use git and Kubernetes, am I a DevOps engineer ?
The idea is there, and these are tools frequently associated with DevOps, but they are part of a whole. Having your code in a git repository is a good idea, allowing you to version your files, trace the history of the file and work efficiently as a team. Kubernetes is a tool for orchestrating containers and giving a semblance of intelligence to an infrastructure made up of microservices. So there are many other concepts missing around these two tools if we are to talk about DevOps.
If I automatize every thing I do, am I a DevOps engineer ?
It's not one action or one decision that makes you DevOps. It's a whole package, from the theory, to the work team, to the management and procedures, and finally to the tools used.
DevOps beyond IT
An intriguing feature of DevOps is its ability to extend well beyond the realm of IT. The principles of collaboration, automation and continuous improvement have applications in many other fields.
For example, DevOps can be adapted to online marketing to improve campaign management (SEO, etc.), or to project management for smoother execution and informed decision-making.
As a reminder, the potential benefits of applying DevOps in these areas are numerous, including greater efficiency, fewer errors and the ability to adapt quickly to market changes.
My experience into DevOps
For a long time, I automated as much as possible the actions that I considered intellectually useless. You know, the kind of actions that make no sense, that waste time and add no value to your work, your profession, your soul... For example, installing an operating system after having done it dozens of times manually, or deleting temporary files, checking that a service is started and accessible...
Automtic deployment of Windows machines
My first automated actions date back to 2014. In an SME in Brittany, we had to deploy PCs for customers. The PCs were standardised (identical hardware, operating system and tools) and all made by hand. As I love the hardware side of things, I enjoyed repeating these assembly and installation tasks, but the race for profitability always calls us to order. So, rather than spending time watching a loading bar scroll by, the time was put to good use discovering and setting up a Windows deployment station. After a human investment, we had halved the time spent preparing a PC completely, as well as increasing our assembly capacity.
- time spent by hand (PC assembly + OS installation + middleware + updates): around 3 hours per machine (even when tasks are parallelized between several machines), everything done by hand with a constant eye on progress;
- time spent with automation (PC assembly + OS deployment launch + updates launched automatically post-installation): one hour per machine, with the minimum of manual action.
In this experience, we reviewed the entire process, documented everything, changed our tools and our way of working. Over and above the financial investment and human commitment, we all worked together to energise the team and our ability to respond to demand. As we have continued to use the system, we have continued to automate tasks (silent installation of applications according to customer requirements, configurations specific to the customer context, etc.), which has enabled us to go further and ask ourselves the questions we need to ask ourselves to adopt this methodology for the server side.
Automatic deployment of containers into a Kubernetes cluster
In 2020, as part of the evolving ops team, we were faced with a situation of rapid business growth, with ever-increasing operational requirements. Our ageing applications were not adapted to today's microservices-based IT environment. Thanks to the expertise and skills of every member of the team, we adopted a DevOps methodology, incorporating continuous deployment, an agile approach to product and project management, and automation of infrastructure and middleware configuration. Everyone involved, whether technical or managerial, worked proactively together to achieve a common goal: to improve application development and deployment processes, considerably reducing time-to-production and minimizing manual tasks for operators.
I remember the days when we had to download the developers' sources, create the Docker image locally, then manually transfer it to a remote image repository, before finally retrieving this image from the production Docker host and recreating a container. The tedious steps of committing, tagging in GitLab, transferring via rsync and many other actions were taking us more than 2 hours, including testing. After a complete overhaul of our deployment chain, we managed to reduce this time to just 20 minutes to tag, deploy, test and put the new version of the application into production.
In addition, we have automated part of our pre-production environment, including the deployment of applications based on commits and the results of the QA phase, as well as the automation of infrastructure management and operating system security. This transition to automation has considerably improved our operational efficiency.
Don't push up DevOps approvement
Although the DevOps methodology has proved its effectiveness, it is essential to recognise that its application is not suitable for all situations. Forcing radical change on your teams or projects can be counter-productive. A gradual approach is preferable.
Not everything can be reliably and idempotently automated overnight. Instead, start with small steps. Create examples of Ansible roles or configure a few virtual machines with Terraform, storing the configuration files in a Git repository. Document the process around these files, draw up infrastructure diagrams and prepare presentations on the concept of automation and the deployment chain. Show your colleagues that it is possible to gradually change the way they think and work.
The aim is to avoid unnecessary disruption to existing workflows and to allow teams to adapt gradually to the DevOps methodology. This promotes a smoother and more successful transition.
DevOps is not just a buzzword in the IT industry. It's a powerful philosophy and proven methodology that transcends the boundaries of technology. DevOps is based on principles of collaboration, automation and continuous improvement that have the power to transform the way we work and develop products.
By exploring the origins of DevOps, its underlying philosophy and its practical applications, we can see how it has evolved to become a mainstay of modern IT. DevOps is much more than just a set of tools; it's a fundamental shift in the way we think, work and succeed in a world increasingly focused on speed and efficiency.
Sources and useful articles
Damyr, who own the podcast "Dans La Tech", wrote some articles about DevOps:
Podcast "Dans La Tech" :