Qu'est-ce que SOA «en anglais simple»? [fermé]


112

Quelqu'un peut-il expliquer en anglais tout ce qu'est la SOA ? J'entends SOA ici, SOA là-bas mais je ne comprends pas exactement ce que c'est et à quoi il sert. Était-ce un concept simple et a ensuite évolué en quelque chose d'énorme ou quoi?

Tous les documents, y compris le wiki, sont un peu abstraits ou peut-être que je suis un idiot et que je ne comprends pas. Y a-t-il un guide d'idiot à ce sujet?

Qu'y a-t-il exactement derrière ces trois lettres?


7
Je pense que ce serait bien aussi si les gens arrêtaient d'expliquer la SOA de manière abstraite de manière que seules les personnes qui la comprennent déjà puissent comprendre et montrer des exemples de codage "Hello, world". Le code de démonstration parle plus fort que les bavardages.
Phil

@Phil - Vérifiez ma réponse. J'ai essayé d'utiliser une analogie.
Niklas


3
Amazon est un exemple parfait, en fait. À un moment donné, Bezos a insisté sur le fait que chaque partie de la base de code d'Amazon devait être une API et répondre aux demandes Web. Article ici: apievangelist.com/2012/01/12/… . Vous pouvez le voir lorsque vous vous connectez - Amazon utilise OpenID pour son propre système de connexion! La plupart des sites Web utilisent un système intégré pour la connexion. Un avantage est que je pense qu'ils peuvent utiliser le même identifiant pour tous leurs sites et services.
Jordan Reiter

Réponses:


49

Vous trouverez peut - être cet article (Qu'est - ce SOA - SOA et services Web explicitées) utiles.

Un petit teaser:

  • SOA est un style d'architecture d'applications de telle manière qu'elles sont composées d'agents logiciels discrets qui ont des interfaces simples et bien définies et sont orchestrées par un couplage lâche pour exécuter une fonction requise.

  • Il existe deux rôles dans SOA: un fournisseur de services et un consommateur de services. Un agent logiciel peut jouer les deux rôles. La SOA n'est pas un concept entièrement nouveau - cependant, cet article se concentre principalement sur la SOA telle qu'elle est implémentée avec les services Web.


6
Mmmmm ... CORBA, IDL, client-serveur ... ça sonne tellement des années 1980 que ça fait mal! ;-D
CesarGon

64

SOA est un nouveau badge pour certaines idées très anciennes:

  • Divisez votre code en modules réutilisables.

  • Encapsulez dans un module toute décision de conception susceptible de changer.

  • Concevez vos modules de manière à ce qu'ils puissent être combinés de différentes manières utiles (parfois appelées «famille» ou «ligne de produits»).

Ce sont tous des principes fondamentaux de développement de logiciels, dont beaucoup ont été formulés pour la première fois par David Parnas.

Ce qui est nouveau dans SOA est

  • Vous le faites sur un réseau.

  • Les modules communiquent en s'envoyant des messages sur le réseau, plutôt que par des mécanismes de langage de programmation plus traditionnels comme les appels de procédure. En particulier, dans une architecture orientée services, les parties ne partagent généralement pas l'état mutable (variables globales dans un programme traditionnel). Ou s'ils partagent un état, cet état est soigneusement verrouillé dans une base de données qui est elle-même un agent et qui peut facilement gérer plusieurs clients simultanés.


43

Je vois de nombreuses réponses expliquant une architecture orientée services (SOA) en utilisant des mots et des termes techniques encore plus avancés. Je voudrais essayer de l'expliquer pour le profane, en utilisant une analogie en anglais simple.

Mais d'abord, une description d'une SOA
SOA pourrait être décrite en trois couches, comme le montre l'image ci-dessous. D'un côté, nous avons le fournisseur et de l'autre, nous avons le consommateur , séparés par un pont où les deux côtés communiquent.

Le consommateur utilise un certain nombre d' applications nécessaires à son activité et le fournisseur utilise des composants qui fournissent des informations à ces applications. Ils communiquent via un ensemble de services utilisant une architecture commune.


entrez la description de l'image ici


L'analogie
Imaginez une maison à la campagne, qui à bien des égards fait partie d'une communauté plus large, comme une ville ou un village. La ville possède ses propres systèmes complexes pour fournir de l'eau et de l'électricité, gérer l'assainissement, fournir des transports et d'autres services publics. La maison est le consommateur dans ce modèle, la ville (ou la communauté) est le fournisseur et les canalisations, égouts, lignes électriques, fibres optiques, etc. sont l' infrastructure dans laquelle ils communiquent.

Ce modèle pourrait être vaguement comparé à une SOA. Les gens de la maison utilisent un certain nombre d '"applications" différentes comme les radiateurs, les ordinateurs, les toilettes, les lampes, le chauffage par le sol, les baignoires, etc. comme cela fonctionne. Les composantes de la ville sont des générateurs, des pompes à eau et des zones d'assainissement. Il fournit à la maison tous ces besoins, mais il appartient à la maison de l'utiliser comme bon lui semble.

J'espère que cela a donné au moins à quelqu'un une meilleure image d'une SOA.


27

Supposons que vous ayez quatre cuisiniers. Dans SOA, vous supposez qu'ils se détestent, vous vous efforcez donc de les laisser se parler le moins possible.

Comment tu fais ça? Eh bien, vous allez d'abord définir les rôles et l'interface - le cuisinier 1 fera la salade, le cuisinier 2 fera la soupe, le cuisinier 3 fera le steak, etc. Ensuite vous placerez les plats bien organisés sur la table (donc ce sont les interfaces) et dites: "Tout le monde, s'il vous plaît, placez votre création dans vos plats assignés. Ne vous souciez de personne d'autre.".

De cette façon, les quatre cuisiniers doivent se parler le moins possible, ce qui est très bien dans le développement de logiciels - pas nécessairement parce qu'ils se détestent, mais pour d'autres raisons comme l'emplacement physique, l'efficacité dans la prise de décisions, etc.

Cela signifie également que vous pouvez recombiner les plats (services) comme vous le souhaitez. Par exemple, vous pouvez simplement utiliser le dessert pour servir un café, ou simplement prendre la soupe et la combiner avec un pain que vous avez acheté à une autre entreprise pour offrir un menu moins cher, ou laisser d'autres restaurants utiliser vos salades pour les combiner avec leurs plats, etc. .

L'une des implémentations les plus réussies de SOA était chez Amazon. En raison de leur conception, ils pourraient reconditionner l'ensemble de leur infrastructure et la vendre en tant qu'Amazon Web Service.

* Ce n'est qu'un aspect de la SOA.


17

SOA est un style architectural mais aussi une vision sur la manière dont une application hétérogène doit être développée et intégrée. L'objectif principal de SOA est de s'éloigner des applications monolithiques et de disposer à la place d'un ensemble de services réutilisables pouvant être composés pour créer des applications.

À mon humble avis, SOA n'a de sens qu'au niveau de l'entreprise et ne signifie rien pour une seule application.

Dans de nombreuses entreprises, chaque département avait son propre ensemble d'applications d'entreprise qui impliquaient

  1. Une fonctionnalité similaire a été mise en œuvre plusieurs fois

  2. Les données (par exemple, les données des clients ou des employés) doivent être partagées entre plusieurs applications

  3. Les applications étaient centrées sur le service.

Avec SOA, l'idée est de rendre les services réutilisables disponibles à l'échelle de l'entreprise, de sorte que l'application puisse être créée et composée à partir d'eux. La promesse de SOA est

  1. Pas besoin de réimplémenter des fonctionnalités similaires à plusieurs reprises (par exemple, fournir un service client ou employé)

  2. Facilite l'intégration des applications entre elles et l'accès aux données ou fonctionnalités communes

  3. Effort de développement centré sur l'entreprise.

La vision SOA nécessite un changement technologique ainsi qu'un changement organisationnel . Alors qu'il résout certains problèmes, il en introduit également d'autres, par exemple la sécurité est beaucoup plus difficile avec SOA qu'avec une application monolithique. Par conséquent, la SOA est sujette à discussion pour savoir si elle fonctionne ou non.

Voici la vue à 1000 pieds de SOA. Cela ne s'arrête cependant pas là. Il existe d'autres concepts complémentaires à la SOA tels que l'orchestration des processus métier (BPM), le bus de services d'entreprise (ESB), le traitement d'événements complexes (CEP), etc. Ils abordent tous le problème de l'alignement IT / métier , c'est-à-dire comment disposer de l'informatique. être en mesure de soutenir efficacement l'entreprise.


1
oui, mais quelqu'un d'autre veut que vous achetiez ou utilisiez son monolithe pour contrôler tout comme Oracle SOA ou utiliser Microsoft WCF. N'y aura-t-il pas toujours un monolithe?
johnny

WCF et Oracle SOA sont des dépendances technologiques qui ne sont pas pertinentes avec une solution SOA. Le concept est basé sur des services indépendants facilement maintenables et non sur une technologie spécifique.
BentOnCoding

4
+1 pour avoir mentionné la «grande» signification de SOA au niveau de l'organisation. Beaucoup d'autres réponses se concentrent sur l'aspect des composants logiciels, qui à proprement parler n'est pas une vue d'ensemble (même si c'est le sens que les gens utilisent souvent).
occulus

10

SOA est l'acronyme de Service Oriented Architecture.

SOA conçoit et écrit des applications logicielles de manière à ce que des modules logiciels distincts puissent être intégrés de manière transparente avec un degré élevé de réutilisation.

La plupart des gens restreignent SOA à l'écriture de services Web de logiciels client / serveur. Mais c'est un contexte trop restreint de SOA. La SOA est beaucoup plus vaste que cela et au cours des dernières années, les services Web ont été le principal moyen de communication, ce qui est probablement la raison pour laquelle les gens considèrent la SOA comme des services Web en général restreignant les limites et la signification de la SOA.

Vous pouvez penser à écrire un module d'accès à la base de données qui est si indépendant qu'il peut fonctionner seul sans aucune dépendance. Ce module peut exposer des classes qui peuvent être utilisées par tout logiciel hôte nécessitant un accès à la base de données. Il n'y a pas de configuration de démarrage dans l'application hôte. Tout ce qui est nécessaire ou requis est communiqué à travers les classes exposées par le module d'accès à la base de données. Nous pouvons appeler ces classes comme des services et considérer le module comme un service activé.

Pratiquer SOA donne un haut degré de réutilisabilité en appliquant DRY [Ne vous répétez pas vous-même], ce qui donne un logiciel hautement maintenable. La maintenabilité est la première chose à laquelle toute architecture logicielle pense - SOA vous le donne.


6

Pour autant que je sache, le concept de base est que vous créez de petits «services» qui fournissent quelque chose d'utile à d'autres systèmes et évitez de construire de grands systèmes qui ont tendance à tout faire à l'intérieur du système.

Vous définissez donc un protocole que vous utiliserez pour l'interaction (par exemple, il peut s'agir de services Web SOAP) et laissez votre "système-qui-fait-un-business-travailler" interagir avec les petits services pour atteindre votre "grand objectif" .


2
Veuillez ne pas deviner les questions d'architecture. Stackoverflow est un endroit pour obtenir des réponses d'experts, pas une estimation aléatoire à partir d'un article sur lequel vous avez jeté un coup d'œil l'année dernière. C'est triste que cette réponse ait reçu des votes.
BentOnCoding


4

ce qui a tendance à se produire dans les grandes organisations, c'est qu'avec le temps, tout est soit des systèmes monolithiques, soit des systèmes disparates partout ou un peu des deux. Quelqu'un arrive finalement et dit que nous sommes en désordre. Maintenant, vous voulez re-concevoir (de l'argent à quelqu'un) tout pour être orienté dans une sorte de monotlithique dépend de qui vous payez le paradigme mais en même temps être capable d'ajouter des pièces et des parties indépendamment du maître / monolithe.

Vous achetez donc la SOA d'Oracle et Oracle devient le patron de toutes vos pièces. Tous les autres acteurs qui arrivent doivent travailler avec SOA via un service (service Web ou autre). Le monolithe Oracle s'occupe de tout (le monolithe n'est pas censé être dérogatoire). Oh ouais, vous avez ASP.NET MVC en façade ou autre chose.

l'essentiel est de faire entrer et sortir les choses du système sans impact et de garder le fournisseur Oracle SOA, Microsoft WCF, comme le cerveau de tout cela. tout est bon, fluide, les choses entrent et sortent avec peu ou pas d'impact, même les services humains, pas seulement les ordinateurs.

Pour moi, cela signifie simplement un tas de services Web (ou peu importe comment nous les appelons à l'avenir) avec une bonne interface. Et si vous possédez la base de données, accédez simplement à la base de données et arrêtez de vous soucier des mots à la mode. ça va.



3

Eh bien, vous voyez ... SOA signifie Service Oriented Architecture .... En termes simples, vous écrivez un morceau de code qui est très générique, c'est-à-dire qu'il fait quelque chose qui peut être utilisé dans de nombreuses applications ... un carnet d'adresses ou peut être une calculatrice. et vous lancez ce code sur l'IIS. Vous fournissez donc un service via votre code. Vous êtes donc un fournisseur de services. Maintenant, quelqu'un veut utiliser un code similaire, alors il n'a plus besoin d'écrire le code à nouveau. Il utilise simplement votre code peut-être via un service Web. Par conséquent, il devient un consommateur de services. Par conséquent, la création d'un programme utilisant de tels services s'appelle SOA. Et le couplage lâche existe car le fournisseur de services et le consommateur peuvent interagir même s'ils utilisent des langages de programmation différents. J'espère que tu as compris.


3

des blogs ittoolbox.

Ce qui suit décrit les similitudes et les différences avec les techniques de conception antérieures:

• SOA par rapport à la programmation structurée o Similitudes: les plus similaires aux appels de sous-programmes où les paramètres sont passés et le fonctionnement de la fonction est extrait de l'appelant - par exemple, lien CICS et exécution et mot réservé COBOL CALL. Les cahiers sont utilisés pour définir la structure de données qui est généralement définie comme un schéma XML pour les services. o Différences: la SOA est faiblement couplée, ce qui implique que les changements apportés à un service ont moins d'impact sur le consommateur (le programme «appelant») et les services sont interopérables entre les langages et les plates-formes.

• SOA versus OOA / OOD o Similitudes: encapsulation, abstraction et interfaces définies o Différences: SOA est faiblement couplé sans hiérarchie de classe ni héritage, abstractions de bas niveau - niveau de classe versus service métier

• SOA par rapport au développement basé sur des composants hérités (CBD) - par exemple CORBA, DCOM, EJB o Similitudes: réutilisation via l'assemblage de composants, interfaces, appels à distance o Différences: large adoption de normes, schémas XML par rapport aux objets marshalés, orchestration de services, conception pour réutilisation est plus facile, les services sont axés sur l'entreprise par rapport à l'informatique, les services d'entreprise sont bien définis (large champ d'application)

• SOA (pour l'intégration) versus Enterprise Application Integration (EAI) o Similitudes: Meilleures pratiques (interfaces bien définies, schémas standardisés, architecture événementielle), interfaces réutilisables, schémas communs o Différences: normes, adoption et outils améliorés


3

En lisant les réponses ci-dessus, il me semble que SOA est ce que les développeurs (du moins les bons) font depuis le premier jour.


2

Cela pourrait également signifier "Struct of Arrays" (par opposition à "Array of Structs") qui est un sujet courant dans la programmation parallèle (en particulier SIMD), mais je suppose que ce n'est pas ce que vous voulez dire ici!


Peu de vote défavorable sans commentaire !!
Tom

2
@Downvoters: La question ne donne pas vraiment suffisamment de contexte pour justifier le vote négatif de la réponse de Toms. Ce n'est pas parce que tout le monde est paralysé par le terme SOA dans le contexte des architectures de services que cela ne va pas.
Sebastian Mach

1
@phresnel La balise est soa et si vous pouvez passer la souris dessus pendant une seconde, vous verrez une description claire du contexte de la question.
BentOnCoding

4
@Robotsushi: Et si vous pouvez rechercher le tag pendant une seconde, vous pouvez voir que la description a été ajoutée plus d'un an après la réponse de Toms.
Sebastian Mach

Je pense que si vous n'êtes pas sûr du contexte d'une question, vous n'êtes pas en mesure de fournir une réponse d'expert. Une simple question dans le commentaire concernant la nature de la question aurait rapidement résolu ce mystère.
BentOnCoding

2

SOA est un mot à la mode qui a été inventé par les fournisseurs de technologie pour les aider à vendre leurs technologies liées à Enterprise Service Bus. L'idée est que vous faites en sorte que vos petites applications insulaires dans l'entreprise (par exemple: système de comptabilité, système de contrôle des stocks, etc.) exposent toutes les services, afin qu'ils puissent être orchestrés de manière flexible dans des `` applications '', ou plutôt devenir des parties d'une entreprise globale. logique.

Fondamentalement, un tas de vieilles conneries qui ne fonctionnent presque jamais, car cela ne tient pas compte du fait que les raisons pour lesquelles la technologie est telle qu'elle est dans une organisation sont liées à la culture, à l'évolution, à l'histoire de l'entreprise et le verrouillage est si élevé que tout tentative de restructuration de la technologie est vouée à l'échec.


1

Écoutez l'édition de cette semaine du podcast Floss Weekly , qui couvre SOA. Les descriptions sont de niveau assez élevé et ne plongent pas dans trop de détails techniques (bien que des exemples plus concrets et reconnaissables de projets SOA auraient été utiles.


1

Une architecture d'application traditionnelle est:

  • Une interface utilisateur
  • Trucs indéfinis (implémentation) encapsulés / cachés derrière l'interface utilisateur

Si vous souhaitez accéder aux données par programmation, vous devrez peut-être recourir à la capture d'écran.

La SOA me semble être une architecture qui se concentre sur l'exposition de données et / ou d'API lisibles par machine, plutôt que sur l'exposition d'interfaces utilisateur.


1

L'architecture orientée services ou SOA est un modèle d'architecture logicielle dans lequel les applications ou les systèmes sont construits à partir de services logiciels sous-jacents (et généralement distribués) qui se conforment à un ensemble spécifique de caractéristiques, à savoir:

  1. Basé sur l'interface, la politique et le contrat
  2. Transparence de l'emplacement
  3. Autonome
  4. Abstrait
  5. Réutilisable
  6. Composable
  7. Apatride
  8. Découvrable
  9. Extensible
  10. Couplage lâche

L'objectif principal de la SOA est l'agilité de développement de logiciels, c'est-à-dire la capacité à répondre au changement facilement et à moindre coût, permettant ainsi aux entreprises de réagir rapidement à l'évolution des marchés.

Les services sont généralement (mais pas exclusivement) mis en œuvre en tant que services Web, c'est-à-dire qu'ils fonctionnent via le protocole HTTP Web omniprésent, et sont mis en œuvre soit à l'aide de SOAP XML ou du paradigme REST léger (et plus populaire).


1

Ça dépend de qui vous êtes!

Si vous êtes propriétaire d'une entreprise, SOA est une solution pour augmenter vos revenus et votre agilité commerciale. Si vous êtes un architecte d'entreprise, SOA est un moyen de dessiner un logiciel agréable et propre sur une toile vierge. Si vous êtes un architecte, SOA est la solution pour concevoir des services faiblement couplés sur une plate-forme d'intégration, pour simplement brancher les services sur des prises. Si vous êtes un développeur, SOA est un paradigme de programmation où un service est au centre de la conception et du code.

Vous devriez lire 100-SOA-Questions [pdf]

À votre santé


1

L'architecture orientée services (SOA) est un style d'architecture logicielle qui construit des applications sous la forme d'un ensemble d'éléments enfichables, chacun pouvant être réutilisé par d'autres applications.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.