DevOps

DevOps est un processus de développement, de livraison et d’exploitation logicielle. Il existe de nombreuses définitions de DevOps dans des ouvrages et sur Internet qui sont imprécises et parfois déroutantes.
Une autre variante trompeuse, est de se limiter à voir DevOps comme une intersection du travail et des personnes dans une organisation informatique, entre les développeurs de logiciels, les testeurs de logiciels et les personnes responsables de la production.

La meilleure approche pour le définir, est de voir DevOps comme du développement itératif de logiciel en mode Agile avec des cadres d’amélioration continue des processus tels que Scrum, Lean, ITIL, …
Pour autant, il ne faut pas considérer que DevOps est un sur-ensemble amélioré et combiné de ces méthodologies et techniques.
La façon simple de s’en convaincre est qu’aucune de ces méthodologies et cadres, hormis Agile et Scrum, n’ont été introduits pour résoudre spécifiquement les problèmes de l’industrie du logiciel.
De nombreuses pratiques et principes DevOps ont été dérivés des sept principes du mouvement Lean après avoir été adaptés, expérimentés, validés et affinés pour le développement, la livraison et l’exploitation de logiciels.

DevOps a emprunté et adapté de nombreuses techniques et philosophies du mouvement « Continuous Delivery », du « Toyota Improvement Kata », de la Théorie des Contraintes, du Manifeste Agile et de l’Infratructure Agile. Il ne faut jamais oublier qu’il s’agit d’apprendre, d’expérimenter et de s’adapter continuellement.

Les principaux rôles que l’on peut trouver dans une organisation DevOps sont :

  • DevOps Generalist
    Sa principale fonction est d’assurer la mise en place en douceur, le progrès efficace et sain et l’amélioration continue des pratiques DevOps dans une organisation et dans ses équipes.
  • DevOps Executive
    Il est responsable du succès de l’utilisation et de l’application du savoir-faire DevOps au sein de l’organisation.
  • DevOps Project Manager
    Il est responsable de l’atteinte des objectifs déclarés pour le projet.
  • DevOps Product Owner
    C’est un rôle unique et transverse qui combine tous les aspects du chef de projet traditionnel et du chef de produit.
  • DevOps Architect
    Il est le propriétaire de l’architecture, de la conception et du développement des outils et processus de déploiement de produit.
  • DevOps Developer
    Il transforme les objectifs business des clients en solutions logicielles.
  • DevOps Operations Engineer
    Il est responsable de déployer, maintenir à l’état de l’art et surveiller les logiciels et les infrastructures.
  • DevOps Quality Assurance Engineer
    Il joue un rôle proactif pour trouver les types de tests souhaités pour valider la qualité du produit.
  • DevOps Information Security Engineer
    Il conçoit la stratégie de sécurité de l’organisation tout en présentant les détails d’un plan de mise en œuvre.
  • DevOps Release Manager
    Il travaille pour la gestion et la coordination du produit depuis le développement jusqu’à la production.
  • DevOps Trainer
    Il est un supporter avisé de DevOps et assure une acquisition correcte des pratiques DevOps au sein de l’organisation.
  • DevOps Coach
    Comme le DevOps Trainer, le coach DevOps est également un supporter avisé de DevOps pour assurer la compréhension, la pénétration et la bonne adoption des Pratiques DevOps au sein de l’organisation.

L’automatisation des tests est l’élément clé pour livrer en toute sécurité et rapidement. Sans automatisation des tests, une organisation DevOps a besoin de plus de temps et d’argent pour fournir des produits et services de qualité.

Pour la mise en production, DevOps utilise des déploiements fréquents, rapide et à faibles risques. Bien qu’ils ne soient pas tous applicables au NetDevOps, il existe certains exemples types de déploiements appelés « Blue-Green Deployment Pattern », « Canary Deployment Pattern » également appelé « The Dark Launch », « Cluster Immune System Release Pattern », « Feature Toggles » ou « Strangler Application Pattern ».

En DevOps, le traitement de la sécurité n’est pas oublié. Certaines techniques comme l’analyse statique, l’analyse dynamique, l’analyse des dépendances, la sécurité d’accès au code source, et l’intégration de la surveillance de la sécurité (télémétrie) dans les environnements sont intégrées dans les pratiques DevOps.

Chaque membre de l’équipe DevOps devrait trouver, réparer, partager et tirer un enseignement de ses erreurs dans son propre domaine de contrôle. La programmation à deux, l’évaluation par les pairs, les tests automatisés, l’inspection du code, les points de contrôle internes, les démonstrations très fréquentes devraient responsabiliser chacun en matière d’assurance qualité au lieu de donner la responsabilité de la qualité à un service dédié.

L’une des principales organisations DevOps, Netflix, a mis au point un logiciel interne (Chaos Monkey) pour simuler des événements catastrophiques dans leur Data Center. Chaos Monkey détruit, au hasard, des serveurs dans les systèmes de production, afin que l’équipe Netflix puisse améliorer leur capacité de résilience, de stabilité et de qualité de service sans interruption pour leurs clients. De chaque échec, ils apprennent de nouvelles leçons et les exploitent pour rendre leurs systèmes encore plus stables et résilients.

Sans aller jusque là, des organisations DevOps pratiquent des « Game Days ». Il ne s’agit pas de ces séminaires ennuyeux et sans intérêts durant lesquels les extravertis apprécient de se donner en spectacle et les introvertis jouent avec leurs téléphones portables pour passer le temps. Durant ces journées, des catastrophes sont simulées dans les systèmes de test et les équipes DevOps travaillent pour réparer et apprendre de ces échecs.

Ce n’est pas une nouvelle technique propre à DevOps que de bloquer du temps pour améliorer le travail. L’approche Lean adopte la devise depuis longtemps : « Améliorer le travail est plus important que le travail lui-même ». En d’autres termes, cela implique que sans améliorer la façon dont vous travaillez aujourd’hui, demain votre travail sera obsolète. C’est pourquoi la méthodologie DevOps a emprunté cette technique à la méthode de gestion de la production Lean pour faire que les équipes et les organisations apprennent continuellement.

En planifiant régulièrement des périodes dédiées à l’amélioration, on permet à tous de s’approprier l’innovation et la qualité. Tous les membres de l’équipe DevOps intègrent en permanence la sécurité, la qualité, l’apprentissage, la fiabilité et l’amélioration du travail quotidien qui sont finalement intégrés dans les produits logiciels et services que les organisations offrent à leurs clients. En s’aidant mutuellement dans les équipes DevOps, les organisations dépassent leurs concurrents et les membres de l’équipe développent leur potentiels humains et techniques.