Comment assurer le déploiement continu des applications modernes ?
L'expression "application moderne" est fréquemment utilisée dans les blogs et les articles techniques, mais sa définition a toujours été subjective. Lorsque je parle d'une application moderne, voici ce que j'ai à l'esprit.
Qu'est-ce qu'une application moderne ?
Les applications modernes sont construites avec des modèles architecturaux modulaires, des modèles opérationnels sans serveur et des processus de développement agiles. Elles vous permettent d'innover plus rapidement, de réduire les risques, d'accélérer la mise sur le marché et de diminuer votre coût total de possession (TCO). L'une des façons pour une entreprise d'itérer et d'innover plus rapidement est d'adopter des pratiques DevOps modernes - notamment CI / CD. Il s'agit d'une autre expression que vous avez probablement rencontrée lors d'une conférence ou dans les médias. CI / CD est l'abréviation de Continuous Integration / Continuous Deployment. Dans certains cas, le "D" signifie également "Delivery" (livraison), mais pour les besoins de cet article, nous opterons pour "Deployment". Si vous vous êtes déjà demandé comment moderniser votre application en adoptant les meilleures pratiques de CD, cet article vous est destiné.
Un avertissement - Bien que l'article illustre le déploiement continu avec l'utilisation des services AWS tels que AWS CodeDeploy et Amazon Elastic Container Service (ECS), les principes restent les mêmes pour le fournisseur de cloud et l'outil de votre choix.
Trouver l'équilibre entre #agilité et fiabilité
Le rêve de tout développeur est d'écrire du code, d'appuyer sur un gros bouton rouge et de voir ensuite ce code en production. Cela peut être une bonne ou une mauvaise chose. D'une certaine manière, c'est le processus de développement le plus agile qui soit. Qui a besoin de contrôles et d'équilibres, n'est-ce pas ? Mais c'est aussi une *très* mauvaise chose. Bugs et erreurs peuvent faire planter votre application et offrir à vos clients une expérience terrible. Alors comment trouver l'équilibre entre agilité et fiabilité ?
Le déploiement continu est un moyen de se rapprocher de la réalisation de ce rêve. Tout comme l'intégration continue - où les développeurs fusionnent régulièrement leurs modifications de code dans un référentiel central, après quoi des constructions et des tests automatisés sont exécutés - le CD est la pratique où les modifications de code sont automatiquement préparées pour une mise en production. Le déploiement continu s'appuie sur l'intégration continue en déployant toutes les modifications du code dans un environnement de test et/ou un environnement de production après la phase de construction. Il peut y avoir (et il y a généralement) plusieurs étapes de test parallèles avant un déploiement en production. La différence entre la livraison continue et le déploiement continu est la présence d'une approbation manuelle pour la mise en production. Avec le déploiement continu, la production se fait automatiquement sans approbation explicite. Aussi bien que d'appuyer sur ce gros bouton rouge.
Comment réussir le déploiement continu ?
Les objectifs d'un déploiement continu efficace sont les suivants :
Recommandé par LinkedIn
Avec le cloud, la mise en œuvre de cette pratique est plus facile que jamais. Prenons l'exemple d'AWS CodeDeploy qui permet des déploiements automatisés avec des serveurs virtuels, des conteneurs, des serverless et même des charges de travail sur site.
Déploiement continu appliqué à AWS CodeDeploy
Voici un exemple de la manière dont AWS CodeDeploy automatise vos déploiements sur Amazon ECS. (Cela suppose que vous avez les conditions préalables d'une application fonctionnant sur AWS avec les autorisations et les politiques IAM pertinentes).
CodeDeploy a besoin d'un fichier de spécification d'#application ou AppSpec pour gérer les déploiements. Ce fichier est généralement formaté en YAML (ou JSON) et ressemble à quelque chose comme ceci :
Comme vous pouvez le voir, il y a différentes sections dans le fichier AppSpec. Les sections telles que version et os sont explicites. Vous pouvez définir les configurations de l'application et également spécifier le système d'exploitation utilisé.
La section "hooks" contient des mappings qui relient les crochets d'événements du cycle de vie du déploiement à un ou plusieurs scripts. Chaque crochet de déploiement est exécuté une fois par déploiement vers une instance. Vous pouvez spécifier un ou plusieurs scripts à exécuter dans un hook. Chaque crochet pour un événement du cycle de vie est spécifié avec un chaîne de caractère sur une ligne séparée. Il existe différents événements de cycle de vie tels que ApplicationStop, BeforeInstall et ApplicationStop afin que les scripts automatisés puissent s'exécuter à chacun de ces événements. Par exemple, dans le crochet ApplicationStart, les 2 scripts démarrent un serveur et créent une base de données. De même, le crochet ApplicationStop comporte un script qui arrête le serveur.
Comprendre les types de déploiement et les configurations
Lisez l'article en intégralité sur le blog d'Agilitest. Un article par Sohan Maheshwar .