Adopter des pratiques de déploiement sécurisées
Implémenter des garde-fous dans le processus de déploiement pour réduire l’effet des erreurs ou des conditions inattendues. |
---|
Pendant le cycle de développement, les artefacts de charge de travail passent par de nombreuses modifications à mesure qu’ils sont implémentés et testés et que les bogues sont corrigés.
Le processus de déploiement doit suivre une procédure d’exploitation standard. Toute modification doit être déployée avec le même niveau de rigueur. Ce principe s’applique également au code, à la configuration et à tous les artefacts associés. La clé consiste à appliquer des pratiques sécuritaires dès que possible afin que vous ayez une prévisibilité en production. Même si des erreurs atteignent les clients, vous devriez pouvoir déployer les modifications de récupération dès que possible.
Exemple de scénario
Contoso Air a développé une application web qui permet au client de réserver des vols directement via l’application. L’application est en cours d’exécution en production depuis plus d’un an.
L’application est entièrement déployée dans Azure et repose sur Azure App Service, Azure Cosmos DB, Azure Functions, Azure Logic Apps et Azure Service Bus.
Normes de déploiement automatisé Codify
Normalisez le processus pour déployer toute modification à l’aide de processus de déploiement automatisés, tels que des pipelines. Tous les environnements doivent utiliser des pipelines. Classifiez les ressources et les versions par environnement pour les rendre facilement traceables et identifiables.
Les méthodes de déploiement cohérentes réduisent les problèmes causés par les erreurs de processus et la variance et vous permettent de concentrer votre effort sur les problèmes de charge de travail.
La normalisation garantit que le déploiement est effectué de manière sécurisée, fiable et reproductible.
La classification facilite l’affichage des journaux d’activité des déploiements et problèmes précédents qui se sont produits. Vous pouvez peut-être utiliser ces informations pour accélérer la restauration et les opérations de restauration.
Problématique de Contoso
- L’équipe de charge de travail Contoso Air utilise des pipelines de génération et de déploiement automatisés, mais les déploiements nécessitent normalement une intervention manuelle tout au long de l’opération pour modifier et valider différents paramètres de configuration.
- En raison de l’intervention manuelle, il existe des erreurs fréquentes dans le déploiement, ce qui rend chaque mise en production très stressante et perturbante pour l’ensemble de l’équipe. L’intervention manuelle rend également difficile la restauration lorsqu’un déploiement échoue.
Application de l’approche et résultats
- L’équipe alloue du temps pour automatiser les modifications de configuration dans le cadre du déploiement et intégrer les fonctionnalités ajoutées dans les pipelines de déploiement existants.
- Les paramètres de configuration associés à chaque environnement sont externalisés aux fichiers JSON respectifs enregistrés dans le contrôle de code source pour une traçabilité supplémentaire. Paramètres qui sont considérés comme des secrets sont enregistrés dans des magasins de coffres de secrets, qui sont également alloués à chaque environnement.
- Toutes les modifications sont désormais enregistrées pendant le déploiement, ce qui garantit une traçabilité complète pour faciliter les efforts de résolution des problèmes et les audits. L’équipe ajoute également des tests automatisés pour valider les modifications de configuration apportées au pipeline.
- Ensuite, l’équipe travaillera sur l’automatisation complète des restaurations pour optimiser davantage les processus.
- En raison de la nouvelle automatisation, les déploiements ont été plus fiables et prévisibles, et le moral de l’équipe a également augmenté.
Déployer souvent
Déployez de petites mises à jour incrémentielles à une cadence régulière.
L’utilisation de cette approche permet de maintenir les récits utilisateur et les éléments de travail gérables du point de vue de la gestion de projet et de réduire le risque de problèmes à grande échelle lorsque les déploiements échouent.
Problématique de Contoso
- Les processus de déploiement de l’équipe ont historiquement été d’effectuer des versions majeures toutes les trois à quatre mois. Cette pratique rend difficile la validation de la version. L’équipe a également eu des difficultés à résoudre les problèmes liés à tant de pièces mobiles.
- Des versions problématiques nécessitant des correctifs chauds à la mi-version ou qui doivent être restaurées et abandonnées ont eu lieu plusieurs fois.
- Les libérations sont très stressantes et ont été traitées comme des situations de « toutes les mains sur le pont », ce qui a eu un impact négatif sur le moral de l’équipe.
Application de l’approche et résultats
- Après la dernière version problématique, les parties prenantes ont demandé à l’équipe d’adopter une meilleure approche des déploiements. L’équipe a décidé de modifier ses pratiques pour favoriser les changements fréquents et petits. Ils limiteront l’étendue de chaque version à une ou (au plus) à quelques modifications connexes qui sont soigneusement testées, car la build est promue dans les environnements inférieurs.
- Par conséquent, les versions sont devenues beaucoup plus efficaces et la qualité a augmenté. Les versions sont plus faciles à valider et les problèmes sont plus simples à résoudre.
- Avoir une cadence régulière de libérations prévisibles a contribué à rétablir la confiance et le moral de l’équipe. Les utilisateurs bénéficient également. Avec une qualité de mise en production plus élevée, ils voient moins d’interruption et obtiennent l’accès à de nouvelles fonctionnalités beaucoup plus tôt.
Utiliser une approche d’exposition progressive
Déployez progressivement les mises à jour, avec diligence raisonnable. Utilisez des modèles de déploiement qui vous donnent le contrôle pour augmenter progressivement le nombre d’instances et de clients jusqu’à ce que la mise à jour soit adoptée en toute sécurité par tous.
Testez chaque mise à jour de manière contrôlée afin que les problèmes soient résolus au début de la production. Évitez de déployer une mise à jour défectueuse qui a un impact sur l’ensemble de votre base de clients.
Vérifiez si la mise à jour est compatible vers l’arrière et vers l’avant.
Problématique de Contoso
- L’équipe voit de grands avantages à changer d’approche pour faire des versions plus petites. Ils consacrent moins de temps maintenant aux mises en production et se sentent énergiques pour poursuivre la voie d’amélioration de l’excellence opérationnelle supplémentaire.
- Comme ils expérimentent de nouvelles fonctionnalités, certaines des modifications n’ont pas été bien reçues par les utilisateurs ou ont provoqué une augmentation des appels de support en raison de la courbe d’apprentissage raide qu’ils apportent.
- Ils se demandent comment ils peuvent continuer à innover leurs applications pour optimiser la productivité de leur utilisateur, tout en minimisant l’impact de la publication de fonctionnalités qui peuvent ne pas être aussi populaires ou faciles à utiliser.
Application de l’approche et résultats
- Ils ont décidé d’implémenter un modèle de mise en production de fonctionnalités qui expose de nouvelles fonctionnalités aux utilisateurs de façon incrémentielle, à l’aide d’indicateurs de fonctionnalité.
- Pendant les phases de planification des nouvelles fonctionnalités, un critère est défini pour sélectionner les utilisateurs qui seront exposés en premier à la fonctionnalité. Un petit groupe d’utilisateurs est sélectionné pour recevoir la nouvelle fonctionnalité en premier. Selon les commentaires des utilisateurs, la fonctionnalité est déployée sur des groupes de plus grande taille successivement jusqu’à ce que l’ensemble de la population de l’utilisateur exécute la nouvelle version. À mesure que d’autres utilisateurs sont exposés aux nouvelles fonctionnalités, l’équipe de support technique documente le résultat des cas de support pour partager en interne et potentiellement remplir le FAQ externe.