Utiliser la livraison continue pour accélérer la mise en production, avec des coûts inférieurs et des risques réduits

Effectué

La livraison continue est l’une des huit fonctionnalités de la taxonomie DevOps.

Découvrir pourquoi la livraison continue est nécessaire

En 2012, une erreur de déploiement de logiciel a entraîné une perte de 460 millions de dollars US pour Knight Capital Group, le plus important trader d’actions américaines de l’époque.

Les pertes commencèrent dès l’ouverture du marché. Le code ne comportait aucun bogue : le problème était dû à une erreur commise pendant un déploiement manuel sur un seul de ses huit serveurs de production.

Les diverses tentatives de correction de l’erreur de configuration ont fini par la propager à l’ensemble des huit serveurs, ce qui a alors encore aggravé les pertes financières. Étant donné que tout le déploiement était manuel, les équipes du trader n’avaient aucun moyen de revenir automatiquement sur les modifications apportées.

Après 45 minutes d’efforts pour résoudre le problème, tout le système s’est arrêté. À ce moment-là, le trader avait déjà perdu 460 millions de dollars US.

Cette histoire est vraie. Quel serait l’impact dans votre organisation ? Pratiquez-vous le déploiement manuel ?

La question la plus importante à poser pour mieux comprendre les performances en matière de livraison dans une organisation est la suivante :

Important

Quel est le degré de difficulté que vous éprouvez lors d’un déploiement en production ?

La peur et l’anxiété que les ingénieurs et le personnel technique éprouvent quand ils envoient (push) du code en production peuvent nous en faire dire beaucoup sur les performances en matière de livraison de logiciels d’une équipe.

Qu’est-ce que la livraison continue ?

Important

La livraison continue est une approche du génie logiciel dans laquelle les équipes produisent des logiciels pendant des cycles courts, afin de garantir :

  • Des logiciels mis en production de manière fiable à tout moment
  • Des logiciels mis en production manuellement

Les objectifs de la livraison continue sont les suivants :

  • Générer, tester et mettre en production des logiciels plus rapidement et plus souvent
  • Réduire le coût, le temps et les risques liés à la livraison des modifications en autorisant plus de mises à jour incrémentielles des applications en production

La livraison continue est effective dans les situations suivantes :

  • Le logiciel peut être déployé tout au long de son cycle de vie.
  • Une intégration continue et une automatisation poussée sont disponibles dans toutes les parties possibles du processus de livraison, généralement à l’aide d’un pipeline de déploiement.
  • Il est possible d’effectuer des déploiements rapides de n’importe quelle version du logiciel sur n’importe quel environnement à la demande.

Diagram shows the difference between continuous delivery and continuous deployment. The stages are the same in both cases: code done - unit tests - integrate - acceptance test - deploy to production. For continuous delivery, deployment to production happens manually. For continuous deployment, it's automatic.

Les déploiements manuels de grande envergure créent un niveau de risque élevé car ils augmentent considérablement la complexité du logiciel en cours de mise en production, en introduisant la probabilité d’une erreur humaine et en compliquant l’identification et la résolution des échecs de déploiement. La fréquence de déploiement est faible, le délai est élevé pour les modifications, le temps moyen avant récupération est long et le taux d’échec de modification est élevé.

L’équipe des opérations désignée effectue le déploiement manuel en dehors des heures de bureau. Elle a besoin d’un document qui stipule les étapes manuelles et de temps pour tester manuellement les étapes décrites. Les déploiements de grande envergure nécessitent aussi plus de temps pour s’exécuter, ils sont plus difficiles à restaurer en cas d’échec et ils impliquent une étendue de test plus large après le déploiement. Le nombre de modifications par déploiement est plus important et l’implémentation des commentaires prend plus de temps.

En automatisant le processus et en autorisant la mise en production à tout moment, les avantages de la livraison continue sont significatifs et nombreux :

Diagram shows the circle of Continuous Delivery. The cycle goes from planning and tracking to development, building and testing, deployment, operation, monitoring and learning, and back to planning.

Selon le livre blanc « 2019 State of DevOps Report », les organisations DevOps très performantes, comparées aux organisations peu performantes, présentent les caractéristiques suivantes :

  • Elles effectuent des déploiements plus de 200 fois plus souvent.
  • Leur délai de modification est plus de 100 fois plus rapide.
  • Leur temps moyen avant récupération est plus de 2 600 fois plus rapide.
  • Leur taux d’échec de modification est sept fois moins élevé.

De plus, d’après une étude mondiale réalisée par CA Technologies, les organisations obtiennent une amélioration du délai de commercialisation et une augmentation de chiffre d’affaires pouvant aller jusqu’à 20 %.

Diagram shows the advantages of high-performing DevOps organizations using Continuous Delivery over low performers.

Remarque

La livraison continue est parfois confondue avec le déploiement continu. Le déploiement continu signifie que chaque modification passe par le pipeline et arrive automatiquement en production, ce qui entraîne un grand nombre de déploiements en production chaque jour. La livraison continue signifie simplement que vous pouvez effectuer des déploiements fréquents, mais aussi choisir de ne pas le faire, en général parce que l’entreprise préfère un rythme de déploiement plus lent. Vous devez pratiquer la livraison continue pour pouvoir pratiquer le déploiement continu.

L’intégration continue est une condition préalable à la livraison continue. Les pratiques en place permettent de générer et déployer (de manière fiable) l’application à tout moment, avec un niveau de qualité élevé, à partir du contrôle de code source.

Diagram shows the relationship between Continuous Integration, Continuous Delivery and Continuous Integration