De nos jours, les microservices sont devenus des incontournables de la distribution d'applications à grande échelle. Rapidité, coûts, facilité de mise à l'échelle ou encore efficacité, leurs avantages ne sont plus à présenter. Toutefois, le choix d'une architecture microservices ready est considéré comme un choix cornélien par les professionnels. En effet, il existe deux approches permettant de faire fonctionner les services ensemble : l'orchestration et la chorégraphie.
Architecture des microservices : la chorégraphie
On entend par chorégraphie des microservices, la distribution et la décentralisation des décisions et des interactions entre lesdits services. Elle repose généralement sur la diffusion des données ou évènements dans lesquels chaque service ayant besoin de ces données peut les utiliser. Dans une architecture de chorégraphie, il n'existe pas de cerveau centralisé, les services peuvent se comporter différemment en étant conscients de leurs missions.
Le principal avantage de cette architecture réside dans le fait qu'il vous permet d'ajouter et de supprimer des services sur votre solution sans que cela ait une incidence sur ses autres services. Cela permet également d'améliorer le travail avec les équipes de livraison Agile. En outre, la chorégraphie prend en charge les modèles CRUD et SAGA.
Cependant, cette architecture complique la maintenance, la gestion et le monitoring dans son ensemble puisque le processus métier est réparti sur plusieurs services. La gestion de la transaction, notamment autour de la gestion des erreurs et la restauration seront plus difficiles vu le caractère granulaire de ces transactions. Les entreprises doivent généralement passer par une période de changement de mentalité pour dompter cette architecture.
Architecture des microservices : l'orchestration
L'approche orchestration repose sur l'orchestrateur, un service centralisé qui prend les décisions sur chaque action.
Il a pour avantage une gestion du processus métier facilitée, depuis un emplacement central unique. Les services n'ont pas besoin d'intégrer de logique de décision. Ils peuvent réaliser une action et renvoyer la réponse. La surveillance et la maintenance sont plus faciles et les modèles ACID, SAGA et CQRS sont pris en charge.
Toutefois, les services sont couplés au service d'orchestration qui requiert des informations de connexion sur les services intégrés aux tâches demandeuses. Il est difficile de séparer le travail des différentes équipes de livraison Agile et le service centralisé peut être considéré comme un point de défaillance unique.

Un choix dicté par son utilisation
L'approche chorégraphique est idéale pour des systèmes ne nécessitant pas de validations au préalable, ni de requêtes ou de réponses synchrones. Elle est recommandée lorsque les systèmes ne requièrent pas de comportement de blocage du client. Par contre, l'approche d'orchestration est indiquée pour avoir des systèmes qui nécessitent une validation préalable, des requêtes et des réponses synchrones, soit l'exact contraire de l'usage de l'approche chorégraphique.
Comment choisir entre la chorégraphie et l'orchestration
Le bon choix doit être réalisé en fonction de la tâche à accomplir, même si d'autres facteurs comme l'échelle de l'organisation sont à considérer. Si votre application a besoin de mise à jour régulières ou de nouvelles fonctionnalités, la chorégraphie est la plus indiquée. Grâce à cette approche, les processus et les évènements ne sont pas interrompus. Si vous disposez d’un système centralisé où tout est interdépendant, réaliser des mises à jour régulières peut s’avérer difficile. Mieux vaut choisir l’orchestration lorsque les workflows sont complexes et que les microservices requièrent un certain niveau de coordination et de synchronisation.
Le choix est-il catégorique ou définitif ?
Si vous avez adopté une architecture pour une solution, cela ne signifie pas que vous devez en faire autant pour la prochaine. Dans l'idéal, vous devez être en mesure de choisir l'approche la plus rationnelle en fonction des spécificités de vos solutions. Il est également possible d'opter pour une architecture hybride, encore faut-il maitriser les deux architectures à la fois.
L'architecture hybride est la combinaison des deux approches. Elle utilise un service centralisé qui gère le processus et qui prend les décisions tout en assurant la communication entre les services par le biais d'évènements. Cette configuration déleste le système d’un point de défaillance unique tout en facilitant la gestion dans les workflow complexes, offrant ainsi plus de flexibilité.
En conclusion, quelle que soit l'approche suivie, voyez là comme une trame, sans pour autant vous y limiter. Il existe des cas d'utilisation parfaitement adaptés à chaque approche, aucun n'est meilleur que l'autre dans l’absolu.



