web-dev-qa-db-fra.com

Ce qui est vraiment différent entre SOA et microservices

Clause de non-responsabilité

J'espère que je ne prends pas sur les orteils de personne ou offenser les passionnés des concepts des concepts

Fond

J'ai cherché Real Différences entre l'architecture orientée du service et les microservices, sans trouver une réponse claire.

Je lis des choses comme:

  • les effets secondaires de la SOA
  • Soa étant anti-motif
  • Les microservices sont venus pour réparer les échecs de SOA
  • Les ESB ne sont pas vraiment des ESB à la place ils sont EAIS
  • Trop dépendance aux courtiers de message
  • Les fournisseurs abusent de la notion de SOA et essayant de vendre leurs produits
  • Soa devient incontrôlable

Mais toujours, rien ne définit clairement les différences architecturales entre l'architecture orientée du service (en tant que concept) et les microservices (en tant que concept)

Selon ce que j'ai compris, ils ont tous les deux:

  • Prestataires de services, faire une seule chose
  • Passerelle de service/ESB exposant ces services aux consommateurs
  • Consommateurs de services, accès aux services via ESB/Service Gateway

Question

Alors, y a-t-il quelque chose de différent autre que Relabeling SOA dans Microservices? Est-ce une contrainte technologique placée pour limiter les microservices de devenir macro?

Note: Je ne cherche pas d'opinions, seulement des faits durs, espérons-le, des points de balle

Les références

Mettre à jour

Il semble qu'un débat similaire s'est passé dans une question de dépassement de pile , avec des opinions divisées à Wether ou non, les microservices sont une architecture orientée de services sous déguisement.

Conclusion Du SO Question:

  • MS est un cas spécial de SOA
  • Mme Endorse Taille plus petite des applications Hébergement Services
  • MS est dépend de la technologie (l'utilisation des options HTTP plutôt que des protocoles ouvertes)
  • MS s'appuie sur la technologie pour appliquer la discipline (déploiement automatique des services)
  • MS considère ESBS (mal), mais utilise des passerelles API Quel IMHO est un type d'ESB

Cela conclut que MS est SOA, si ce qui suit est vrai:

  • MS Soutenez-vous la notion d'orchestration? Un ou plusieurs processus maîtres (s) gérer des flux de travail
  • Y a-t-il une couche de courtier de messages dans MS? Un ensemble d'adaptateurs traduire les formats de message de l'espace de message des producteurs de services aux consommateurs de services
  • Les microservices peuvent-ils lire les données des applications d'entreprise monolithique? Peut-il s'agir d'une apis d'une application monolithique? ou il doit s'agir d'applications autonomes autonomes, capables de fonctionner de manière indépendante?

Si la réponse à la dernière question s'est révélée être non disponible, alors les microservices ne seraient pas capables de gérer des systèmes de flux de travail complexes, par ex. Systèmes de gestion des cartes de crédit ou systèmes de rapprochement

10
A.Rashad

Voici la ligne de fond la seule différence évidente entre [~ # ~ ~] SOA [~ # ~] et microservices est la notion de

POWS DUMB DUMB DUMB

Contrairement aud [~ # ~] SOA [~ # ~], cela dépendrait des consommateurs de services et des producteurs de services inconscients, délégation de la gestion du trafic, de la traduction du format de message et de l'orchestratoration des systèmes externes, par exemple. ESB, service orchestrateur, courtier de messages.

2
A.Rashad

Prestataires de services, faire une seule chose

La différence de base, qui a des conséquences généralisées du projet, est qu'avec Microservices, ces fournisseurs de services sont indépendamment déployables et évolutifs.

C'est génial, car vous pouvez être plus agile. Si un service n'a pas changé, vous modifiez simplement celui-ci, aucun de ses parents. Si vous souhaitez essayer un nouveau cadre ou un nouveau langage, effectuez un remplacement d'une liste déroulante pour ce service. Si vous avez soudainement besoin de capacité de 100 fois, tournez de nouvelles machines avec ce service pour gérer cet afflux. Si vous voulez une version quelque chose, il suffit de la version sans toucher le entier . et Cela facilite la surveillance, l'instrument, la division parmi les équipes, l'obsolète ...

Mais il vient avec des implications de l'étourdissement:

  • Votre processus de publication doit être modifié, car le déploiement de quelques services est différent du déploiement de quelques douzaines de services.
  • Votre processus de publication doit être modifié, car le déploiement d'un service sur une machine est différent du déploiement de quelques douzaines de machines.
  • La conception, l'utilisation et le déploiement de votre base de données doivent changer car il est un peu sans signification de déployer un service s'il doit déployer cette Big DB partagée à travailler (briser tous vos autres services).
  • Votre conception et votre utilisation de bibliothèques doivent changer car il est un peu sans signification de déployer un service s'il doit mettre à jour cette bibliothèque partagée (enfreindre tous vos autres services).
  • Votre journalisation/autorisation/gestion de la session/etc. doit changer car il est assez facile de partager des choses lorsque vous n'êtes qu'un seul service, mais différent lorsque vous avez un groupe de petits services indépendants qui composent le produit - et ils sont aller Voulez-vous partager des choses. Oh, et toutes ces choses partagées doivent faire face à des versions potentiellement différentes.
  • Votre communication doit changer. Avec peu de services, vous pouvez casser des choses le long des lignes où la communication n'arrive pas souvent et/ou pourrait arriver lentement. Avec des microservices, ils vont se parler beaucoup, et une latence élevée ne va pas la couper.
12
Telastyn