5 min
lire
Migrer vers AWS avec EKS : étude de cas Apodis
Chez Technofy, nous sommes ravis de partager avec vous le cas de la migration d'Apodis vers AWS. Cet article décrit les défis auxquels ils ont été confrontés et les solutions que nous avons proposées en tant que partenaire de confiance pour assurer une migration fluide et efficace vers AWS.
La mission
Apodis Pharma est une société qui propose aux pharmaciens un outil d'interface numérique entre les officines et les partenaires de santé. Pour répondre à leurs objectifs de modernisation de leurs pratiques de développement et de mise à disposition de leurs services, notre mission a été de les accompagner dans la migration vers le cloud AWS, et plus précisément vers la solution Elastic Kubernetes Services (EKS) .
Jusqu'à présent, lors du déploiement sur le cloud public, la gestion et la mise à disposition de leurs services posaient des problèmes de résilience et de disponibilité. En outre, l'utilisation d'un déploiement monolithique de leurs applications rendait de plus en plus difficile la gestion et le maintien d'un environnement viable. Enfin, assurer l’interconnection des services entre eux devenait un enfer en termes de compatibilité.
Les défis
- Création d'une architecture cloud résiliente et hautement disponible.
- Migration des services vers la solution EKS et accompagnement de l'équipe client dans l'adoption de cette nouvelle technologie.
- Migration de la base de données vers les solutions AWS.
- Mise en place des workflows de CI/CD
- Abstraire autant que possible la complexité de Kubernetes (pour simplifier les rôles et les accès des membres de l'équipe aux seules ressources nécessaires)
- Gestion de l'ensemble de l'infrastructure avec de Infrastructure-as-Code (Terraform).
- Accompagner les équipes Apodis dans la transition (prise en main de Kubernetes, Terraform et de l’écosystème AWS)
- Mise en place des bonnes pratiques AWS, DevOps et de sécurité.
- Maîtrise des coûts : disposer d'une infrastructure performante.
La solution
1. Étude et conception d'une architecture cible
L'architecture présentée ci-dessous répond à deux objectifs majeurs :
- Séparation des préoccupations: L'encapsulation dans des unités logiques de gestion (charges de travail et services partagés) permet un accès à la fois limité et suffisant aux ressources. De plus, la gestion de la charge de travail "staging" en tant qu'unité indépendante signifie que cet environnement peut être "allumé" et "éteint" à la demande, ce qui permet de contrôler les coûts.
- L'utilisation d’outils choisis et ciblé tels que GIT® pour la gestion de code, Jenkins® pour le build d’application et ArgoCD® pour le déploiement offre de la simplicité, mais aussi abstrait une partie de la complexité de Kubernetes pour les équipes de développement qui peuvent utiliser les interfaces graphiques de Jenkins et d’ArgoCD pour debugger et déployer sans avoir besoin d’accéder directement au cluster EKS.
2. Build de l'infrastructure et migration vers AWS en plusieurs étapes
- Mise en place de l'IAC avec l'outil Terraform : L'infrastructure est gérée entièrement à partir du code Terraform. Cette étape a été réalisée en deux phases, la première concernant l'environnement d'administration partagé et l'environnement de développement. Une fois les tests terminés, une seconde phase a visé les environnements de staging et de production.
L'environnement staging est déployé puis arrêté à la demande, de manière isolée par rapport à l'environnement de production. Cette division en deux phases répond à plusieurs objectifs : la montée en compétence progressive des équipes par des passages de relais fréquents et réguliers, la validation et le test de l'architecture et des solutions sur l'environnement de développement avant l'installation de l'environnement de production.
- Création de l'organisation et installation du SSO pour un accès sécurisé conforme aux bonnes pratiques.
- Réalisation de l’environnement partagé regroupant les applications AWS utiles à l’ensemble des comptes. Cette approche de services partagés représente de nombreux avantages dont : l'optimisation des coûts, la maintenance et le monitoring simplifiés, la séparation des actions de mise à disposition des services (applications client) de celles de gestion, de build et de déploiements.
- Mise en œuvre des outils CI/CD Jenkins (build) et ArgoCD (deployment).
- Création de l'environnement "Développement" et assistance au déploiement des applications clients.
- Création des environnements "staging" et "production".
Teck stack
Les technologies suivantes ont été utilisées lors de la migration vers AWS :
- L'authentification unique AWS (AWS SSO) simplifie l'accès des utilisateurs à plusieurs comptes AWS et applications professionnelles avec un seul jeu d'identifiants, améliorant ainsi la sécurité et l'efficacité de la gestion.
- Amazon Elastic Kubernetes Service (EKS) : utilisé pour gérer et centraliser le déploiement d'applications conteneurisées.
- Amazon Relational Database Service (RDS) : utilisé pour héberger et gérer des bases de données relationnelles dans le nuage.
- Amazon CloudWatchAmazon CloudWatch : utilisé pour surveiller et gérer les ressources et les applications AWS.
- Gestion des identités et des accès AWS (IAM) : utilisé pour gérer l'accès aux services et ressources AWS.
- Amazon DMS: Service de migration des bases de données utilisé pour migrer les bases de données d'un ancien fournisseur de services en nuage vers AWS RDS.
- Amazon ECR: Elastic Container Registry utilisé pour stocker, gérer et déployer des images de conteneurs Docker.
- Amazon KMS: Service de gestion des clés utilisé pour créer des clés et contrôler le cryptage des données.
- Terraform: Infrastructure open source en tant qu'outil de code logiciel utilisé pour créer, modifier et mettre à jour l'infrastructure - IAC (Infrastructure As Code).
Résultats attendus
La migration vers AWS est actuellement en cours, et après la mise en place d'une architecture hautement disponible, nous prévoyons les résultats suivants :
- Amélioration de la disponibilité et du temps de fonctionnement des services de l'entreprise
- Évolutivité et flexibilité accrues pour répondre à l'évolution des besoins de l'entreprise via des déploiements Kubernetes sous la forme de fichiers de déploiement chart helm ou yaml.
- Sécurité renforcée et contrôle d'accès strict pour les données sensibles
- Amélioration de la surveillance et de la gestion des ressources et des applications AWS
- Gestion simplifiée de l'infrastructure : contrôle des versions et déploiement automatisé
- Abstraction de la complexité liée à l’utilisation de Kubernetes par l’exposition d’interfaces graphique concernant les déploiements et le build d’applications.
En conclusion, la migration vers AWS vient soutenir Apodis dans sa croissance en lui permettant de s’appuyer sur une infrastructure résiliente et hautement disponible. De plus, la gestion du code via l’outil Terraform leur permet de gérer efficacement les ressources et les coûts liés à cette migration sur AWS.
La solution AWS EKS, adossée aux outils Jenkins et ArgoCD, garantit aux équipes la disponibilité et la maintenance de l'environnement Kubernetes. Finalement, l’automatisation des étapes de build et de déploiement via les outils Jenkins et ArgoCD permettent aux équipes techniques de se concentrer sur les tâches à fortes valeurs ajoutées, telle que le développement de nouvelles features pour les clients d’Apodis.