Informations techniques / DevOps

DevOps : L'esprit collaboratif au service de déploiements plus rapides et plus fiables

Qu’est-ce que le DevOps ?

Le terme « DevOps » désigne une philosophie et une approche logicielle axées sur la collaboration, notamment pour les phases de test, de packaging et de déploiement. Les pratiques DevOps répondent d'abord à un objectif : effectuer des déploiements plus fréquents et plus fiables. Tout indique qu’un cadre DevOps robuste accroît non seulement la vélocité et la stabilité des déploiements logiciels, mais réduit également les délais de mise à jour et de restauration. Ce n'est pas tout. À l'heure où le cloud et les applications constituent l’épine dorsale de certaines entreprises, le DevOps booste la réactivité des équipes IT et, partant, la satisfaction des clients. Aujourd'hui, les entreprises sont de plus en plus nombreuses à s'équiper des outils et méthodes nécessaires pour instaurer un esprit plus dynamique et plus collaboratif au sein de leurs équipes.

Au commencement étaient la pensée lean et le développement agile. Héritier direct de cette généalogie, le DevOps en étend et en approfondit les principes pour garantir des déploiements plus fréquents et de meilleure qualité. Traditionnellement, l'approche agile se concentre autour de l'ingénieur logiciel et met l'accent sur des développements rapides et incrémentiels. À l’ère du cloud et de la consommation des logiciels en SaaS (et non plus sur site), le « lancement » en tant que tel correspond à la mise en production. Dans ce nouveau contexte, les entreprises ont besoin de déployer de nouvelles fonctionnalités de manière rapide, incrémentielle et continue. Désormais, les méthodologies agiles prennent aussi en considération la rapidité et la qualité des opérations à toutes les étapes, du développement du code jusqu'au déploiement et au suivi continu en production, en passant par les étapes de test, de provisionnement et de configuration. Aujourd'hui, le constat est sans appel. Pour accélérer la vitesse des lancements, développeurs (Dev) et opérations IT (Ops) doivent travailler main dans la main.

Le mouvement DevOps reconnaît et répond à ce besoin. En jouant sur les trois leviers que sont la collaboration, la communication et le partage des responsabilités, l'approche DevOps fluidifie le déroulement des opérations. Surtout, elle prévient la plupart des tensions et retards habituellement liés aux passations entre le développement produit (développeurs et QA) et les opérations IT.




Contexte historique

Commençons par souligner un point essentiel. Le DevOps se situe aux antipodes des méthodes de déploiement traditionnelles. Dans la plupart des entreprises, développeurs et opérations IT évoluent en vase clos, ce qui ralentit considérablement le cycle de déploiement logiciel. Bien souvent, les équipes de développement sont contraintes de passer par les opérations IT pour provisionner et configurer des infrastructures. Impossible donc de déployer des environnements standardisés et reproductibles de manière simple et autonome. Conséquence : les développeurs finissent par développer leur portion de code dans des environnements privés et optimisés, en rupture complète avec la réalité des environnements de production. Après réception de diverses briques logicielles (développées et testées par divers développeurs dans des environnements hétérogènes), les opérations IT constituent une application rassemblant les caractéristiques souhaitées par l’entreprise, notamment en termes de disponibilité, de scalabilité et de sécurité.

En règle générale, il s’agit là d’un processus manuel, particulièrement lent, complexe et propice aux erreurs. Pour compliquer un peu plus la donne, les opérations IT doivent l'accomplir sans le soutien des développeurs. Par ailleurs, les problèmes rencontrés à l'étape de déploiement sont souvent source de tensions et de méfiance entre les équipes. Pour ne rien arranger, l'adoption croissante du déploiement continu ne fait qu'exacerber ce phénomène. D'un côté, les développeurs doivent livrer des fonctionnalités innovantes rapidement. De l'autre, les opérations IT doivent garantir une stabilité irréprochable. Or, sans une approche automatisée, la seule solution viable est d’introduire les changements au compte-goutte.


Les piliers du DevOps

Si l'approche DevOps n’impose aucune norme dans sa pratique, on peut néanmoins identifier plusieurs traits fondamentaux. Citons notamment son impact sur la culture, les processus et les outils de l'entreprise.

Culture
Les entreprises qui ont bâti un cadre DevOps solide valorisent le succès collectif, la collaboration et le partage des responsabilités. Les développeurs et opérationnels IT sont responsables ensemble du succès d'un déploiement. Pour créer cette cohésion, les entreprises ont parfois recours à des changements organisationnels. Par exemple, elles abandonnent les silos fonctionnels, où les effectifs sont « greffés » sur différents projets, au profit d’un regroupement physique des développeurs et opérationnels, qui travaillent ensemble à la création et à l'exécution de services.
Dans un esprit constant de solidarité, le DevOps encourage les développeurs et opérationnels IT à approfondir leur compréhension de l'autre et de ses besoins, avec à la clé une collaboration plus efficace. Ainsi, lorsqu'un développeur cerne les contraintes d'un environnement de production, notamment les éventuels points de défaillance, il est plus à même de les intégrer à la conception du code. De leur côté, les opérations IT pourront optimiser les configurations de déploiement grâce à une meilleure compréhension de la conception et des fins visées par telle ou telle application.
En fédérant les développeurs et les opérations IT autour d'objectifs communs, une stratégie DevOps élimine en amont les sources potentielles de tensions, notamment les objectifs conflictuels et contradictoires (développeurs incités à lancer de nouvelles fonctionnalités à marche forcée vs. opérations IT encouragées à faire le moins de changements possible sur les environnements de production.)

Processus
Dans la pratique, le développement d’une culture DevOps nécessite l’établissement de processus communs. L'objectif ? Faire naître entre les développeurs et les opérations IT un canal de communication et de partage d’expertise, ainsi qu’une ossature de collaboration bien définie. Cette approche accélère et structure le cycle de déploiement, de même que la restauration de l’application en cas d'incident. Par exemple, une telle structure pourra désigner les développeurs comme responsables du provisionnement des capacités via des API, mais confier l'implémentation et le support de ces API aux opérations IT. Il pourra aussi établir un contrat/accord selon lequel les API ne feront aucune distinction entre les environnements de développement, de tests ou de production, éliminant ainsi les soucis de parité des environnements, source importante de retards et problèmes.
Autre exemple : l’utilisation d’un référentiel centralisé des dépendances logicielles, maintenu à jour via des scripts développés conjointement. Avec le temps, ces processus collaboratifs favorisent l’enrichissement des connaissances, le développement itératif et le déploiement plus fréquent de modifications incrémentielles, le tout de façon reproductible et pour un risque minime d’interruption de service.

Automatisation et outils partagés
Pour améliorer la fiabilité et la rapidité de leurs déploiements, les entreprises doivent abandonner leurs processus manuels au profit de processus automatisés, cohérents, reproductibles et rationalisés. Pour les entreprises qui s'y refusent, les sources de ralentissement viennent de tous les côtés : provisionnement de capacités, disparité des environnements de développement et production, complexité des compilations/tests, etc.
Le DevOps capitalise sur la mutualisation des outils pour codifier et rationaliser les processus collaboratifs, et ainsi fédérer les développeurs et opérationnels IT autour d'une vision commune du déploiement logiciel. Ces pratiques favorisent la cohérence et l’automatisation, qui elle-même aide les équipes DevOps à accélérer leurs déploiements tout en limitant le temps passé à la résolution des problèmes en production, notamment lors des déploiements ou des reprises d'activité. Aujourd’hui, de nombreux fournisseurs proposent des solutions d'intégration continue ou d'automatisation et de configuration des infrastructures. Toutefois, l’intégration transparente de ces solutions spécialisées entraîne une hausse des coûts et de la complexité, sans retour sur investissement substantiel.




Les avantages du DevOps

Accélération des délais de lancement
Dans un monde gouverné par les applications, les entreprises qui prennent l'avantage sont celles capables de développer et lancer de nouvelles moutures rapidement, mais aussi d'intégrer en continu le feedback des utilisateurs. Les nouvelles applications d'entreprise reposent sur des composants distribués aux interdépendances complexes. Une stratégie DevOps mature permet d’éviter les retards et erreurs de communication, mais aussi d'associer l'expertise des développeurs et opérationnels IT pour assurer la fluidité des déploiements logiciels. Selon le rapport « 2016 State of DevOps Report », les entreprises converties au DevOps affichent en moyenne des déploiements 200 fois plus fréquents et des délais de production 2 555 fois plus courts (délais entre l’intention de déployer du code et sa mise effective en production). D’autres études arrivent aux mêmes conclusions, à l’image du graphique Gartner ci-dessous qui fait état d’autres avantages de l’approche DevOps.

Risques réduits et déploiements plus fluides
Orchestrer et gérer le cycle de vie complet des applications n'a rien d'une formalité. Du développement aux mises à jour, en passant par le déploiement, les montées en charge et le maintien de la disponibilité, les risques d'erreur sont présents sur tous les fronts. En jouant la carte du DevOps, et donc d'une culture collaborative et de processus automatisés (packaging, déploiements, suivi, gestion...), les équipes effectuent des déploiements et mises à jour plus rapides et plus cohérents. Dans une démarche d'amélioration continue, les équipes DevOps identifient et éliminent la plupart des sources de problèmes pour définir un processus de lancement robuste, rationalisé, reproductible et mature, garant de déploiements logiciels parfaitement fluides.

Délais de reprise accélérés
En cas de défaillance ou d'interruption imputable au code, la mise en place d'un cadre DevOps facilite le diagnostic et accélère le rétablissement des activités. Grâce aux nombreuses fonctionnalités d’automatisation et de suivi qui sous-tendent la plupart des processus de lancement et de gestion, l’équipe DevOps peut rapidement déterminer l’origine du dysfonctionnement, et ainsi effectuer des retours arrière ou émettre les correctifs appropriés. Toujours d'après le rapport « 2016 State of DevOps Report », les entreprises disposant d'un cadre d'intervention rapide et structuré diviseraient par 24 leur temps moyen de reprise, et par trois leur taux d'échec des modifications.

Hausse de la satisfaction client et de l'adéquation au marché
Pour rester au plus proche des attentes des clients, il est capital de pouvoir déployer des correctifs et fonctionnalités de manière fiable et rapide. Au-delà d'une hausse de la satisfaction, cette approche raccourcit la boucle de feedback et favorise l'émergence de fonctionnalités réellement plébiscitées par les clients. Le DevOps garantit des déploiements continus et des cycles courts. Autrement dit, sans collaboration étroite et continue entre les développeurs et les opérations IT, il est impossible de développer, tester et déployer de nouvelles fonctionnalités distribuées de manière rapide et cohérente.





Approche DevOps vs. Approches traditionnelles

Le DevOps introduit un nouvel état d’esprit et de nouveaux processus au sein de l'entreprise logicielle. Le tableau ci-dessous récapitule les principales différences qui séparent les équipes traditionnelles des équipes DevOps.

Pratiques DevOps
Approches traditionnelles
Approche collaborative. Une bonne stratégie DevOps repose sur une collaboration étroite, continue et efficace des développeurs et opérationnels IT, passage obligé vers des développements et déploiements rapides et fiables. Approche en silos. Les approches traditionnelles érigent « un mur » entre les développeurs et les opérationnels IT. Conséquence : ces derniers déploient et gèrent les logiciels en production sans réel soutien des développeurs.
Processus structurés et largement automatisés. Les pratiques DevOps s’appuient sur l’automatisation pour provisionner et configurer des environnements de façon rapide, cohérente et reproductible. L'objectif : assurer que ce qui marche dans un environnement de développement fonctionne à coup sûr en production. Les approches structurées accélèrent également les délais de reprise d’activité puisque des processus automatisés et reproductibles simplifient les retours arrière et restaurations. Processus hétérogènes et principalement manuels. Dans une approche traditionnelle, le provisionnement et la configuration des infrastructures reposent sur une combinaison ad hoc de scripts et processus manuels (avec des configurations hétérogènes d'un serveur à l'autre). Dans ces conditions, difficile d’agir rapidement et efficacement, ou même de reproduire des processus de manière fiable. Généralement, ces approches engendrent une série de problèmes car elles sont incapables d'assurer le provisionnement et la configuration rapides et homogènes d'environnements de dév./production.
Self-service. Les entreprises DevOps établissent des structures de collaboration et d’automatisation pour permettre aux développeurs et opérations IT d’agir en toute indépendance, sans se gêner les uns les autres. Ainsi, les développeurs peuvent rapidement provisionner des environnements de test/développement, sans attendre l'intervention manuelle des opérations IT. Recours fréquent aux tickets. Dans une approche traditionnelle, les opérations IT doivent consacrer des ressources importantes à la gestion des tickets. Elles doivent également composer avec des tâches répétitives, manuelles et complexes pour le provisionnement et la configuration des environnements. Autant de tâches qui pourraient facilement être automatisées. En clair, ces approches génèrent de la complexité et des retards à toutes les étapes du cycle de déploiement et de gestion (provisionnement, déploiement, montées en charge, etc.).
Priorité aux métiers. Les équipes DevOps unissent leurs forces pour assurer la réussite de l’entreprise. Elles portent donc ensemble la responsabilité des déploiements. Corporatismes. Les approches traditionnelles exigent des équipes de développement et opérations IT qu’elles se concentrent sur leur propre fonction, sans s'investir réellement dans la réussite globale du projet. Ainsi, en cas de problème ou d’échec, les différentes équipes se renvoient la balle, avec à la clé des tensions exacerbées.
Ouverture au changement. Au cœur du DevOps, on retrouve le triptyque « automatisation, reproductibilité et rapidité ». Par essence, le DevOps accélère la réactivité des équipes et les reprises en cas de panne. La vitesse fait partie intégrante de son cahier des charges. Résistance au changement. De peur de causer des défaillances sans pouvoir les restaurer rapidement, les approches traditionnelles tentent d’éviter toute modification des déploiements en production. De façon indirecte, elles brident et ralentissent les entreprises.


Le DevOps vous intéresse ? Voici les points à retenir.

L'approche DevOps améliore le cycle de déploiement logiciel en agissant sur les trois leviers que sont la culture, les processus et les outils. Bien souvent, se lancer dans un tel chantier n'a rien d'évident. Nous avons rassemblé un ensemble de bonnes pratiques pour nourrir votre réflexion et vous aider à planifier votre transition.

Votre entreprise a des contraintes qui lui sont propres. Et vos pratiques DevOps doivent le refléter ! Vous devez donc tenir compte de votre structure organisationnelle, des motivations de vos équipes, de votre cycle de vie logiciel actuel, des freins potentiels et de vos possibilités d'automatisation.


Informez-vous sur les sujets importants

Inscription à la newsletter

L'automatisation et le renouvellement des processus. « L’automatisation est indispensable pour déployer des services de nouvelle génération. » [Source : Synthèse Forrester, Good DevOps Requires Collaboration, Automation, And Cultural Change, juin 2016]. Pour exploiter tout le potentiel du DevOps, les entreprises doivent miser sur l'automatisation, ce qui implique souvent une remise à plat de leur approche existante. En formant leurs équipes au travail collaboratif, en établissant de nouveaux processus et en adoptant de nouveaux outils, les entreprises récolteront tous les fruits de leurs efforts.

D’après le rapport Forrester mentionné plus haut, 82 % des professionnels I&O interrogés affirment déployer des solutions d’automatisation dans au moins un de ces domaines : gestion des lancements, gestion des configurations et gestion des changements.

Team building et culture collaborative. Pour instaurer le climat de confiance mutuelle propice au travail collaboratif, vous devez fédérer vos développeurs et opérationnels IT autour de motivations et d'objectifs communs. Si elles portent ensemble la responsabilité d'un projet, vos équipes collaboreront plus efficacement que si elles exerçaient un rôle purement fonctionnel (maintien de la stabilité, déploiement rapide de fonctionnalités...) sur divers projets dont elles ne peuvent s’approprier la réussite. Du reste, les outils nécessaires à l'implémentation d'un cadre DevOps sont certes faciles à acquérir. Mais à eux seuls, ils ne peuvent garantir le succès de sa mise en œuvre. La solution ? Utiliser ces outils dans le cadre d'une culture collaborative axée sur le partage des responsabilités.

Vos dynamiques organisationnelles peuvent devenir un obstacle. Inévitablement, la mise en place de nouveaux outils et processus bousculera vos processus et objectifs existants, notamment sur le terrain de la conformité, de la sécurité et des audits. Ici, il est essentiel que chaque collaborateur s'engage au service d'une vision plus large. Si tous tirent dans des directions contraires, même un cadre DevOps ultra rationalisé ne peut produire les résultats escomptés. Pour ajuster ces dynamiques organisationnelles complexes, les responsables doivent impliquer la direction et promouvoir un engagement multi-équipe. De fait, dans une enquête Gartner menée en 2015, la moitié des sondés citaient le facteur humain comme le principal problème lié à l'adoption du DevOps.

Coûts d’intégration et problèmes de complexité. Vu le nombre de fournisseurs sur le marché, vous n’aurez aucun mal à acquérir des solutions spécialisées pour chaque volet de votre future stratégie DevOps. Seulement voilà, l'intégration transparente de tous ces éléments coûte cher et accroît la complexité de vos environnements. Pour contourner ces obstacles et poser des bases solides, vous devez miser sur une approche unifiée, fondée sur les bonnes pratiques. Votre solution devra s’intégrer à votre plateforme applicative et être suffisamment flexible pour s'adapter aux besoins de votre entreprise, notamment en termes d'automatisation.

Pensez grand, commencez petit. Créer un cadre DevOps ne se fait pas du jour au lendemain. Autrement dit, rien ne sert de brûler les étapes. Vous devrez expérimenter et affiner votre approche jour après jour. Pour partir sur de bonnes bases sans compromettre la stabilité de votre entreprise, commencez avec une application réelle qui ne soit ni trop ambitieuse, ni trop stratégique pour l’organisation.

Penchez-vous sur vos workloads existants. Le DevOps ne se destine pas uniquement aux nouveaux workloads. Alors que vos équipes envisagent de moderniser et migrer vos workloads existants vers le cloud, explorez une éventuelle intégration des principes et de l’automatisation DevOps dans leur cycle de vie. En effet, les workloads existants peuvent eux aussi bénéficier du DevOps en termes de fréquence des lancements et de fiabilité/stabilité des déploiements.

Le DevOps est un marathon, pas un sprint. La philosophie DevOps se veut résolument pratique. Une fois que vous avez constitué une équipe et un cadre solides, rappelez-vous qu’ils ne peuvent rester statiques. À mesure qu'évoluent vos workloads, vos contraintes et vos contextes d’exploitation, votre pratique doit se développer et s'adapter en conséquence pour toujours servir sa véritable mission : assurer des déploiements logiciels rapides et fiables.