Luc Pâquet
Défis du client et étude de cas
Notre client a fait appel à nos services infonuagiques et de DevOps pour moderniser ses infrastructures informatiques et ainsi réaliser des gains de valeur pour l’entreprise. Les intervenants souhaitaient avoir accès aux données pertinentes qui leur permettraient de prendre des décisions basées sur des données en temps réel, plutôt que d’attendre la fin du processus d’extraction, de transformation et de chargement des données (ETL) par lots de nuit. Ces tâches de traitement des lots ETL étaient sujettes aux erreurs et exigeaient une surveillance et des interventions manuelles bien au-delà de minuit pour les corriger et assurer la disponibilité des données pour le jour ouvrable suivant. Outre sa volonté d’améliorer l’accès aux données, le client souhaitait moderniser ses infrastructures informatiques pour offrir des fonctionnalités en libre-service, passer à un modèle de plateforme d’opérations et exploiter les services gérés du nuage AWS afin d’accélérer l’innovation.
Solution proposée
Les objectifs techniques globaux étaient de remanier l’architecture des applications existantes afin d’exploiter les services en nuage de manière stratégique, de réduire le fardeau opérationnel et d’améliorer l’expérience des développeurs. Le client souhaitait adopter une culture de collaboration et une approche « tout sous forme de code » pour favoriser l’innovation et accroître la valeur de l’entreprise à un rythme accéléré, tout en mettant l’accent sur la sécurité et la gouvernance.
Dans un premier temps, Levio a évalué ses capacités DevOps, sa pile d’applications technologiques et ses données. À partir de ces évaluations, nous avons dressé le bilan de la situation actuelle et établi une feuille de route permettant d’atteindre les objectifs fixés. Ce travail comprenait un ordre de priorité pour l’amélioration des capacités DevOps. Les principales améliorations requises concernaient l’infrastructure codifiée (IaC), les tests automatisés et leurs données ainsi que la livraison continue. À partir des évaluations et en collaboration avec le client, nous avons sélectionné le champ d’application d’un projet initial de migration/PMV AWS.
Dans un premier temps, le projet de PMV a introduit les pratiques d’IaC à travers des ateliers sur les pratiques exemplaires sur Github et Terrafor. Nous avons également évalué leur zone d’atterrissage AWS et avons organisé un atelier personnalisé sur les pratiques exemplaires de la zone d’atterrissage AWS, en plus d’effectuer les mises à jour nécessaires. De là, Levio a créé un pipeline IaC au moyen de scripts Terraform sur Github et Terraform Cloud.
Du côté des applications, nous avons modernisé celles du client et les avons conteneurisées avec Docker. Pour les images de conteneurs, nous avons mis en place des pipelines de version dans Azure DevOps, leur outil de CI existant, pour produire des images de base, créer une version et acheminer les images vers AWS ECR. Une fois les applications modernisées et conteneurisées, les images créées par les pipelines de version étaient acheminées vers AWS ECR.
Levio a élargi les pipelines de version Azure DevOps CI existants aux versions de conteneurs d’application et aux ensembles de tests d’unité d’exécution, fonctionnels et d’intégration. Avant ce projet, tous les tests étaient manuels. Cependant, nous avons ajouté l’organisation et l’automatisation des tests pour améliorer la livraison et les déploiements continus. Dans le souci d’atteindre les objectifs de rapidité et de qualité, nous avons utilisé Cypress, Jest (Frontend) et XUnit (API) pour créer des ensembles de tests automatisés pour les tests fonctionnels et d’intégration de l’application.
Puis, Levio a repensé les pipelines de publication de CD existants pour créer les versions et déployer les conteneurs dans les environnements AWS (Dev, QA, UAT, PROD). Nous avons également mis à jour le pipeline de promotion des artefacts afin d’automatiser les lancements dans les environnements UAT et PROD. Puisque la gouvernance de la gestion du changement nécessaire à la promotion de l’environnement UAT à PROD était en place, il fallait l’intégrer à un outil ITSM existant (ServiceNow) pour se conformer aux normes SOX en vigueur et, dans la mesure du possible, passer à l’automatisation des lancements.
Utilisation d’AWS dans le cadre de la solution
Nous avons choisi d’utiliser le nuage public d’AWS pour ce projet. Pour mettre en place une solution purement infonuagique, résiliente, sécurisée et facile d’utilisation, nous avons eu recours aux services suivants :
- AWS pour le temps d’exécution de l’infrastructure d’application.
- ECR pour le registre de conteneurs.
- ECS pour le temps d’exécution basé sur les conteneurs.
- API Gateway pour la gestion des API.
- AWS Cognito pour la gestion de l’authentification et l’autorisation.
- AWS CloudWatch.
- AWS CloudTrail.
- Équilibreur de charge — Application et réseau
- Secrets Manager
- Gestionnaire de système — Parameter Store
- S3
- AWS Route53
Applications ou solutions tierces utilisées
- Azure DevOps
- Azure Pipelines
- Azure Repos
- GitHub
- HashiCorp Terraform
- HashiCorp Vault
- XUnit
- Cypress
- Docker
- Localstack
- MongoDB Atlas
Résultats
Levio a mis en œuvre des pratiques d’infrastructure codifiée (IaC), notamment le référentiel de code source dans Github, les modules Terrafrom ainsi que le registre et le pipeline des mises à jour. Cela a permis de mettre en place un système en libre-service grâce à la création d’une infrastructure entièrement automatisée dans le nuage AWS. Puisque tout est codifié et décliné en versions, les modifications de l’infrastructure peuvent être vérifiées et contrôlées au moyen d’un pipeline rigoureux.
Résultat : une rapidité accrue et un délai de commercialisation réduit grâce à l’automatisation de l’infrastructure, ce qui a permis de conserver les contrôles SOX et donc de réduire le fardeau manuel des comités d’approbation des changements. En outre, Levio a normalisé la création et l’entretien des images de conteneurs, ce qui a encore amélioré la rapidité et la sécurité. Grâce à l’utilisation d’ECS Fargate pour l’exécution des calculs, les coûts associés à la gestion des machines virtuelles et des systèmes d’exploitation ont diminué, permettant ainsi à l’équipe des infrastructures et des opérations de se consacrer à des tâches plus stratégiques. L’utilisation d’ECS Fargate a permis aux développeurs d’apporter des modifications, de les tester et de les déployer en les isolant des autres parties du code, ce qui a permis d’améliorer la vitesse dans son ensemble.
L’intégration de l’automatisation et de l’organisation aux pipelines CI/CD a également donné lieu a une accélération globale. La qualité a augmenté grâce à l’automatisation et à l’organisation des tests dans les pipelines CI/CD, avec des ensembles de tests fonctionnels et d’intégration entièrement automatisés pour valider le code avant la fusion et le déploiement.
La sécurité a également été renforcée grâce à la modernisation des applications, qui utilisent désormais l’authentification et l’autorisation centralisées dans AWS Cognito et AWS Secrets Manager.
Le projet a été livré dans le respect des délais et du budget, ce qui a donné lieu à un projet de suivi pour une migration supplémentaire.
Indicateurs de réussite
En ce qui concerne l’automatisation des tests, la couverture du code a considérablement augmenté, passant de 0 % à 100 % pour les applications modernisées. Le délai de déploiement de bout en bout nécessaire pour mettre les nouvelles fonctionnalités à la disposition des clients a été réduit.
D’autres indicateurs seront recueillis lorsque le client aura procédé à la collecte d’indicateurs.