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.
L'approche des microservices consiste à diviser votre système ("pile de code") en de nombreux petits services, chacun ayant généralement ses propres:
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.
API = Interface de programmation d'application
Microservices = ne architecture
En bref
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).
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.
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
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.
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.
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 :
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 , ...)
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.