Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Intégration continue et livraison continue
Faites évoluer et améliorez les applications et les services plus rapidement que les entreprises qui utilisent des processus traditionnels de développement de logiciels et de gestion d'infrastructure.
Adopter DevOps
Démarrer
Adopter la gestion des composants logiciels
La gestion des composants logiciels consiste à gérer tous les composants individuels utilisés pour créer des logiciels, notamment les bibliothèques, les frameworks, les référentiels de code source, les modules, les artefacts et les dépendances tierces. Nous vous recommandons d'utiliser un système de contrôle de version tel que Git ou Apache Subversion pour gérer le code source, permettre la collaboration et conserver un historique des modifications du code. Vous pouvez surveiller les modifications et les événements dans le référentiel afin d'automatiser le processus, de créer des pipelines, de gérer votre code et d'intégrer vos flux de travail à des services supplémentaires selon les besoins.
Création de CI/CD pipelines
CI/CD pipelines are sets of automated instructions that are initiated by changes committed to the version control system. They typically include instructions for building the application, running automated tests, and deploying code to a specific environment. You can set up an automated CI/CDpipeline à l'aide d'outils tels que AWS CodePipelineJenkins ou GitLab CircleCI. Vous pouvez également les configurer directement dans les systèmes de contrôle de version qui prennent en charge la génération de pipelines.
Commencez par un pipeline minimum viable pour une intégration continue, puis passez à un pipeline de livraison continue
Tenez compte des fenêtres de déploiement, c'est-à-dire des jours et des heures auxquels vous souhaitez déployer votre code. Tenez compte des heures de faible demande de votre système. Ainsi, si vous devez revenir en arrière, cela aura le moins d'impact sur vos clients. Parmi les autres bonnes pratiques, citons l'évitement des déploiements le vendredi et la mise en œuvre d'un gel du code pendant les périodes de pointe ou avant les vacances. Envisagez de définir des règles relatives au déploiement du code lorsque l'auteur du commit n'est pas disponible (par exemple, en vacances). N'oubliez pas que les déploiements échouent et que vous devrez peut-être faire appel à une aide externe. Évaluez différentes méthodes de déploiement telles que les méthodes sur place, les méthodes évolutives, les méthodes immuables et blue/green les déploiements. Envisagez d'utiliser des services entièrement gérés pour les flux de travail de livraison continue afin d'accroître la disponibilité et la sécurité tout en minimisant la complexité et la gestion.
Déployez des tests automatisés
Les pratiques modernes recommandent de déplacer les tests vers la gauche (en rapprochant les tests du développeur et de l'IDE
Les tests automatisés détectent les erreurs au début du processus de développement et incluent des tests unitaires, des tests d'intégration et des tests fonctionnels. Nous vous recommandons d'encourager les développeurs à utiliser des outils
Création de documentation
Outre la mise en œuvre d'un CI/CD pipeline pour rationaliser les flux de développement, vous devez conserver une documentation claire et complète afin de garantir l'efficacité, la maintenabilité et l'évolutivité continues du pipeline. La documentation est un aspect essentiel des pipelines CI/CD, car elle permet aux équipes de développement de bien comprendre la conception, les composants et les processus du pipeline. Lorsque vous créez de la documentation, commencez par une vue d'ensemble du pipeline, expliquez l'architecture et les compromis de conception, décrivez les outils et les technologies utilisés, spécifiez la configuration et les paramètres initiaux, décrivez les mesures de sécurité et le contrôle d'accès, et incluez des informations de dépannage et de maintenance.
Utiliser l'infrastructure comme code
Utilisez des outils tels que Terraform, Ansible ou AWS CloudFormationpour gérer l'infrastructure et garantir des environnements cohérents et reproductibles. Traitez votre infrastructure comme du code, assurez-vous de suivre les modifications apportées à l'infrastructure et évitez d'apporter des modifications directement dans la console. Définissez toute l'infrastructure, y compris le provisionnement des bases de données, sous forme de code et déployez ces modifications à l'aide de pipelines. Envisagez d'exécuter l'intégration de base de données sous forme de code dans des pipelines contenant un petit sous-ensemble de données de production nettoyées. Dans la mesure du possible, apportez les modifications et suivez ces modifications dans le code.
Comme pour le code logiciel, suivez les meilleures pratiques suivantes pour votre code d'infrastructure :
-
Utilisez le contrôle de version.
-
Utilisez les systèmes de suivi des bogues et de billetterie.
-
Demandez à vos pairs d'examiner les modifications avant de les appliquer.
-
Établissez des modèles et des conceptions de code d'infrastructure.
-
Tester les modifications de l'infrastructure.
Conservez et suivez les indicateurs standard
Pour maintenir un haut niveau de performance, développez et suivez des indicateurs clés pour comprendre la santé et l'impact commercial de vos pipelines, notamment :
-
Fréquence de construction. Le nombre de builds donne un aperçu de la productivité de votre équipe et de la complexité des changements.
-
Fréquence de déploiement. Les déploiements réguliers indiquent un processus de développement sain et agile.
-
Délai de mise en œuvre des modifications. Mesurer le délai moyen nécessaire pour que les modifications atteignent la production peut vous aider à identifier les points d'étranglement dans votre processus de déploiement.
-
Temps moyen d'exécution du pipeline. Le délai moyen entre l'étape initiale du pipeline et chaque étape suivante peut vous aider à optimiser votre flux de travail.
-
Volume de variation de la production. Le suivi du nombre de modifications atteignant la production peut fournir des informations sur la stabilité de votre environnement de production.
-
Temps de construction. Le temps de construction moyen peut indiquer des problèmes potentiels dans la base de code ou l'infrastructure.
Avance
Utiliser la gestion de configuration
Les outils de gestion de configuration jouent un rôle essentiel dans l'automatisation du déploiement, de la configuration et de la gestion des logiciels et de l'infrastructure. Ils fournissent une approche systématique pour gérer les changements et maintenir l'état souhaité de l'infrastructure, des logiciels et des configurations dans différents environnements. Ces outils permettent aux développeurs de définir l'état souhaité d'un système en utilisant des langages déclaratifs ou impératifs. L'outil de gestion des configurations automatise ensuite le processus d'application de ces configurations aux systèmes cibles, garantissant ainsi la cohérence et la répétabilité.
Utilisez des outils de gestion de configuration pour automatiser le déploiement, la configuration et la gestion des logiciels et de l'infrastructure. AWS Systems Manager State Manager est un service de gestion de configuration sécurisé et évolutif qui automatise le processus de maintien de vos nœuds gérés et AWS des autres ressources dans un état que vous définissez.
Intégrez la surveillance et la journalisation
L'intégration de solutions de surveillance et de journalisation dans les pipelines de CD offre de nombreux avantages aux équipes de développement et à l'ensemble du processus de développement logiciel. Ces solutions peuvent fournir des informations en temps réel sur les performances des applications, permettre une identification et une résolution plus rapides des problèmes, et promouvoir l'amélioration continue pour garantir que les applications restent fiables, performantes et évolutives tout au long de leur cycle de vie. L'investissement dans des solutions de surveillance et de journalisation est essentiel pour maintenir un pipeline de CD robuste et efficace, et contribue en fin de compte à la livraison réussie de logiciels de haute qualité.
Créez une cadence pour la fusion
Apportez ou fusionnez les modifications de code dans la branche principale (principale ou principale) au moins une fois par jour ou, idéalement, plusieurs fois par jour après chaque tâche. Cette cadence entraîne de multiples invocations quotidiennes dans le pipeline. Un modèle de flux de travail basé sur le branchement basé sur le pull s'inscrit dans cette approche. Utilisez des indicateurs de fonctionnalités
Capturez le comportement après le déploiement
Après un déploiement, capturez le comportement de production à l'aide de tests synthétiques automatisés et synchronisez les résultats avec le pipeline de livraison continue pour garantir que les mesures correctives sont prises rapidement. La priorité absolue des développeurs doit être de corriger les erreurs découvertes dans les pipelines dès que possible, de valider les modifications de code dans le référentiel de code source et de vérifier la résolution des erreurs dans le pipeline.
Les meilleures pratiques post-déploiement incluent le respect des indicateurs de performance clés les plus importants (KPIs) et la validation de l'absence d'erreur dans l'environnement de production. Automatisez la gestion des erreurs et évaluez les résultats après le déploiement KPIs afin de quantifier l'impact de votre publication. Générez automatiquement des indicateurs de vitesse, de sécurité et de stabilité que les développeurs peuvent utiliser pour apporter des améliorations. Pour plus d'informations, consultez le tableau de bord DevOps de surveillance de
Excel
Adoptez des pratiques et des technologies de pointe pour des performances optimales. Le perfectionnement continu de vos CI/CD processus vous aide à améliorer la qualité des logiciels, à réduire les délais de commercialisation et à accroître l'agilité. De nouvelles techniques et de nouveaux outils apparaissent continuellement. Il est donc essentiel pour votre organisation de rester informée et de s'adapter afin de conserver un avantage concurrentiel.
Pour rester adaptatif, tenez compte des points suivants :
-
Définissez tout sous forme de code, y compris votre application, votre configuration, votre infrastructure, vos données, vos AWS comptes et organisations, vos pipelines de déploiement, votre réseau et les contrôles de sécurité et de conformité.
-
Créez des pipelines de déploiement
correspondants pour les images de calcul, les services partagés et les applications. -
Imaginons un GitOps modèle dans lequel les demandes basées sur le pull initient un flux de travail pour déployer les modifications en comparant l'état de l'infrastructure existante à l'état souhaité, comme décrit dans le code.
-
Envisagez d'utiliser des pipelines de CD pour déployer l'apprentissage automatique (ML), les données, l'Internet des objets (IoT) et d'autres charges de travail.
-
Signez numériquement tous les artefacts de construction et stockez-les dans un référentiel sécurisé.
-
Suivez la provenance des logiciels en générant automatiquement une nomenclature logicielle qui crée un enregistrement de tous les artefacts versionnés et signés numériquement qui sont déployés auprès des clients.
-
Une fois que vous avez éliminé toute activité manuelle dans le cadre d'un processus de livraison de logiciels, supprimez les comités de révision manuels.
Pour les applications et les services qui ont automatisé l'ensemble de leur processus de livraison de logiciels, envisagez un déploiement continu dans le cadre duquel les équipes déploient des modifications qui passent toutes les vérifications d'un pipeline aux clients en production. Pour une visualisation, consultez le premier diagramme dans Qu'est-ce que la livraison continue ?
Intégrez AI/ML les technologies
L'intégration des technologies d'intelligence artificielle (IA) et d'apprentissage automatique (ML) dans les CI/CD pipelines présente plusieurs avantages, notamment les suivants :
-
Génération de tests automatisée
-
Hiérarchisation intelligente des tests
-
Analyse prédictive pour la détection des problèmes
-
Détection des anomalies et analyse des causes profondes
-
Révision du code et assurance qualité
-
Optimisation du déploiement
Pour plus d'informations, voir Ajouter de l'intelligence aux opérations de développement
Adopter des pratiques d'ingénierie du chaos
L'ingénierie du chaos consiste à injecter intentionnellement des défaillances dans les systèmes afin de tester leur capacité à résister à des événements inattendus et à s'en remettre. En identifiant les faiblesses et en les corrigeant de manière proactive, les entreprises peuvent améliorer la fiabilité globale de leur système et minimiser l'impact des problèmes potentiels.
Adoptez des pratiques d'ingénierie du chaos pour tester la résilience de vos systèmes à l'aide d'outils tels que Gremlin, Chaos Monkey ou Litmus. Effectuez régulièrement des tests contrôlés pour identifier les vulnérabilités, valider la tolérance aux pannes et garantir que votre application gère correctement les défaillances inattendues. Cette approche proactive permet d'améliorer la fiabilité du système et contribue à un CI/CD pipeline plus robuste.
Optimiser les performances
Optimisez en permanence les performances de votre application en utilisant des outils de profilage, une surveillance en temps réel et des boucles de feedback. Appliquez des techniques telles que les suivantes pour vous assurer que vos applications peuvent gérer l'augmentation du trafic et de la demande :
-
Optimisation du code
-
Profilage
-
Surveillance en temps réel
-
Boucles de rétroaction
-
mise en cache
-
Équilibrage de charge
-
Tests d'évolutivité et de performance
Mettre en œuvre une observabilité avancée
L'amélioration de l'observabilité de votre infrastructure cloud va au-delà des bases de la collecte, de l'agrégation et de l'analyse des métriques, des journaux et des traces. Lorsque l'observabilité est améliorée grâce à des outils tels qu'Amazon CloudWatch AWS X-Ray, elle devient une pratique stratégique qui alimente la livraison continue et l'innovation.
Dans un CI/CD pipeline robuste, l'observabilité avancée vous permet de découvrir des informations, non seulement sur vos applications et votre infrastructure, mais également sur les performances et l'état de santé de l'ensemble de votre système, y compris le pipeline lui-même. Ces informations vous aident à :
-
Identifiez, comprenez et traitez rapidement les problèmes potentiels afin d'améliorer la stabilité des applications et de réduire les temps d'arrêt
-
Rationalisez vos CI/CD processus pour créer des livraisons plus rapides et plus fiables
-
Obtenez des informations plus approfondies sur l'impact des modifications de code et des déploiements afin de prendre des décisions éclairées
-
Optimisez l'utilisation des ressources pour améliorer l'efficacité opérationnelle et la rentabilité
Pour améliorer l'observabilité :
-
Intégrez l'observabilité à chaque couche de vos applications et de votre infrastructure pour créer une vue complète des performances, du comportement et de l'état de vos systèmes.
-
Centralisez la collecte, le stockage et l'analyse des données à l'aide d'outils tels qu'Amazon CloudWatch pour unifier vos données d'observabilité afin d'en faciliter l'accès et l'interprétation.
-
À utiliser AWS X-Ray pour le suivi distribué afin de comprendre les performances de vos applications et de leurs services sous-jacents.
-
Établissez des boucles de feedback pour une amélioration continue et utilisez vos données d'observabilité pour apporter des améliorations itératives à vos systèmes.
L'adoption d'une observabilité avancée ne se limite pas à la maintenance de vos systèmes. Il s'agit d'une étape stratégique vers l'excellence opérationnelle et la promotion de l'innovation continue au sein de votre organisation.
Mettre en œuvre GitOps des pratiques
Mettez en œuvre GitOps des pratiques pour gérer les configurations de l'infrastructure et des applications en utilisant un référentiel Git comme source unique de vérité. Cette approche simplifie la gestion des modifications, améliore la traçabilité et garantit la cohérence entre les environnements.