Luc Pâquet
Défis du client et étude de cas
Un client de longue date a fait appel à Levio pour structurer, concevoir et déployer une solution de paiement en temps réel (RTP). Compte tenu du délai de lancement très serré et des exigences en matière de résilience et d’évolutivité, le client souhaitait que la solution soit déployée dans le nuage public afin de tirer parti des services gérés. Cet échéancier ambitieux exigeait une solution hybride de développement et de prestation infonuagique hautement automatisée. L’équipe de Levio, composée d’experts infonuagiques et DevOps, a été retenue pour livrer la solution. Le marché américain des RTP évolue rapidement et les échéanciers du projet devaient être accélérés pour coïncider avec la mise en service prochaine des fonctionnalités de FedNow.
Solution proposée
La solution proposée comportait un nombre important d’exigences non fonctionnelles, notamment une fiabilité, une résilience, une évolutivité et une disponibilité élevées. L’automatisation, la collaboration et les multiples itérations nécessaires pour éprouver nos solutions (PMV), puis les mettre en service (qualité d’exploitation), ont permis de satisfaire à ces exigences dans le cadre d’une application infonuagique hybride. Nous avons opté pour cette approche afin d’intégrer les nombreux outils et systèmes sur site de l’entreprise. Sans l’aide des services infonuagiques, la mise en œuvre de la solution souhaitée sur site aurait pris beaucoup plus de temps. Les capacités DevOps et l’automatisation étaient nécessaires pour accélérer l’ensemble de la chaîne de valeur du développement et de la livraison de logiciels et respecter les échéanciers. Cela nous a permis de développer et de valider très rapidement les itérations, ainsi que d’automatiser la sécurité, la conformité et les tests.
Pour commencer, Levio a mis en œuvre des pratiques d’infrastructure codifiée (IaC) et des pipelines utilisant Terraform pour configurer l’ensemble des infrastructures et des services infonuagiques. Toutes les infrastructures ont été codifiées à l’aide d’HashiCorp Terraform. En outre, les pipelines IaC codifiés avec Terraform Cloud ont ensuite été utilisés pour déployer l’infrastructure dans les quatre environnements (Dev, UAT, Cert, Prod). Le provisionnement manuel de l’infrastructure n’était pas autorisé. Ainsi, toute modification du code de l’infrastructure est soumise à des processus de révision et d’approbation.
Les pipelines CI/CD dans GitLab sur AWS orchestrent les étapes de création et de test des 12 microservices en conteneurs. Une fois les analyses de sécurité réalisées (Fortify, Sonatype et WebInspect), les artéfacts de la version sont stockés sur AWS ECR. La validation de la version déclenche AWS CodePipeline pour le déploiement sur AWS ECS Fargate à l’aide d’AWS CodeDeploy. Une stratégie bleu/vert est utilisée pour chaque déploiement. Après son déploiement, le microservice est ouvert pour tester le trafic. À l’aide d’AWS Lambda, les hooks du cycle de vie d’AWS CodeDeploy vérifient que l’état du microservice est stable avant l’acheminement vers le nouveau groupe cible. Les déploiements AWS CodePipeline sont réalisés de cette manière en parallèle dans quatre environnements (Dev, UAT, Cert, PROD) et deux régions, afin d’offrir une configuration de redondance active-active. Ainsi, la solution satisfait aux exigences de résilience élevées en matière de reprise après sinistre multirégions.
En plus des pipelines IaC et CI/CD, nous avons mis en place un cycle de vie de gestion de la configuration utilisant GitLab, SOPS et AWS Parameter Store.
Nous avons dû procéder à des intégrations entre AWS et le centre de données sur site pour le chiffrement des données (Voltage), la sécurité (Sonatype, WebInspect, Wiz.io) et la journalisation (Splunk). Ces communications étaient également gérées par les pipelines CI/CD via une passerelle AWS Transit Gateway et un routeur AWS Direct Connect reliant le nuage AWS au centre de données du client.
La gestion des changements, nécessaire pour toute modification des environnements supérieurs (Cert, PROD), a été mise en œuvre avec AWS CodePipeline. Le formulaire de demande de changement pour les déploiements dans les environnements supérieurs a été mis en œuvre dans le pipeline CD. Ainsi, les promotions des environnements inférieurs (Dev et UAT) vers les environnements supérieurs (Cert et Prod) sont contrôlées par une confirmation manuelle via un portail d’approbation dans AWS CodePipeline.
Une fois en production, la surveillance des microservices en cours d’exécution a été assurée avec Dynatrace et Splunk en utilisant la pile d’outils de surveillance existante. Les alertes en cas d’erreur ont été configurées conformément aux exigences du client. Wiz.io est utilisé pour détecter toute vulnérabilité sur l’infrastructure déployée. En outre, Levio a mis à disposition une équipe de postproduction, composée notamment d’experts en ingénierie de la fiabilité des sites, d’ingénieurs en soutien technique et de développeurs infonuagiques, afin de soutenir, d’entretenir et d’améliorer les applications et les pipelines.
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 :
- Des applications AWS natives exécutées dans ECS Fargate.
- AWS CodePipeline et d’AWS CodeDeploy pour créer et déployer les microservices.
- AWS Parameter Store pour stocker les configurations.
- AWS ECR pour stocker les artéfacts du pipeline de la version CI.
- Un pipeline distinct pour la création du compte AWS afin de séparer les tâches de déploiement et d’application.
- AWS ALB pour diriger le trafic.
- AWS Route53 pour la stratégie active/active multirégions de reprise après sinistre
- É.-U.-est-1 — Virginie
- É.-U.-est-2 — Ohio
- Déploiement d’outils supplémentaires sur AWS Lambda.
Applications ou solutions tierces utilisées
- HashiCorp Terraform
- Maven
- Voltage (chiffrement de données)
- Fortify, Sonatype, WebInspect, Wiz.io (sécurité)
- Splunk (journalisation)
- Dynatrace (observation de données)
- GitLab (référentiel de code, CI)
- SOPS
Résultats
La solution de paiements en temps réel du client a été couronnée de succès. Le service a été lancé en version bêta dans le respect des délais et du budget. Les principaux défis, à savoir un calendrier serré, des SLA pour le traitement des opérations, la haute disponibilité et la reprise après sinistre, ont tous été relevés.
La solution RTP du client, actuellement composée de 12 microservices, est exécutée sur AWS dans plusieurs régions. Quatre environnements (Dev-UAT-Cert-Prod) soutiennent le cycle de vie du développement de l’application, et le provisionnement de l’infrastructure est entièrement automatisé. Une chaîne d’outils DevOps de bout en bout prend en charge les versions, les tests et les déploiements, ce qui permet d’accélérer la livraison de nouvelles fonctionnalités.
Indicateurs de réussite
Depuis le lancement de sa solution de RTP, le client a fait passer le nombre d’institutions financières présentes sur sa plateforme de 0 à 36 en 17 mois, et d’autres s’ajoutent régulièrement à la liste. En novembre 2023, le nombre moyen d’opérations traitées quotidiennement s’élevait à 2 860. Le montant moyen des transactions quotidiennes est de 1,28 million de dollars.
Le SLA prévoit un délai de traitement des opérations de 15 secondes, et la solution respecte nettement le SLO de 10 secondes avec un délai de traitement moyen de 4 secondes.
Au cours du dernier trimestre, la solution affichait un temps de disponibilité de 100 %. Les annulations et les échecs de transactions sont attribuables à des facteurs externes, comme des comptes non autorisés, l’envoi de données non valides ou des problèmes au niveau d’autres points d’intégration.
Le déploiement en PROD a lieu deux fois par mois. Cette fréquence est principalement limitée par un processus de certification strict dans l’environnement Pre-Prod Cert. Le délai entre la fusion du code et le déploiement est de 2 heures.
+2800
Nombre moyen des opérations traitées / jour
4
Temps moyen de traitement en secondes
$1.28M
Montant moyen des transactions quotidiennes
Levio en chiffres
300
Clients
2000
Experts-conseils
12
Bureaux