7. janvier 2021 de Jean-François Gonguet
Utiliser le moteur BPM de Camunda pour implémenter une architecture micro-services
Les architectures micro-services sont une tendance actuelle pour la transformation des systèmes d’information. L’apport principal est le découplage fort entre l’implémentation d’un micro-service et ses utilisations. Cela garantit une meilleure flexibilité dans l’évolution des applications.
Afin d’assurer ce découplage, on parle d’architectures “event-driven”. Et l’enjeu majeur est de mettre en place une mécanique garantissant les interactions entre les micro-services. On parle de chorégraphie de services.
La solution BPM de Camunda, dans son usage le plus connu et fréquent, permet de gérer le cycle de vie des instances de processus métier : on parle d’orchestration des processus.
Cet article présente comment cette même solution peut également permettre la chorégraphie de micro-services.
1 - Concepts de micro-service
En terme d’architecture des systèmes d’information, la stratégie actuelle visée par de nombreuses compagnies est de mettre en place une approche basée sur des micro-services.
Ce mouvement a pris en compte de nombreux enseignements sur l’architecture SOA (Service Oriented Architecture) et peut être considéré aujourd’hui comme la « SOA 2.0 ».
Sam Newman dans son ouvrage “Building Microservices” définit les micro-services comme “small, autonomous services that work together” :
- Small car le micro-service a un périmètre simple, clairement délimité et ne remplit qu’une fonction élémentaire
- Autonomous car le micro-service est accessible via une API indépendante du langage d’implémentation
- Work together car par essence, tout service peut interagir avec les autres
Un autre élément favorable à l’adoption d’une architecture basée sur des micro-services est sa prédisposition à la mise en place des principes CI/CD (Continuous Integration / Continuous Delivery) du fait du couplage faible entre les composants.
En terme d’exécution, un micro-service va émettre des événements lorsqu’un appel à d’autres services est requis et ces services vont réagir à ces événements, émettant eux-mêmes peut-être d’autres événements. L’ensemble de ces interactions définit la chorégraphie des services.
2 - Principes de base utilisés par Camunda pour la chorégraphie de micro-services
L’élément structurant pour la chorégraphie des services est la publication d’événements et leur interception, ceci avec consistance et intégrité (pas de perte de message et interception de chaque message de manière unique).
Si chaque micro-service est implémenté sous la forme d’un processus, modélisé avec la puissance du standard BPMN et piloté au sein d’un moteur BPM tel que Camunda le fournit, il est alors aisé :
1 - D’une part de définir, pour chaque micro-service quels sont les points d’entrée et quelle structure de message entrant est attendue,
2 - D’autre part, de définir quand et sous quelle condition tel ou tel événement doit être émis vers un autre service et d’émettre un message cohérent avec l’API du service ciblé,
3 - Et enfin, de définir quels sont les points d’attente, pour un micro-service donné, des réponses attendues
A titre d’exemple, voici une modélisation de 2 services mettant en lumière ces principes :
3 - Architecture d’exécution
Nous avons montré précédemment que bâtir des micro-services sur la base du moteur BPM de Camunda permettait d’exploiter efficacement les fonctions « event-driven » de BPMN. Le fait que ce même modèle puisse être facilement enrichi par les équipes IT afin de devenir exécutable est une garantie pour une grande flexibilité dans la prise en compte rapide d’un changement de structure du micro-service.
Pour que la chorégraphie des services puisse s’effectuer avec toutes les garanties d’intégrité et de consistance, nous allons pour cela nous appuyer sur 2 fonctions disponibles dans le moteur BPM de Camunda :
- Fonction de persistance : Tous les messages échangés sont stockés en base de données au sein d’une transaction définie par le modèle.
- Fonction de scheduling : Camunda s’assure que les contraintes temporelles définies dans le modèle, comme un délai d’attente, seront respectées à l’exécution.
En terme d’architecture d’exécution, plusieurs options sont possibles : disposer d’une instance du moteur BPM et y déployer les différents modèles des micro-services ou embarquer le moteur BPM dans des instances séparées et les faire communiquer via un bus de messages (broker de message tel que AMQ ou broker d’événement tel que Kafka).
Le schéma ci-dessous illustre une architecture d’exécution basée sur la seconde option :
4 - Conclusion
Si Camunda apporte sa principale valeur dans l’automatisation des processus d’entreprise, il peut aussi être utilisé dans la chorégraphie de micro-services. Le support du standard BPMN 2.0 proposé par Camunda permet de tirer parti des éléments propres à la modélisation basée sur des événements, ce qui simplifie notablement l’implémentation et la maintenance des micro-services.
adesso dispose de nombreux consultants métier et techniques qui échangent leurs expériences et leur savoir-faire au sein d’une « Community of Practice WorkAutomation » et qui sont prêts à mettre cette expertise au service de vos projets. N’hésitez pas à les contacter pour plus d’information.
Plus d'efficacité grâce à l'automatisation des processus
Experts du sujet, nous connaissons bien les défis relatifs aux processus, nous savons comment automatiser de façon durables et surtout, nous comprenons tous les avantages que cela peut apporter aux entreprises.
Sur notre page dédiée à l'automatisation des processus, apprenez-en plus sur le sujet, téléchargez notre livre blanc, découvrez nos Success Stories, et bien plus encore.