Je suis confus quant au moment où une application Web divise en microservices - est-ce au niveau de l'URL ou des modèles? Par exemple, supposons que j'ai une application monolithique de 3 pages. Supposons que chaque page serve un cas d'utilisation distinct et que je souhaite les sauvegarder avec leurs propres microservices. Maintenant, quelle est la bonne façon de mettre en œuvre une architecture basée sur microservice:
Vous avez du mal à modeler vos microservices.
En ce qui concerne les microservices, la deuxième approche est la plus appropriée, car elle expose sa logique via l’API.
Toujours lorsque vous modélisez vos microservices, gardez à l’esprit les faits suivants.
Couplage lâche : Lorsque des services sont couplés de manière lâche, un changement de service ne devrait pas nécessiter de changement de service. L’intérêt de ce système de microservices est de pouvoir modifier un service et de le déployer, indépendamment du besoin de modifier une autre partie du système. C'est vraiment très important.
Cohésion forte : Nous souhaitons que les comportements liés coexistent et que les comportements sans relation coexistent ailleurs. Pourquoi? Eh bien, si nous voulons changer de comportement, nous voulons pouvoir le changer en un seul endroit et publier ce changement le plus rapidement possible.
Comme d'habitude en génie logiciel, la réponse est que cela dépend. Je ne peux pas imaginer de raison pour l'instant, mais l'option 1 pourrait être utile dans certains cas de figure.
Cependant, compte tenu de la définition formelle de microservices, l'option 2 l'illustre mieux. L'un des principaux avantages des microservices est de pouvoir les réutiliser. Différentes applications ont des exigences et des besoins différents pour la présentation des informations. Faire en sorte que vos microservices renvoient une représentation JSON de vos données vous donnera plus de souplesse pour formater ces informations.
Modèle de passerelle Api de Microservice apigateway est le premier point à partir duquel vous pouvez commencer à distribuer ou à transférer les appels vers différents services.
Nous mettons actuellement en œuvre une architecture similaire à votre deuxième option. Nous avons rencontré les complexités suivantes en le faisant: (n'hésitez pas à laisser quiconque y répondre car c'est encore un travail en cours)
La passerelle API présente également certains inconvénients. C'est un autre composant hautement disponible qui doit être développé, déployé et géré. Il existe également un risque que l'API Gateway devienne un goulot d'étranglement pour le développement. Les développeurs doivent mettre à jour la passerelle API afin d’exposer les points de terminaison de chaque microservice. Il est important que le processus de mise à jour de la passerelle API soit aussi léger que possible. Sinon, les développeurs seront obligés d'attendre en ligne pour mettre à jour la passerelle. Malgré ces inconvénients, toutefois, pour la plupart des applications du monde réel, il est logique d'utiliser une passerelle API.