Beaucoup de choses peuvent se cacher derrière un mot, et DevOps en fait partie. Que veut dire ce mot, qu'implique-t-il ? Je vais vous partager mon ressenti et mon expérience quant au DevOps...

Dans le monde de l'informatique, un terme a pris de l'ampleur au fil des années et a révolutionné la façon dont les entreprises développent, déploient et gèrent des logiciels. Il s'agit du "DevOps".

Une rapide introduction au DevOps

Le DevOps, une contraction de "Development" (Développement) et "Operations" (Exploitation), représente bien plus qu'une simple tendance ou une collection d'outils informatiques. C'est une philosophie, une approche qui a changé la manière dont les équipes de développement et d'exploitation collaborent. Cette approche est devenue de plus en plus populaire ces dernières années, car elle permet aux entreprises de redéfinir des méthodes de travail plus efficaces et parfois plus rapides.

Le site web de Stéphane ROBERT vous donnera un complément d'information et beaucoup d'exemples pratiques.

L'instant histoire

Les origines du DevOps remontent aux environs de 2010. Dès cette époque, quelques braves développeurs et autres ops étaient déjà en train de se poser des questions sur leur méthodologie, leurs capacités à développer et déployer du code, le silotage des équipes... Au départ, ce n'était qu'une idée, qui a germé en groupe de travail, puis en conférence locale, pour finalement devenir ce que c'est aujourd'hui : un must-have.

Deux noms importants ressortent : Patrick Debois et John Allspaw. En 2009, Patrick Debois a organisé la première conférence "DevOpsDays" à Gand, en Belgique, réunissant des experts en développement et en exploitation pour discuter des défis et des opportunités de la collaboration entre ces deux domaines.

John Allspaw, alors chez Flickr, a également joué un rôle crucial en partageant les succès de l'entreprise en matière de collaboration entre les équipes de développement et d'exploitation. Ses présentations ont mis en évidence la valeur de la communication et de la compréhension mutuelle pour améliorer la fiabilité des services en ligne.

L'ascension fulgurante

Au fil des années, le DevOps est devenu une philosophie de plus en plus acceptée en général. De nombreuses organisations ont vu les avantages d'une approche plus collaborative et automatisée du développement logiciel et de l'exploitation informatique. Les outils DevOps ont été développés pour faciliter l'automatisation des processus, le déploiement continu et plus récemment la gestion de l'infrastructure en tant que code (IaC).

Venons-en aux faits, c'est quoi le DevOps ?

Au cœur du DevOps se trouvent plusieurs principes fondamentaux qui guident sa mise en œuvre. L'un des piliers est l'automatisation. Les processus manuels sont remplacés par des scripts et des outils qui automatisent des tâches ou des actions, ce qui accélère le déploiement, réduit les erreurs humaines et permet une gestion plus efficace des systèmes.

Un autre principe clé est la collaboration. Les équipes de développement et d'exploitation travaillent en étroite collaboration, partagent des connaissances et des responsabilités, et communiquent de manière transparente et quasi directe. Cette approche élimine les silos organisationnels et améliore la compréhension mutuelle des enjeux.

La culture du DevOps repose sur l'amélioration continue. Les équipes s'efforcent constamment d'optimiser les processus, de recueillir des commentaires et d'ajuster en conséquence. La rétroaction rapide et la capacité à s'adapter sont essentielles.

Comment mettre en application le DevOps ?

Le DevOps ne se limite pas à des concepts théoriques. En plus des changements dans l'organisation de l'équipe et des projets, des outils et un état d'esprit doit être commun et partagé, en plus d'être accepté.

L'intégration continue (CI) implique des builds automatiques, des tests et des vérifications de code à chaque modification, garantissant une qualité constante du logiciel. On peut parler des outils comme GitLab-CI, Jenkins, Travis CI, Circle CI, Drone...

La livraison continue (CD) étend cette idée en automatisant le déploiement des logiciels en production. Les mises à jour peuvent être effectuées en douceur, avec un retour arrière possible. Naturellement, il convient de bien définir le périmètre de déploiement avant de l'initier en production. Les outils de CI sont souvent les mêmes utilisés pour la CD.

L'infrastructure en tant que code (IaC) est une autre facette importante du DevOps. Elle permet de gérer l'infrastructure de manière programmable et parfois immuable, facilitant la mise en place, la mise à jour et la surveillance des systèmes. Aujourd'hui, l'outil le plus prisé sur le marché est Terraform et sa solution libre OpenTofu.

Si j'utilise Git et Kubernetes, suis-je un/une DevOps ?

NON

Il y a de l'idée, ce sont des outils fréquemment affiliés au DevOps, mais ils font partie d'un ensemble. Avoir son code dans un dépôt git est une bonne idée, permettant de versionner ses fichiers, retracer l'histoire du dossier et travailler efficacement en équipe. Kubernetes est un outil pour orchestrer des conteneurs, donner un semblant d'intelligence à une infrastructure composée de micro-services. Il manque donc bien d'autres concepts autour de ces deux outils pour parler de DevOps.

Si j'automatise ce que je fais, suis-je donc un/une DevOps ?

NON

Ce n'est pas une action ou une décision qui fait de vous un/une DevOps. C'est un ensemble, de la théorie, à l'équipe de travail, au management et procédures et enfin aux outils mis en œuvre.

Le DevOps au-delà de l'informatique

Une caractéristique intrigante du DevOps est sa capacité à s'étendre bien au-delà du domaine de l'informatique. Les principes de collaboration, d'automatisation et d'amélioration continue trouvent des applications dans de nombreux autres domaines.

Par exemple, le DevOps peut être adapté au marketing en ligne pour améliorer la gestion de campagnes (SEO...), ou encore à la gestion de projet pour une exécution plus fluide et une prise de décision éclairée.

Pour rappel, les avantages potentiels de l'application du DevOps dans ces domaines sont nombreux, notamment l'efficacité accrue, la réduction des erreurs et la possibilité à s'adapter rapidement aux changements du marché.

Mon expérience dans le DevOps

J'ai longtemps automatisé le plus possible les actions que je juge intellectuellement inutiles. Vous savez, ce genre d'action qui n'a aucun sens, qui fait perdre du temps et n'a aucune plus-value sur votre travail, votre métier, votre âme... Par exemple, installer un système d'exploitation après l'avoir fait des dizaines de fois manuellement, ou encore supprimer des fichiers temporaires, vérifier qu'un service est bien démarré et accessible...

Automatisation de machines Windows

Mes premières actions automatisées remontent à 2014. Dans une PME bretonne, nous devions déployer des PC pour des clients. Les PC étaient standardisés (matériel, système d'exploitation et outils identiques) et tous fait à la main. Adorant le côté matériel, j'aimais répéter ces tâches de montage et d'installation, mais la course à la rentabilité nous rappelle toujours à l'ordre. Ainsi, plutôt que de passer du temps à regarder défiler une barre de chargement, le temps a été mis à profit pour découvrir et mettre en place une station de déploiement de Windows. Après un investissement humain, nous avions divisé par deux le temps passé à préparer un PC complètement, en plus d'augmenter notre capacité de montage.

  • temps passé à la main (montage PC + installation OS + middlewares + mises à jour) : environ 3 heures par machine (même en parallélisant les tâches entre plusieurs machines), tout à la main avec un regard constant pour surveiller et avancer ;
  • temps passé avec automatisation (montage PC + lancement du déploiement OS + mises à jour lancées automatiquement post-installation) : une heure par machine, avec le minimum d'action manuelle.

Dans cette expérience, nous avons revu l'intégralité du process, documenté l'ensemble, changé nos outils et notre façon de travailler. Au-delà de l'investissement financier et de l'engagement humain, nous avons tous travaillé ensemble pour dynamiser l'équipe et notre capacité à répondre à la demande. A force d'utiliser le système, nous avons continué d'automatiser des tâches (installation silencieuses d'applications selon le besoin client, configurations spécifiques au contexte client...), ce qui nous a permis d'aller plus loin et de nous poser les questions pour reprendre cette méthodologie pour la partie serveur.

Automatisation du déploiement d'apps dans un cluster Kubernetes

En 2020, au sein de l'équipe d'ops en pleine mutation, nous avons été confrontés à une situation de croissance rapide de l'entreprise, avec des besoins opérationnels en constante augmentation. Nos applications vieillissantes n'étaient pas adaptées à l'environnement informatique contemporain axé sur les microservices.

Grâce à l'expertise et aux compétences de chaque membre de l'équipe, nous avons adopté une méthodologie DevOps, intégrant le déploiement continu, une approche agile pour la gestion des produits et des projets, l'automatisation de l'infrastructure et de la configuration des middlewares. Tous les acteurs, qu'ils soient techniques ou managériaux, ont collaboré de manière proactive pour atteindre un objectif commun : l'amélioration des process de développement et de déploiement des applications, réduisant considérablement les délais de mise en production et minimisant les tâches manuelles des opérateurs.

Je me souviens des jours où nous devions télécharger les sources des développeurs, créer l'image Docker localement, puis la transférer manuellement vers un dépôt d'images distant, pour finalement récupérer cette image sur l'hôte Docker de production et recréer un conteneur. Les étapes fastidieuses de commit, de tagging dans GitLab, de transfert via rsync et bien d'autres actions nous prenaient plus de 2 heures, y compris les tests. Après une refonte complète de notre chaîne de déploiement, nous avons réussi à réduire ce délai à seulement 20 minutes pour taguer, déployer, tester et mettre la nouvelle version de l'application en production.

En outre, nous avons automatisé une partie de notre environnement de pré-production, notamment le déploiement des applications en fonction des commits et des résultats de la phase de QA, ainsi que l'automatisation de la gestion de l'infrastructure et de la sécurité des systèmes d'exploitation. Cette transition vers l'automatisation a considérablement amélioré notre efficacité opérationnelle.

N'éxagérez pas l'adoption du DevOps

Bien que la méthodologie DevOps ait prouvé son efficacité, il est essentiel de reconnaître que son application ne convient pas à toutes les situations. Forcer un changement radical au sein de vos équipes ou projets peut être contre-productif. Il est préférable d'adopter une approche progressive.

Tout ne peut pas être automatisé de manière fiable et idempotente du jour au lendemain. Au lieu de cela, commencez par des petits pas. Créez des exemples de rôles Ansible ou configurez quelques machines virtuelles avec Terraform, en stockant les fichiers de configuration dans un dépôt Git. Autour de ces fichiers, documentez le processus, élaborez des schémas d'infrastructure et préparez des présentations sur le concept d'automatisation et de chaîne de déploiement. Montrez à vos collègues qu'il est possible de changer progressivement la manière de penser et de travailler.

L'objectif est d'éviter de perturber inutilement les flux de travail existants et de permettre aux équipes de s'adapter progressivement à la méthodologie DevOps. Cela favorise une transition plus fluide et plus réussie.

Conclusion

Le DevOps n'est pas seulement un buzzword de l'industrie informatique. C'est une philosophie puissante et une méthodologie éprouvée qui transcende les frontières de la technologie. Le DevOps repose sur des principes de collaboration, d'automatisation et d'amélioration continue qui ont le pouvoir de transformer la façon dont nous travaillons et développons des produits.

En explorant les origines du DevOps, sa philosophie sous-jacente et ses applications pratiques, nous pouvons voir comment il a évolué pour devenir un pilier de l'informatique moderne. Le DevOps est bien plus qu'un simple ensemble d'outils ; c'est un changement fondamental de la manière dont nous pensons, travaillons et réussissons dans un monde de plus en plus axé sur la rapidité et l'efficacité.

Sources et articles intéressants

A Brief History of DevOps
Qu’est-ce que le DevOps ? Recherche et solutions | Google Cloud | Google Cloud
Bonnes pratiques, recherches et outils DevOps vous permettant de gagner en agilité sans aucune incidence sur la qualité ou la stabilité.

Damyr, qui diffuse le podcast "Dans La Tech", a saisi des articles quant au DevOps, bien que ça remonte à 2019 :

DevOps ou pas DevOps telle est la question
Le DevOps en 2019 où en est-on ?

Bonus

Mettre DevOps dans un CV, une lettre de motivation ou dans un article, ça fait classe et trop in !

Une page vraiment intéressante - Le DevOps pour transformer les institutions :

Le DevOps pour transformer les institutions

Podcast "Dans La Tech" :

Partager l'article