Quand souhaitez-vous choisir des modules OSGI plutôt que des micro-services et puis-je faire quelque chose avec des micro-services que je ne peux pas faire avec des modules OSGI?
OSGi et microservices partagent le même style architectural mais diffèrent par leur granularité. Nous avions l'habitude d'appeler les microservices des services OSGi jusqu'à ce que le Web vole ce nom. Nous les appelons maintenant parfois nanoservices.
Le principe des (micro | nano) services est de tunneler les communications entre les modules via un gate avec un bien défini API . Puisqu'une API est, ou du moins devrait être, indépendante des implémentations, vous pouvez modifier un module sans affecter les autres modules. L'un des avantages les plus importants est que les conceptions de systèmes même de grande taille peuvent rester compréhensibles lorsque l'on regarde le diagramme de service. D'une certaine manière, une conception basée sur les services capture l'essence du système, laissant les détails pour les modules.
Avec les services Web/micro, le gate est un point de terminaison de communication (hôte: port par exemple) et un protocole (REST par exemple). L'API est définie de manière informelle ou avec quelque chose comme Swagger/OpenAPI ou SOAP.
OSGi définit un (nano) service comme un objet mis à la disposition d'autres modules (bundles) à utiliser. Java est utilisé pour définir l'API.
Étant donné que les nanoservices sont la primitive de conception la plus importante d'OSGi, il y a beaucoup de support pour les rendre faciles à utiliser. Fait intéressant, étant donné que le registre de services est dynamique et réfléchi, il est assez simple de mapper un nanoservice à un microservice et vice versa. L'OSGi Alliance a normalisé cela dans son modèle pour OSGi distribué, le "Remote Service Admin". Cette spécification vous permet de prendre un nanoservice OSGi et de le mapper avec REST, SOAP ou d'autres protocoles.
Par conséquent, le choix d'OSGi vous permet non seulement de reporter la décision de prendre en charge les microservices, mais également d'ajouter des microservices à votre système par la suite. Le fait d'avoir un style architectural unifié pour les fonctions les plus élémentaires ainsi que les fonctions de plus haut niveau rend les systèmes plus faciles à comprendre et à mettre à l'échelle.
Je ne pense pas que vous compariez des pommes à des pommes ici. OSGI
est une architecture d'application , tandis que microservices
est un système distribué concept.
D'après mon expérience, les microservices offrent un certain nombre d'avantages:
Cependant, ils présentent également certains inconvénients:
Il y a un bon article décrivant certaines des différences ici .