software launch

Comment déployer un logiciel de manière flexible tout en gardant le contrôle

1 juillet 2021

BizDevOps

Quand un logiciel a passé la phase de test, le moment est venu de présenter les nouveautés aux utilisateurs dans le cadre de la mise en production. Cette phase de déploiement implique de lâcher prise, mais pas de renoncer à tout contrôle. En effet, il existe différentes stratégies pour garder un maximum d'emprise sur la mise en œuvre. En outre, il est judicieux de prévoir des fonctions d’observabilité pour pouvoir non seulement veiller au bon fonctionnement du logiciel, mais aussi à ce qu’il soit utilisé comme prévu. Découvrez comment tout cela s’imbrique.

Transition fluide de la conception à l’exécution

Dans nos blogs précédents, nous avons abordé le Continuous Delivery flow. Cette méthode englobe tous les éléments pour aboutir à la phase de production de manière itérative et sécurisée et dans des délais brefs. Au moment de la transition, la même équipe reste responsable des opérations. C’est un principe clé de l’attitude DevOps : you build it, you run it. La création et la maintenance d’un logiciel s’inscrivent dans une continuité où seules les règles du jeu changent.

L’organisation de la NASA peut illustrer ce point. L’agence spatiale américaine distingue les équipes launch control et mission control, la première étant responsable des opérations jusqu’au moment où le compte à rebours arrive à 0 et où les réacteurs de la fusée s’allument. Jusqu’à cet instant, tout peut être annulé – comme dans un pipeline Continuous Delivery, avec des points de contrôle intégrés et la possibilité d’interrompre la procédure si les exigences de base ne sont pas respectées. Mais une fois la fusée lancée, mission control prend le relais, car il n’est évidemment plus possible de rappeler la fusée en plein vol. Tous les paramètres sont étroitement surveillés et en cas de problème, mission control peut s’efforcer de limiter les dégâts. Là encore, c’est un peu comme la mise en production d’un logiciel : une fois qu’il est lancé et que les utilisateurs y ont accès, il n’est pas facile de revenir en arrière. Mais heureusement, à la différence du secteur aérospatial, il existe des stratégies qui permettent de garder un certain contrôle.

 

 

Stratégies de déploiement pour garder un maximum de contrôle

Si l’on part du principe qu’il est possible de distinguer le déploiement d’une nouvelle version et le déploiement de certaines fonctionnalités, c’est tout un monde de possibilités qui s’ouvre. De fait, il y a déploiement (« deploy ») et déploiement (« release ») : d’un côté, la mise en production de nouvelles fonctions binaires – une série de fichiers exécutables dédiés à un certain processus – et de l’autre, une modification des fonctionnalités. Trop souvent, les deux types de déploiement sont soumis au même traitement. Les stratégies suivantes vous permettront de mieux garder le contrôle :

  • Déploiement bleu/vert : une nouvelle version est publiée en parallèle à l’ancienne version. Un groupe pilote composé d’utilisateurs volontaires a accès à la nouvelle version afin que celle-ci puisse être testée dans un environnement de production. Si tout se passe bien, tout le monde peut être basculé sur la nouvelle version.
     
  • Déploiement canari : cette stratégie doit son nom aux canaris qui devaient autrefois avertir les travailleurs dans les mines d’une fuite de gaz. Là encore, deux versions du logiciel coexistent et 10 % des utilisateurs sélectionnés de manière aléatoire reçoivent un aperçu de la nouvelle version par un mécanisme de répartition des charges. Ce pourcentage augmente progressivement et si un problème se présente, il est de nouveau réduit.
     
  • Feature flags : de nouvelles fonctionnalités sont disponibles dans le code, mais elles ne sont pas encore visibles pour les utilisateurs. Cela permet de mener des tests en production. Il est même envisageable de laisser les utilisateurs choisir leur version de la fonctionnalité, par la fameuse proposition : « voulez-vous tester la version bêta ? ».  Sur cette base, il est d’ailleurs plus facile d’intégrer des systèmes autorégulateurs. Par exemple, si le système de surveillance détecte un problème avec la nouvelle fonctionnalité à partir de l’activation d’un feature flag donné, ce feature flag peut être automatiquement désactivé.

 

observability

Ouvrir l’œil avec les bons outils d’observabilité

Dans un contexte DevOps, les fonctions de surveillance revêtent une importance capitale. En effet, quand vous êtes responsable de bout en bout, vous devez être parfaitement au courant de tout ce qui se passe. L’observabilité est devenu un terme très utilisé : il s’agit de la mesure dans laquelle un système fournit des informations sur son état pendant l’exécution. Autrement dit, les boîtes noires appartiennent au passé. Fichiers journal, indicateurs clés et traçabilité sont devenus la norme ; mais il est possible d’aller encore beaucoup plus loin en matière de surveillance, toujours dans le but de maintenir un maximum de contrôle. Le Real User Monitoring, qui accorde une place centrale à l’expérience utilisateur, est notamment devenu primordial. Ce type de surveillance cartographie littéralement l’expérience utilisateur avec des paramètres et des données telles que la zone de clic. 

La contextualisation de toutes ces informations met en exergue les principaux points d’attention. Une IA peut exploiter ces données pour détecter les problèmes, effectuer une analyse des causes profondes et mesurer l’impact commercial. Dynatrace est une plateforme qui rend tout cela possible : ce système de veille logicielle surveille en permanence tous les aspects d’un paysage applicatif. En effet, cela fait longtemps que le suivi des performances des applications (Application Performance Monitoring – APM) ne suffit plus. L’automatisation poussée que Dynatrace propose aujourd’hui permet une authentique approche AIOps. Dans ce cadre, l’équipe de produit reçoit un afflux constant d’informations ou feed-back continu. Pour le business aussi, ces informations sont essentielles, car elles permettent de valider l’utilisation prévue du logiciel et la réalisation des résultats visés. Elles alimentent enfin la boucle de feed-back évoquée dans le premier blog de cette série : « construisons-nous l’élément comme il faut ? ».  Il est également possible de se fonder sur des Service Level Objectives (SLO), à savoir, des variables personnalisées qui reflètent un objectif donné, par exemple le pourcentage de clients qui passent effectivement à la caisse avec leur panier d’achats.

Ajoutons à cela que ce type de système peut aussi être mis en œuvre dans des environnements de test, pour détecter les problèmes avant le déploiement. Cette évolution s’inscrit dans la tendance « shift left ». Il existe même un système (Keptn) pour exécuter automatiquement des tests de charge et les valider sur la base de données d’observabilité avancées.

 

En savoir plus sur le flux de développement agile de logiciels ?

Lisez aussi les autres blogs de cette série :

Découvrez tout les blogs
En savoir plus

Inscrivez-vous et recevez nos blogs dans votre boîte mail