- Fonctionnalités
- Pricing

Ce blog est basé sur la présentation de Haylee Millar lors de la conférence Symfony 2024. Haley est ingénieure produit chez Upsun. Nous avons utilisé des outils d'IA pour la transcription et pour améliorer la structure et la clarté du contenu.
Face à un système vieillissant qui nécessite de nouvelles fonctionnalités, de nombreuses équipes de développement se trouvent à la croisée des chemins. Faut-il corriger l'ancien système et prendre le risque d'une dette technique, ou faut-il se lancer dans l'architecture microservices ? Voici l'histoire d'une équipe qui a pris cette décision et ce qu'elle a appris en cours de route.
Un microservice est un service indépendant qui communique avec d'autres services via des API. Chaque service est faiblement couplé et peut être construit, déployé et mis à l'échelle de manière autonome. Il n'est pas nécessaire qu'il dispose d'une base de données, mais c'est souvent le cas. La clé réside dans la séparation, qui permet de modifier un service sans avoir à modifier l'ensemble de l'application.
Pensez-y comme à la cuisine d'un restaurant. Dans une approche monolithique, un seul chef s'occupe de tout : les entrées, les plats principaux, les desserts et les boissons. Avec les microservices, vous disposez de postes spécialisés : un chef salade, un maître grilladin, un chef pâtissier et un barman, chacun expert dans son domaine, mais coordonnant leurs efforts pour servir des repas complets.
Les microservices peuvent être une solution appropriée lorsque plusieurs équipes ont besoin d'autonomie, lorsque différentes fonctionnalités évoluent à des vitesses variables et lorsque vous avez besoin d'un développement, d'un déploiement et d'une mise à l'échelle indépendants pour des parties spécifiques de l'application. Ils ne sont pas la seule réponse. Il existe généralement plusieurs façons de résoudre un problème. Choisissez l'approche qui correspond le mieux à vos besoins et à vos contraintes.
Notre équipe est responsable de la gestion des comptes. Nous gérions un site interne basé sur un monolithe Drupal. Nous avions prévu de le retirer, mais nous avions un problème immédiat à résoudre : l'utilisation abusive du produit par les utilisateurs.
Nous aurions pu ajouter de nouvelles fonctionnalités anti-abus à l'application Drupal. Nous avons choisi de ne pas le faire. Raisons :
Nous avons proposé un nouveau microservice pour mettre en œuvre une logique anti-abus. Cette solution a remporté l'adhésion générale lors de nos discussions.
Nous avons créé un microservice Symfony appelé Know Your Customer (KYC). KYC vérifie l'identité et le risque des clients. Nous avons délibérément commencé à petite échelle afin de pouvoir livrer rapidement et apprendre.
Nous nous sommes concentrés sur cinq éléments fondamentaux :
Nous avons clairement défini les responsabilités. Le KYC calculait un score, mais ne décidait pas de limiter les ressources. Notre service de comptabilité récupérait le score KYC et décidait de poursuivre ou d'interrompre l'action d'un utilisateur.
À partir de la version 1.7, nous avons ajouté Symfony Messenger pour synchroniser les scores IP à partir d'un service externe.
Nous avons hébergé le service sur notre plateforme, car nous sommes une entreprise de plateforme en tant que service. Pour les équipes curieuses de déployer Symfony, nous avons montré comment configurer une application de démonstration à l'aide de la ligne de commande Symfony et comment initialiser un projet existant, ajouter les fichiers nécessaires et le déployer.
Nous avons finalisé la conception du KYC en juin 2022. Il a fallu environ six mois pour le mettre en œuvre après que les parties prenantes se soient mises d'accord. Depuis lors, nous avons maintenu un rythme de publication régulier. Au moment de la présentation, nous en étions à la version 2.23.
Ce qui a changé entre les versions 1.0 et 2.23 :
Quels outils ont été les plus utiles pour les microservices ?
Le choix de Symfony a été la meilleure décision. Il est léger et modulaire, et nous sommes déjà familiarisés avec PHP. Les bundles nous ont fourni les éléments de base dont nous avions besoin sans nécessiter d'outils personnalisés lourds.
Avez-vous versionné vos points de terminaison API, tels que /v1 et /v2 ?
Nous ne l'avons pas fait jusqu'à présent, mais c'est une bonne idée à envisager.
Comment avez-vous géré la confidentialité ?
Nous évitons de stocker des données personnelles dans KYC lorsque cela n'est pas nécessaire. À la place, nous utilisons des identifiants uniques pour rechercher des informations personnelles dans le service de comptes lorsque cela est nécessaire. Lors de la synchronisation, nous veillons à ne transférer que ce qui est nécessaire.
Partagez-vous du code entre les projets Symfony ?
Pas pour l'instant. Nous avons commencé simplement avec les bundles standard. Le partage de paquets pourrait s'avérer utile plus tard si le besoin s'en fait sentir.
Qu'en est-il du monolithe Drupal ?
Il existe toujours. Nous avançons par étapes. Il n'est pas possible de tout réécrire d'un seul coup. Nous séparons les différentes parties et les réimplémentons de manière plus modulaire. Dans la mesure du possible, nous recherchons des produits existants plutôt que de tout développer à partir de zéro.
Comment avez-vous géré la synchronisation des services externes et la disponibilité ? Le principal défi
consistait à maintenir les données des utilisateurs à jour. Nous avons ajouté une logique de rafraîchissement et veillé à ce que les scores soient calculés dès la création des comptes. Nous utilisons un worker de synchronisation et un chemin asynchrone en arrière-plan, ce qui nous permet de faire face lorsqu'un score n'est pas disponible immédiatement.
Les microservices ne sont pas magiques. Ils constituent un moyen d'accélérer le processus lorsque les équipes ont besoin d'autonomie et que certaines parties de votre système évoluent à des rythmes différents. Pour nous, le fait de scinder le KYC en microservice nous a permis de déployer rapidement des fonctionnalités anti-abus, de maintenir notre stack à jour et d'éviter d'alourdir un monolithe que nous prévoyons de retirer.
Join our monthly newsletter
Compliant and validated