lire
Chez Technofy, nous sommes ravis de vous partager le projet de refactoring d'architecture de WeWeb. 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 optimisation fluide et efficace de leur infrastructure.
Contexte
WeWeb est une plateforme de développement web no-code permettant aux utilisateurs de créer le front-end d’applications web sans avoir à coder. Grâce à son interface intuitive de type drag & drop, elle offre la possibilité et la flexibilité de créer des front-endà la fois responsifs et esthétiques sans compétences techniques poussées.
En tant que constructeur front-end no code, WeWeb peut être associé à n'importe quel back-end (base de données et serveur). Il prend en charge l'intégration de données en temps réel et l'automatisation, rendant ainsi la création d’applications web professionnelles beaucoup plus rapide.
La solution Weweb reposait principalement sur les services AWS ElasticBeanstalk, AWS Codebuild, AWS Codepipeline et RDS.
ElasticBeanstalk ElasticBeanstalk est un service managé d’AWS permettant de déployer et de mettre à l'échelle des applications et services Web. C’est une solution pratique et efficace pour les équipes techniques ayant peu d'expérience dans la gestion des infrastructures du fait de la rapidité de la mise en œuvre et de sa simplicité.
Dû à la popularité croissante de sa solution et anticipant une forte augmentation du trafic, WeWeb a souhaité optimiser son infrastructure afin d'offrir à ses clients des performances et une fiabilité de premier ordre.
Les enjeux principaux
Avec la montée en popularité de la plateforme et l'évolution des besoins des équipes techniques vers une granularité accrue, plusieurs besoins ont été identifiés :
- Assurer la scalabilité de l'infrastructure pour gérer les pics de charge.
- Garantir une haute disponibilité des services.
- Mettre en œuvre une sécurité optimale de l'infrastructure.
- Déployer un système de monitoring et d'alerting efficace.
- Optimiser le rapport coût/performance.
- Simplifier les processus de déploiement et de gestion de l'infrastructure pour l'équipe.
À ces besoins immédiats s'ajoutent des perspectives à plus long terme, telles que l'adoption d'une architecture multi-région, l'intégration avec des outils serverless d'AWS et la mise en œuvre de solutions event-driven (architecture orientée événements).
Après une analyse approfondie, il est apparu que l'infrastructure de WeWeb n'était pas optimisée pour le cloud et ne suivait pas les meilleures pratiques DevOps, de sorte que l'optimisation de l'infrastructure actuelle était difficilement possible. Cela, plus le fait qu’ElasticBeanstalk ne répondait plus aux exigences de WeWeb en termes de granularité nous a conduit à un projet de refactoring de l’architecture, où l'objectif était d'améliorer et d'optimiser à la fois sur le plan financier et technique l'infrastructure existante.
Présentation de la solution
Suite à cette analyse de l’existant, nous avons pu établir une architecture cible adaptée et évolutive qui pourra accompagner WeWeb sur le long terme.
Le cœur de cette solution d'architecture est l'exécution des charges avec AWS ECS (Elastic Container Service). Cette solution a été retenue car c’est un service managé d’AWS qui permet d'exécuter des containers, et qui demande surtout peu de maintenance et de compétences spécifiques comparé à un cluster EKS (Kubernetes) par exemple. Pour en savoir plus, rendez-vous sur https://www.technofy.io/blog/container-orchestration-and-execution-on-aws
Les principaux avantages d'ECS sont les suivants :
- Facilité de gestion (service managé)
- Scalabilité automatique des containers (services) et des instances (avec AWS Autoscaling)
- Sécurité renforcée avec IAM
- Parfaite intégration avec les autres services AWS (Load balancer, EC2, Container Registry, Cloudwatch,…)
Cette évolution offrait également une occasion propice pour mettre en place de l'Infrastructure as Code via Terraform et des pipelines CI/CD, cela toujours dans l’objectif de simplifier les déploiements et la gestion de l'infrastructure.
Pipeline CI/CD
Nous avons mis en place un pipeline de déploiement CI/CD classique sur Github :
- Partie CI : Nous avons un workflow qui déclenche une Github Action lorsqu'une branche est taguée. Cette action va construire une image docker puis la stocker dans un registre AWS ECR.
- Partie CD : le déploiement s'enchaîne en venant mettre à jour les images des versions des conteneurs utilisés dans les services ECS. La mise à jour est progressive (rollout update).
Monitoring et alerting
En ce qui concerne le monitoring de l'infrastructure, nous avons envisagé deux solutions principales : AWS et Datadog. Afin d'aider WeWeb à faire le choix le plus adapté, nous avons opté pour un test des deux solutions.
Initialement, nous avons mis en place le monitoring via AWS, tandis que l'intégration de Datadog est prévue après la migration. Cette approche permet de nous concentrer sur un seul sujet à la fois, offrant ainsi le temps nécessaire pour évaluer ces solutions.
Le système de monitoring déployé sur AWS est basé principalement sur AWS CloudWatch. Il comprend des alarmes pour chaque service, avec un système de notification par e-mail et / ou Slack. Ces alarmes sont également associées à des tableaux de bord personnalisés pour chaque service et pour une vue globale. De plus, la centralisation des logs a été un élément important pour faciliter la recherche d'erreurs et le processus de débogage.
Sécurité
Pour assurer une sécurité optimale à plusieurs niveaux, les éléments suivants ont été mis en œuvre :
- Gestion des identités avec IAM pour contrôler l'accès aux ressources.
- Authentification unique (SSO) pour simplifier l'accès aux différents services.
- Utilisation d'AWS Organizations avec un compte dédié par environnement pour une isolation efficace.
- Chiffrement des données à l'aide de KMS.
- Configuration de sous-réseaux privés pour limiter l'exposition des ressources.
- Utilisation de Systems Manager pour des connexions sécurisées en mode débogage, permettant la traçabilité des actions effectuées.
- Mise en place un pare-feu d'application web avec AWS WAF.
- Utilisation d'un CDN pour le trafic des objets statiques, garantissant ainsi une diffusion rapide et sécurisée du contenu.
Infrastructure multi-régions
Afin de réduire la latence dans certaines régions, nous avons conçu et développé un module terraform qui permet de provisionner facilement une partie de l'infrastructure dans une (ou plusieurs) nouvelle(s) région(s).
Lorsqu'une nouvelle région est ajoutée, une réplication partielle de l'infrastructure est automatiquement créée. Ce module déploie les composants essentiels nécessaires pour améliorer l'expérience du client final tout en contrôlant les coûts. Les éléments clés sont les suivants :
- Un read replica d'une base de données située dans la région principale.
- Une partie des API et serveur qui utilise cette base de données.
- Une mise à jour des DNS pour ajouter de nouvelles entrées en utilisant un routage DNS basé sur les latences.
Nous avons utilisé le service AWS Route 53 latency based routing pour les services DNS, qui route automatiquement les demandes vers le Loadbalancer le plus proche (voir le diagramme). Ainsi, quel que soit l'endroit où se trouve le client final, lorsque de nouvelles régions sont ajoutées, ses demandes sont routées vers la région qui répond le plus rapidement. Cela améliore l'expérience globale des utilisateurs de Weweb dans le monde entier, et ajoute également de la résilience (dans l'hypothèse d'une panne régionale).
Migration et accompagnement au changement
Dans le cadre de cette migration, une approche en plusieurs étapes ainsi qu’un accompagnement à la montée en compétence des équipes WeWeb ont été proposés.
L'approche par étape lors d'une migration vise à réduire les risques (financiers et de sécurité), à offrir de la flexibilité pour ajuster les directives techniques au besoin, et à faciliter une transition graduelle pour les équipes.
Les étapes de ce projet ont été les suivantes :
- Le build et les tests dans un environnement de développement. Nous avons commencé par initialiser les nouveaux environnements avec Terraform et mis en place le déploiement continu de cette infrastructure dans leur outil de gestion de versions (VCS).
- Déploiement sur environnement de staging et set up du monitoring.
- Mise en Production (MEP)
Les équipes WeWeb n'étant pas familières des services ECS et Terraform, des efforts importants ont été mis sur le transfert de compétence afin d’assurer la réussite du projet, la prise en main de l’infrastructure par WeWeb et leur autonomie sur le long terme.
Pour cela, nous avons initié le build sur l’environnement de dev, et par la suite les équipes WeWeb se sont chargées des déploiements sur l’environnement de Staging (répétition générale) puis de Production. Technofy restant en support technique lors des migrations de ces différents environnements.
A cela, se sont ajoutées des sessions de transfert de compétences lors de la phase 1 ainsi qu’une période de renforcement des compétences entre les phases 1 et 2 incluant des exercices pratiques sur des cas concrets de leur infrastructure.
Avantages
- Gain de temps et simplification de la gestion de l'infrastructure : La mise en œuvre de l'Infrastructure as Code (IaC) et des pipelines CI/CD réduit considérablement le temps et la complexité de la gestion de l'infrastructure IT en automatisant les processus de provisionnement, de mise à l'échelle et de déploiement.
- Disponibilité mondiale: Grâce au déploiement d'infrastructures multi-régions facilitées par le module Terraform, l'équipe WeWeb peut déployer de nouvelles régions en quelques clics seulement, garantissant une disponibilité élevée et un service fiable à ses clients à travers le monde.
- Scalabilité : ECS et ECS Autoscaling permettent d'ajuster automatiquement le nombre d'instances de conteneurs en fonction des charges de travail variables, assurant ainsi des performances optimales et une utilisation efficace des ressources.
- Réduction des coûts : Le provisionnement et la mise à l'échelle automatisés garantissent une utilisation efficace des ressources, éliminant le gaspillage et réduisant les dépenses opérationnelles. De plus, la capacité à reproduire rapidement les environnements et à rationaliser les processus grâce à l'automatisation réduit les interruptions de service et accélère les déploiements. Cette approche garantit que l'infrastructure reste à la fois économique et efficiente pour répondre aux exigences commerciales.
- Surveillance efficace : En exploitant des outils comme AWS CloudWatch, WeWeb surveille en continu les métriques système, les logs et les événements, permettant la détection et la résolution des problèmes de performance et des anomalies. Cette approche proactive de la surveillance améliore non seulement le temps de disponibilité et les performances, mais permet aussi d’optimiser l'utilisation des ressources.
- Une sécurité renforcée : En respectant les meilleures pratiques de sécurité, nous garantissons une protection robuste contre les menaces. Cela inclut l'intégration de politiques de sécurité dans l'IaC, l'automatisation des vérifications de sécurité dans les pipelines CI/CD, l'application de contrôles d'accès stricts et de la gestion des identités ou encore le service WAF. Ces mesures fournissent un environnement sécurisé et résilient, protégeant à la fois l'infrastructure et les données qu'elle gère.
Bilan
Marc - CTO WeWeb
L'équipe WeWeb a trouvé cette mission de transformation de notre infrastructure extrêmement enrichissante et efficace. Initialement, nos compétences en Terraform étaient limitées. Grâce au soutien et à la formation efficace dispensée par Technofy, nous avons pu rapidement monter en compétence sur ce sujet critique.
Technofy a su fournir des explications claires et gérer la transition de façon progressive, permettant ainsi à notre équipe de se familiariser sans difficulté avec la nouvelle infrastructure. Les solutions mises en place étaient adaptées à nos besoins en termes de scalabilité, de sécurité et de performance. De plus, cette collaboration a été positive sur le plan humain, la collaboration avec Technofy étant très agréable. Dans l’ensemble, nous sommes très satisfaits du déroulement et des résultats de ce projet. Nous abordons désormais la gestion et le déploiement de notre infrastructure sur AWS avec Terraform avec une confiance renouvelée.
.
Jérôme - Solution Architect Technofy
Un aspect particulièrement intéressant et stimulant du projet a été la mise en place d'une infrastructure multi-région. Nous avons eu l'opportunité de concevoir, tester et valider cette infrastructure en environnement de staging.
Pour le projet de migration en lui-même, les technologies que nous avons mises en place chez Weweb étaient assez similaires à celles utilisées chez nos précédents clients (ECS, Terraform etc), ce qui a minimisé les défis techniques majeurs. Cela nous a ainsi permis de concentrer nos efforts sur le transfert de compétences et l'accompagnement de l'équipe.
Ce projet a été une expérience enrichissante, tant sur le plan technique qu'humain et c'était un véritable plaisir d’accompagner l'équipe WeWeb.