web-dev-qa-db-fra.com

Quelle est la vraie différence entre une API et un microservice?

J'apprends les microservices et je ne comprends pas quelle est la vraie différence entre créer un REST API et en créant microservices?
Je travaille dans Go, mais ma question s'applique à toutes les langues.

13
fm433403

L'approche des microservices consiste à diviser votre système ("pile de code") en de nombreux petits services, chacun ayant généralement ses propres:

  • Responsabilité claire liée aux affaires
  • Processus en cours
  • Base de données
  • Référentiel de contrôle de version de code (par exemple git)
  • [~ # ~] api [~ # ~] (le protocole par lequel les autres services/clients contacteront le microservice)
  • UI

Les services eux-mêmes sont maintenus petits afin que votre système se développe, il y a plus de services - plutôt que des services plus importants.

Les microservices peuvent utiliser REST, RPC ou toute autre méthode pour communiquer entre eux, donc REST ou une API est vraiment orthogonale au sujet des microservices ...

Référence: Qu'est-ce qu'une API? En anglais, s'il vous plaît.

12
Lior Bar-On

API = Interface de programmation d'application

Microservices = ne architecture

En bref

  • Le microservice doit exposer une API bien définie.
  • Le microservice est la façon dont vous pouvez concevoir votre solution
  • L'API est ce que voient vos consommateurs.
  • Vous pouvez exposer l'API sans microservices dans le backend (en fait, la plupart des scénarios sans formation ne nécessitent pas de microservices).

Vous voudrez peut-être lire http://samnewman.io/books/building_microservices/ avant de décider d'utiliser des microservices (sauf si c'est à des fins de formation).

7
Lech Migdal

La majorité des réponses est basée sur la compréhension à l'ancienne de l'API en tant qu'interface programmatique. De nos jours, ce sens est fondu et commence à dérouter les gens car certains développeurs ont commencé (pour simplifier ou par erreur) à interpréter l'API d'une application comme l'application en soi. Dans ce cas, il est impossible de faire la distinction entre l'API moderne et les microservices. Néanmoins, nous pouvons dire qu'une application API peut comprendre de nombreux microservices, dont la plupart interagissent au sein de l'application via les API de Microservice tandis que d'autres peuvent exposer leurs API en tant qu'API d'applications. En outre, un microservice (en tant que service) peut ne pas inclure d'autres microservices (services), mais peut orchestrer une composition de microservices via des appels de bases d'API. Les applications peuvent contenir des microservices mais, dans les meilleures pratiques, ne peuvent pas contenir d'autres applications.

2
Michael Poulin

Microservice est bien défini lorsque vous suivez SOC - séparation des préoccupations au niveau de l'entité/domaine, où chaque entité/domaine est indépendant de tout autre service.

par exemple le service utilisateur sera uniquement responsable du stockage, de la mise à jour et de la suppression des informations relatives à l'utilisateur.

backend et frontend du microservice le microservice peut en outre être divisé en 2 parties

  1. microservice frontal qui expose le point de terminaison de repos comme API Web
  2. microservice backend qui effectue toutes les opérations.

Rest API est davantage de points de terminaison exposés au monde extérieur et peut également être utilisé avec des microservices, comme expliqué ci-dessus.

2
Vijay Parmar

Microservices

Une architecture de microservice consiste à découper une logique d'application en petits morceaux ou "composants" qui peuvent agir entre eux et/ou être exposés via une API.

API

Une application (Web) doit concevoir la logique métier avec l'ensemble des entités objet (modèle) et les opérations possibles sur elles. Une (Application Programming Interface] [ https://en.wikipedia.org/wiki/Application_programming_interface ) est un moyen de faire des requêtes à une application en exposant des points d'entrée spécifiques qui sont chargés d'invoquer les opérations d'application appropriées.

REST (ful) APIs ("REST" comme dans Representational State Transfer) sont des API conformes au moins à ces 5 contraintes :

  • L'interface utilisateur est distincte du stockage et de la manipulation des données (architecture client-serveur)
  • Aucun contexte client n'est stocké sur le serveur ("sans état")
  • Les réponses du serveur doivent, implicitement ou explicitement, se définir comme pouvant être mises en cache ou non
  • Le client n'a pas besoin de connaître les couches entre lui et le serveur
  • Les messages de réponse/demande doivent: être auto-descriptifs; permettre d'identifier une ressource; utiliser des représentations permettant de manipuler les ressources; annoncer les actions et ressources disponibles ("Interface uniforme").

"La vraie différence"

Ainsi, bien que ces notions soient évidemment liées, ce sont des concepts clairement distincts:

  • Étant RESTful ou non, un [~ # ~] api [~ # ~] expose les opérations fournies par un serveur qui pourraient (mais pas nécessairement) être shellées en plus petits composants ( microservices ).

  • De plus, alors qu'une API Web (REST) ​​typique utilise le protocole HTTP entre le client et le serveur, les composants d'une architecture de microservices peuvent communiquer à l'aide d'autres protocoles (par exemple WAMP , AMQP , JSON-RPC , XML-RPC , SAVON , ...)

0

En termes simples, si vous avez un serveur API Web et que vous les divisez en plusieurs mini-serveurs indépendants, utilisez un serveur proxy et un équilibreur de charge pour les regrouper et (facultativement, donnez à chacun une base de données distincte entité), c'est une architecture de microservice.

0
LEMUEL ADANE