Académique Documents
Professionnel Documents
Culture Documents
MuleSoft Best Practices For Microservices Whitepaper FR-FR
MuleSoft Best Practices For Microservices Whitepaper FR-FR
Bonnes pratiques
en matière de
microservices
Jeter les bases d'une innovation continue
1
Sommaire
Synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Microservices et monolithes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Résumé .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
À propos de MuleSoft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3
Synthèse
4
sur un marché en constante évolution et de créer de nouvelles
expériences clients dans de nouveaux contextes, en utilisant
de nouvelles technologies. Pour façonner des expériences
clients innovantes, votre entreprise a besoin que son équipe
IT lui fournisse des ressources digitales sous la forme de
fonctionnalités métiers clés capables de lui apporter une réelle
valeur dans des contextes multiples. C'est ainsi que l'IT peut
devenir l'allié des objectifs stratégiques de votre entreprise.
Les organisations qui ont réussi à jeter les bases d'une
innovation continue et d'une approche agile ont adopté des
architectures microservices pour répondre rapidement aux
innombrables exigences de leur activité.
5
Les microservices, pour quoi faire ?
6
Avantages pour l'entreprise
7
évolutions en transformant ses ressources digitales existantes
en nouvelles capacités métiers.
Votre entreprise peut proposer une logique de solution de
manière décentralisée en standardisant des contrats de
microservices sous la forme d'APIs. Plusieurs équipes de
différents secteurs peuvent mettre en œuvre des services
avec leur propre choix de technologies, tout en restant en
adéquation avec les objectifs de l'entreprise. Cela illustre
l'évolution du rôle de l'IT, qui passe de fournisseur à partenaire,
pour permettre aux équipes des différents segments d'activité
d'adapter les fonctionnalités clés conçues par l'équipe centrale
à leurs besoins spécifiques.
Les microservices sont nativement capables de communiquer
entre eux grâce à l'adoption, à l'échelle du secteur, de normes
comme le HTTP et le JSON. En d'autres termes, ils sont
intrinsèquement interopérables. Ils facilitent ainsi l'échange
d'informations indépendamment de la façon dont ils ont été
mis en œuvre, car leur interface est définie selon des normes
qui existent déjà à l'échelle du secteur et qui sont également
définies par les équipes de votre organisation.
Votre entreprise peut sélectionner les meilleurs produits et
plateformes de fournisseurs grâce à l'interopérabilité offerte par
les interfaces standardisées. Pour la même raison, vos équipes
peuvent également choisir les meilleures technologies pour
implémenter les microservices avec une approche polyglotte
du développement.
8
Les microservices, qu'est-ce que c'est ?
Modes d'utilisation
Le plus souvent, les microservices sont directement invoqués
par des appels d'API HTTP REST. Des normes comme le
RAML (Restful API Modelling Language) permettent de définir
formellement les APIs REST. Le RAML peut définir chaque
ressource et opération exposée par le microservice. C'est
une norme du secteur qui a gagné en popularité, car il s'agit
d'une approche simplifiée de la définition et de la publication
d'interfaces de microservices.
9
Lorsque les microservices contribuent à la réalisation d'une
transaction ou d'un processus métier complexe, une approche
axée sur les événements est également adoptée. L'idée est
que le microservice s'abonne aux événements de domaine
métier qui sont transmis à un agent, de messages. Les normes
comme JMS et AMQP dominent les principales technologies
des agents du secteur. L'utilisation d'un agent de messages
dans l'invocation du microservice renforce la fiabilité du
modèle d'utilisation. Même si le microservice s'est abonné à
une file d'attente, une rubrique ou un échange en arrêt de
fonctionnement au moment de la publication de l'événement,
le paradigme de messagerie garantit la réception du message
par le microservice une fois la connexion rétablie.
La composition des microservices est réalisée avec un
mélange d'appels directs via HTTP et d'appels indirects via
un agent de messages.
API-led Connectivity
Au regard de la conviction selon laquelle la conception d'une
capacité métier adaptable vaut beaucoup mieux que celle
d'une intégration tactique point à point, l'IT doit s'efforcer de
fournir des ressources accessibles via une invocation d'API et
un abonnement aux événements de domaine, et capables de
générer de la valeur pour l'entreprise dans divers contextes.
10
Conception
d'app.
APIs d'expérience
(APIs conçues spécifiquement pour les applications)
Segment
Dév./IT
APIs de processus
(orchestration, APIs composables, microservices)
IT central
APIs système
(modernisation des systèmes legacy, connectivité aux applications SaaS, services Web & APIs RESTful)
Accessibilité et
propriété
Passerelle d'API
Les APIs système et de processus doivent être adaptées et
exposées en fonction des besoins de chaque canal d'affaires et
de chaque point de contact digital. L'adaptation est déterminée
par l'expérience digitale souhaitée : c'est ce que nous appelons
l' « API d'expérience ». Parfois, l'adaptation de l'API est motivée
11
par des raisons techniques : un mécanisme de sécurité
particulier peut être nécessaire sur un canal donné ; les types
de canaux peuvent varier énormément, tout comme le mobile,
le Web et les appareils ; la composition de plusieurs APIs
peut s'avérer nécessaire en fonction du modèle de services
back-end destinés à l'approche front-end. Dans d'autres
contextes, les divergences métiers doivent être satisfaites
avec des adaptations qui prennent en compte les exigences
particulières de différents groupes d'utilisateurs comme les
collaborateurs, les clients et les partenaires.
Dans tous ces cas de figure, l’approche de la passerelle d’API
est pertinente, car c’est ainsi que les compositions d’APIs et les
proxys sont déployés. La gestion des APIs facilite l'application
administrative d'une logique récurrente, comme la sécurité,
la limite de charge, l'audit et le filtrage des données vers les
APIs d'expérience sur la passerelle. L'utilisation de la gestion
des APIs pour appliquer des stratégies intégrant une logique
sur mesure accélère et facilite dans une certaine mesure
l'adaptation des APIs de système et de processus.
12
Le « micro » des microservices
Champ de responsabilité
Parmi les microservices, le plus évident des candidats est une
entité métier identifiable instantanément du point de vue d'un
processus ou d'une transaction métier. Un client constitue un
exemple d'une telle entité. Il s'agit d'une entité métier qui peut
être pertinente dans un certain nombre de contextes, tant au
niveau de la couche processus que de la couche expérience.
La responsabilité ne se limite pas à une simple transmission de
données. Un microservice ne doit pas être réduit à un simple
service CRUD. Chaque entité englobe toutes les responsabilités
associées au domaine métier pour lequel elle a été conçue.
Tout cela va de pair avec une limitation délibérée du champ de
responsabilité. « Discret » est l'interprétation la plus sensée du
préfixe « micro » au regard du champ de responsabilité. Cela
contribue à garantir que le microservice de niveau système
n'assume aucune responsabilité qui se rapporterait plus
adéquatement à un microservice de niveau processus métier.
Les microservices de niveau système sont indépendants de
tout processus métier particulier et peuvent donc être utilisés
dans plusieurs compositions.
Le champ d'un processus métier doit également être
appréhendé. Certains sous-domaines exécutent leurs
propres processus métiers locaux (l'expédition, par exemple).
Un microservice de niveau système peut être adapté à une
utilisation dans plusieurs processus au sein du domaine
d'expédition. Chaque fois que sa fonctionnalité est requise
en dehors du domaine, il peut être adapté à ce besoin avec
un microservice de niveau expérience. Il existe évidemment
des processus métiers, généralement orientés client,
qui traversent plusieurs domaines. La règle est alors de
13
composer plusieurs microservices adaptés à cette utilisation
dans les APIs d'expérience.
Simplicité de déploiement
Les coûts, de la fourniture à la production, sont
significativement réduits par l'association de petites équipes
qui disposent d'une propriété complète, d'une responsabilité
distincte par rapport au microservice, et de l'infrastructure qui
facilite une production continue.
15
Fondamentaux de la conception
de microservices
Réutilisation
La réutilisation est et reste un principe de conception clé des
microservices. Néanmoins, le champ de réutilisation a été réduit
à des domaines d'activité spécifiques. Les efforts déployés pour
concevoir cette réutilisation, qui, dans les premiers temps du
SOA, incluaient des efforts inutiles visant à concevoir des modèles
canoniques à l'échelle de l'entreprise, étaient stériles car trop
ambitieux. Reste que le modèle canonique, dans son acception
limitée, peut présenter certains avantages. Tout comme la
réutilisation qu'il facilite, sa portée a été restreinte. Avec l'approche
de « réutilisation basée sur le mérite », un modèle émergent est
privilégié par rapport à une méthode prédéterminée. Les équipes
peuvent convenir de modèles de communication pour déterminer
comment adapter les microservices à une utilisation en dehors des
contextes dans lesquels ils ont été conçus. Un hub de collaboration
comme Anypoint Exchange encourage la réutilisation basée sur le
mérite par le biais de commentaires, d'évaluations, etc. Si une API de
microservices existante ne convient pas à votre domaine ou à votre
« groupe métier », peut-être est-il préférable de concevoir un autre
microservice adapté.
16
une utilisation dans des contextes multiples. Un même service
peut fournir ses fonctionnalités à plusieurs processus métiers
ou sur différents canaux d'affaires ou points de contact digitaux.
Les dépendances entre les services et leurs utilisateurs sont
minimisées par l'application du principe de couplage lâche.
En standardisant les contrats comme formulé par les APIs
orientées métiers, les consommateurs ne sont pas touchés
par les modifications apportées à l'implémentation du
service. Cela permet aux propriétaires de services de modifier
l'implémentation et de stopper ou modifier les systèmes de
référence, voire les compositions de services qui peuvent
sous-tendre l'interface, puis de les remplacer sans la moindre
incidence en aval.
L'autonomie est une mesure de contrôle présente sur
l'environnement d'exécution et le schéma de base de données
de l'implémentation du service. Elle améliore la performance
et la fiabilité du service et donne aux consommateurs plus de
garanties quant à la qualité du service qu'ils peuvent attendre.
Sans état et autonome, le service s'en trouvera également
globalement plus disponible et évolutif.
Chaque service est nécessairement tolérant aux pannes, de
façon à minimiser l'impact des défaillances du côté des services
avec lesquels il collabore sur son propre SLA. Les services,
du fait de leur indépendance, ont la possibilité de couper la
communication avec un service défaillant. Cette technique du
« disjoncteur » est inspirée du composant électrique éponyme
et empêche la propagation des pannes de service individuels à
travers le système distribué.
Tous ces principes de conception contribuent au principe de
composabilité qui permet au service d'apporter de la valeur à
l'entreprise dans différents contextes. Sa composition avec
d'autres services, qui vise à former un nouvel agrégat de
services, constitue effectivement la nouvelle approche du
développement d'applications.
17
L'objectif de la détectabilité est de communiquer à toutes les
parties concernées une compréhension claire de la finalité
métier et de l'interface technique du microservice. Ainsi, le
service doit être publié de sorte que les développeurs du
logiciel client disposent de tout ce dont ils ont besoin pour
l'utiliser facilement.
18
Orientation domaine métier de
l'architecture microservices
19
API Suivi de
Service clients Commandes
Expédition
APIs d'expérience
APIs
d'expérience API Expédition
API d'inscription en API Mon profil API Mes achats
Expédition
API Inscription de commandes de processus
API Catalogue
API APIs
API API Client Recommandations API Client API Commandes
système
API Tokenization
Finances
APIs d'expérience
API Facturation
Agent de
messages
20
Microservices et monolithes
21
plateforme de développement utilisée pour la mise en
œuvre du monolithe.
›› Le scaling d'applications monolithiques peut être difficile.
Il est généralement impossible d'identifier et d'ajuster des
aspects spécifiques d'une fonctionnalité applicative pour
mieux isoler d'autres aspects, car toutes les fonctionnalités
sont regroupées dans un même artefact de déploiement.
Le scaling d'applications monolithiques ne se fait
généralement pas en « temps réel ».
›› On atteint rarement l'agilité opérationnelle en déployant de
manière répétée des artefacts d'application monolithiques.
Si l'automatisation opérationnelle peut atténuer la plupart
des lourdeurs manuelles du déploiement de ces applica-
tions, par exemple en automatisant le provisionnement des
machines virtuelles ou en configurant automatiquement les
périphériques réseau, il arrive toujours un moment où les
développeurs sont bloqués parce que l'équipe d'exploita-
tion attend que ces activités se produisent. Dans le pire des
cas, lorsque l'automatisation n'est pas en place, les dével-
oppeurs et les opérateurs subissent une énorme pression
chaque fois qu'un déploiement échoue ou qu'un problème
de production survient.
›› Par définition, les applications monolithiques sont
implémentées à l'aide d'une pile de développement unique
(par exemple, JEE ou .NET). En plus de limiter la réutilisation
pour les applications qui ne sont pas implémentées sur
cette pile, elles suppriment également la possibilité d'utiliser
« le bon outil pour le job ». Par exemple, l'implémentation
d'une petite portion d'une application JEE avec Golang
serait difficile dans une application monolithique.
Associée à des technologies de déploiement cloud, de gestion
des APIs et d'intégration, une architecture microservices
offre une approche alternative au développement de logiciels
évitant le développement d'applications monolithiques. Le
monolithe, pour sa part, est plutôt « décomposé » en un
22
ensemble de services indépendants développés, déployés et
entretenus séparément. Cette façon de procéder présente les
avantages suivants :
›› Des services de plus petite taille sont encouragés.
Idéalement, ils sont conçus par une poignée de
développeurs « que deux boîtes à pizza suffiraient à
nourrir », pour reprendre l'expression de Jeff Bezos. Cela
signifie qu'un petit groupe, voire un développeur unique,
peut comprendre l'intégralité d'un microservice unique.
›› Si les microservices exposent leurs interfaces avec un
protocole standard, comme une API RESTful ou un échange
23
AMQP, ils peuvent être utilisés et réutilisés par d'autres
services et applications sans couplage direct via des liaisons
de langage ou des bibliothèques partagées. Les registres de
services peuvent faciliter la découverte de ces services par
d'autres groupes.
›› Les services existent en tant qu'artefacts de déploiement
autonomes et peuvent évoluer indépendamment des
autres services.
›› Le développement discret des services permet aux
développeurs d'utiliser le framework de développement
approprié pour la tâche en cours. Les services s'associant
à d'autres services dans une API composite, par exemple,
peuvent être plus rapides à implémenter avec MuleSoft
qu'avec .NET ou JEE.
L'inconvénient d'une telle souplesse est la complexité. La
gestion d'une multitude de services distribués à grande échelle
n'est pas chose facile :
›› Les équipes de projet doivent pouvoir découvrir facilement
le potentiel de réutilisation des services. Ces services
doivent s'accompagner d'une documentation, de consoles
de test, etc., afin qu'il soit beaucoup plus facile de recourir à
la réutilisation que de repartir de zéro.
›› les interdépendances entre les services doivent être
étroitement surveillées. Les temps d'arrêt des services,
les pannes de services, les mises à niveau de services, etc.
peuvent tous avoir des effets en cascade en aval et un tel
impact doit être analysé de manière proactive.
Le cycle de vie des services SDLC doit être hautement
automatisé. Cela requiert des technologies, comme des
technologies d'automatisation de déploiement et des
frameworks CI, mais surtout de la discipline de la part des
développeurs et des équipes opérationnelles.
24
Modèles d'implémentation
des microservices
Sourcing d'événements
Le principe d'autonomisation de la conception de
microservices exige que chaque microservice possède
son propre magasin de données. Le partage de bases de
données est évité. Cela devient problématique lorsque l'on
considère notre approche du point de vue de l'automatisation
d'une transaction métier. Nous avons recommandé des
microservices de type processus métier dont la responsabilité
est de composer des microservices de type système à
travers l'orchestration et la chorégraphie. Naturellement,
l'échange d'informations pour toute transaction métier est
25
relié, mais chaque microservice système joue son rôle dans la
collaboration, indépendamment du reste. L'état final de toute
la composition doit préserver la cohérence des données.
Le secteur s'éloigne des transactions distribuées pour
résoudre ce problème. Ainsi, on constate que le fait que
chaque microservice possède son propre magasin de données
pour, en fin de compte, présenter les mêmes informations
à un niveau supérieur, peut à tout moment entraîner une
incompatibilité. On observe surtout ce phénomène avec
une approche axée sur les événements de domaine dans
laquelle les microservices collaborant dans une chorégraphie
fonctionnent de manière asynchrone, mus par des événements
de domaine transmis à un agent de messages. Ici, la cohérence
finale est la clé. Lorsque chaque microservice a terminé son
travail, l'ensemble du système se trouve dans un état cohérent.
Cela donne lieu à un modèle émergent dans lequel les
changements d'état sont stockés en tant qu'événements
métiers journalisés. L'état actuel est connu non pas en
récupérant des données depuis un magasin, mais en
parcourant l'historique des événements métiers et en le
calculant à la volée.
26
Des cycles courts de mise sur le marché, des retours rapides
sur les défauts de conception et des systèmes de déploiement
automatisés sont essentiels à la mise en œuvre d'une
production continue.
27
Il est impératif que vous puissiez facilement gérer vos
microservices d'une manière simplifiant leur accès en libre-
service dans tous les segments d'activité de votre entreprise.
La gestion des APIs représente l'évolution de la gouvernance
des services qui vous permet de réaliser ce qui suit :
›› Publiez vos APIs afin que les développeurs de logiciels
qui les utilisent disposent de tout ce dont ils ont besoin
pour répondre à leurs besoins en libre-service et
comprennent clairement l'objectif, la portée et l'interface de
votre microservice.
›› Personnalisez vos APIs grâce à des stratégies de logique
injectables couvrant la sécurité, la qualité de service, l'audit,
le filtrage dynamique des données, etc.
›› Surveiller vos APIs de façon à pouvoir prendre des
décisions stratégiques en matière d'évolutivité en fonction
des niveaux de trafic et jauger l'impact de vos ressources.
›› Adaptez vos APIs aux besoins spécifiques des différents
segments d'activité afin que la gestion des APIs devienne un
exercice décentralisé ou fédéré opéré par une coopération
entre les segments d'activité et le département IT central.
28
Les microservices sur Anypoint Platform
Anypoint Connectors
29
Cycle de vie de bout en bout des microservices
MuleSoft adopte une approche holistique des microservices.
Contrairement aux applications traditionnelles, le
développement de microservices idéal commence par une
approche top-down axée sur les APIs. Autrement dit, il existe
des étapes supplémentaires par rapport aux cycles de
développement de logiciels (SDLC) traditionnels.
Par exemple, l'aspect de la conception est généralement un
processus itératif qui comprend :
›› La modélisation de votre API à l'aide de spécifications
standard comme le RAML.
›› Il est généralement souhaitable de simuler vos
caractéristiques à l'aide d'un terminal d'API fictif vous
permettant de solliciter les retours des utilisateurs
de votre API.
›› Il convient également de valider le tout par rapport
à du code réel pour appréhender au mieux l'API et
fournir des retours.
›› Une fois la conception de l'API ratifiée, vous devez la
construire à l'aide de votre langage préféré, avec du code
qui inclut une logique métier et une connectivité aux
systèmes back-end appropriés.
›› Créez ensuite des scripts de test si vous suivez l'approche
recommandée de conception pilotée par les tests.
›› Une fois le microservice déployé, vous souhaitez
généralement publier la documentation de votre API à
l'aide d'un portail utile pour attirer et fidéliser les
utilisateurs de votre microservice.
›› Enfin, lors de la mise en œuvre, vous avez besoin de gérer
le runtime du microservice, ainsi que ses APIs (par exemple,
appliquer des stratégies de sécurité et de throttling) et
d'obtenir des données analytiques d'utilisation concernant
30
votre microservice. Les analyses peuvent être utilisées à des
fins de gestion/suivi ou de mesure et de rétrofacturation.
N O
TIT
Anypoint Exchange
DAA
LLI ID
MOSDÉL
VVAA
Mocking Service
IMUISA
LATTIO
Anypoint Analytics CO
ONE
IT NDC
EEPS
UTA
EN
ÉECR TIIG
ON
EXP N
O API Designer
MAEL
HÉ D
SC M O
Anypoint Exchange
SHN
LITIO
BLBICA
CRÉATION
Anypoint Studio
BUILD
PU
PU
API Portal
Anypoint Exchange
MA
GE
AG T
ST
ES
SN
TTE
TI
E
ON
31
Cet outil génère en outre un service bouchon déployé sur
CloudHub, le tout automatiquement. Cela vous offre le luxe
de permettre à l'équipe responsable du développement
des logiciels consommateurs de créer le code par rapport
à l'implémentation factice, parallèlement à l'équipe qui doit
implémenter le véritable microservice. L'équipe responsable de
la conception du logiciel consommateur peut ainsi présenter
son travail avant même que le microservice ne soit développé.
32
À propos de MuleSoft, une société Salesforce
MuleSoft est une marque déposée de MuleSoft LLC, une société Salesforce.
Toutes les autres marques sont celles de leurs propriétaires respectifs.
33