Qu’est-ce que SOA «en anglais»?

Quelqu’un peut-il expliquer en termes simples en quoi consiste SOA ? J’entends SOA ici, SOA là-bas, mais je ne peux pas comprendre exactement ce que c’est et ce qui est utilisé. Était-ce un concept simple et plus tard é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 idiot à ce sujet?

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

Vous trouverez peut-être cet article (Qu’est-ce que SOA? – SOA et Web Services Explained) utile.

Un petit teaser:

  • La SOA est un style d’architecture d’applications de manière à ce qu’elle soit composée d’agents logiciels discrets dotés d’interfaces simples et bien définies, orchestrées par un couplage libre pour exécuter une fonction requirejse.

  • 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. L’architecture SOA n’est pas un concept entièrement nouveau. Toutefois, cet article se concentre principalement sur l’architecture SOA, telle qu’elle est mise en œuvre avec les services Web.

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

  • Divisez votre code en modules réutilisables.

  • Encapsuler 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é articulés par David Parnas.

Quoi de neuf dans SOA est

  • Vous le faites sur un réseau.

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

Je vois beaucoup de réponses expliquant une architecture orientée services (SOA) utilisant des mots et des termes techniques encore plus avancés. Je voudrais donner une explication pour le profane, en utilisant une analogie en anglais clair.

Mais d’abord une description d’un SOA
SOA peut être décrit en trois couches, comme illustré ci-dessous. D’un côté, nous avons le fournisseur et de l’autre côté le consommateur , séparé par un pont où les deux parties 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.


entrer la description de l'image ici


L’analogie
Imaginez une maison à la campagne qui, à bien des égards, fait partie d’une communauté plus vaste, comme une ville ou une ville. La ville possède ses propres systèmes complexes d’approvisionnement en eau et en élecsortingcité, de gestion de l’assainissement, de transport et d’autres services publics. La maison est le consommateur dans ce modèle, la ville (ou la communauté) est le fournisseur et les tuyaux, les égouts, les lignes élecsortingques, les fibres optiques, etc. sont l’ infrastructure dans laquelle ils communiquent.

Ce modèle pourrait être comparé à une SOA. Les habitants de la maison utilisent différentes «applications»: radiateurs, ordinateurs, canvasttes, lampes, chauffage par le sol, baignoires, etc. Ces applications ne se soucient pas de la façon dont la ville génère l’eau, crée l’élecsortingcité ou traite les déchets aussi longtemps. comme ça marche. Les composantes de la ville sont les générateurs, les pompes à eau et les zones d’assainissement. Il fournit à la maison tous ces besoins, mais c’est à la maison de l’utiliser comme bon lui semble.

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

Supposons que vous avez quatre cuisiniers. Dans SOA, vous supposez qu’ils se détestent, alors vous vous efforcez 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 dire: “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 telles que 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é d’une autre entreprise pour offrir un menu moins cher, ou laisser d’autres restaurants utiliser vos salades pour combiner leurs plats, etc. .

L’une des implémentations les plus réussies de SOA a été chez Amazon. En raison de leur conception, ils pourraient reformater l’ensemble de leur infrastructure et la vendre sous le nom d’Amazon Web Service.

* Ceci n’est qu’un aspect de l’architecture SOA.

La SOA est un style architectural mais aussi une vision de la façon dont les applications hétérogènes doivent être développées et intégrées. L’objective principal de SOA est de s’éloigner des applications monolithiques et de disposer d’un ensemble de services réutilisables pouvant être conçus pour créer des applications.

IMHO, SOA n’a de sens qu’au niveau de l’entreprise, et ne signifie rien pour une seule application.

Dans de nombreuses entresockets, chaque département avait son propre ensemble d’applications d’entreprise impliquant

  1. Une fonctionnalité similaire a été implémentée plusieurs fois

  2. Les données (p. Ex. Données sur les clients ou les employés) doivent être partagées entre plusieurs applications

  3. Les applications étaient centrées sur les départements.

Avec l’architecture SOA, l’idée est de rendre les services réutilisables disponibles à l’échelle de l’entreprise, afin que les applications puissent être créées et composées à partir de celles-ci. Les promesses de SOA sont

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

  2. Facilite l’intégration des applications et l’access 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 introduit également d’autres problèmes, par exemple la sécurité est beaucoup plus difficile avec SOA qu’avec les applications monolithiques. Par conséquent, la SOA est sujette à discussion pour savoir si cela fonctionne ou non.

Ceci est la vue 1000 pieds de SOA. Cela ne s’arrête cependant pas là. D’autres concepts complètent l’architecture SOA, comme l’orchestration des processus métier (BPM), le bus de services d’entreprise (ESB), le traitement complexe des événements (CEP), etc. Ils abordent tous le problème de l’alignement informatique / métier. être capable de soutenir l’entreprise efficacement.

SOA est l’acronyme de Service Oriented Architecture.

La 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 haut degré de réutilisation.

La plupart des personnes limitent l’architecture SOA en tant que service Web / logiciel d’écriture client / serveur. Mais c’est un contexte trop petit 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 explique probablement que les gens considèrent l’architecture SOA comme un service Web limitant les limites et la signification de la SOA.

Vous pouvez penser à écrire un module d’access aux bases de données qui soit si indépendant qu’il peut fonctionner seul sans aucune dépendance. Ce module peut exposer des classes pouvant être utilisées par tout logiciel hôte nécessitant un access à la firebase database. Il n’y a pas de configuration de démarrage dans l’application hôte. Tout ce qui est nécessaire ou requirejs est communiqué par le biais de classes et est affiché par le module d’access à la firebase database. Nous pouvons appeler ces classes en tant que services et considérer le module comme étant activé par le service.

La pratique de la SOA offre un haut degré de réutilisation en appliquant DRY [Ne pas répéter soi-même], ce qui se traduit par des logiciels hautement maintenables. La maintenabilité est la première chose à laquelle pense toute architecture logicielle: la SOA vous le permet.

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 évitent de créer de grands systèmes qui ont tendance à tout faire à l’intérieur du système.

Donc, vous définissez un protocole que vous utiliserez pour l’interaction (par exemple, il pourrait s’agir de services Web SOAP) et laissez votre “système qui fait certaines tâches” interagir avec les petits services pour atteindre votre “grand objective”. .

Je vous suggère de lire des articles de Thomas Erl et de Roger Sessions, qui vous donneront une idée précise de ce qu’est la SOA. Ce sont aussi de bonnes ressources, regardez la SOA expliquée pour votre patron pour une explication profane

Construire une SOA

Modèle de conception SOA

Atteindre l’intégrité dans une SOA

Pourquoi votre SOA devrait être comme une coccinelle VW

SOA expliqué pour votre patron

Performance du service WCF

Ce qui a tendance à se produire dans les grandes entresockets, c’est qu’à la longue, tout est soit un système monolithique, soit un système disparate partout ou un peu des deux. Quelqu’un arrive finalement et dit que nous avons un désordre. Maintenant, vous voulez redessiner (argent pour quelqu’un) tout ce qui doit être orienté dans une sorte de monotlithique dépend de qui vous payez le paradigme, mais en même temps vous pouvez append des pièces et des pièces indépendamment du maître / monolithe.

Vous achetez donc SOA Oracle et Oracle devient le patron de toutes vos pièces. Tous les autres joueurs doivent travailler avec SOA via un service (service Web ou autre). Le monolithe Oracle s’occupe de tout (le monolithe ne signifie pas péjoratif). Oh oui, vous avez ASP.NET MVC au premier plan ou autre chose.

L’essentiel est de déplacer les choses dans et hors du système sans impact et de garder le fournisseur Oracle SOA, Microsoft WCF, comme le cerveau de tout. tout est fluide, fluide, les choses bougent et ont peu ou pas d’impact, même les services humains, pas seulement les ordinateurs.

Pour moi, cela signifie simplement une bande de services Web (ou ce que nous appelons à l’avenir) avec une bonne interface. Et si vous possédez la firebase database, cliquez simplement sur la firebase database et arrêtez de vous soucier des mots à la mode. ça va.

Une seule suggestion: –

Lire les concepts, la technologie et la conception SOA de Thomas Erl.

Il a très bien donné les détails sur SOA en anglais clair et avec des études de cas.

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 beaucoup d’applications … peut être quelque chose comme un carnet d’adresses ou peut être une calculasortingce. et vous lancez ce code sur IIS. Vous fournissez donc un service via votre code. Donc, vous êtes un fournisseur de services. Maintenant, quelqu’un veut utiliser un code similaire, alors il n’a pas à écrire le code à nouveau. Il utilise simplement votre code peut-être via un service Web. Il devient donc un consommateur de services. Par conséquent, faire un programme utilisant de tels services s’appelle SOA. Et le couplage libre est là 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.

à partir des blogs ittoolbox.

Les points suivants décrivent les similitudes et les différences avec les techniques de conception antérieures:

• SOA et programmation structurée o Similitudes: le plus similaire aux appels de sous-programmes où les parameters sont transmis et où l’opération de la fonction est extraite de l’appelant – par exemple, liaison CICS et exécution et mot réservé COBOL CALL. Les copybooks sont utilisés pour définir une 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 modifications apscopes à un service ont moins d’impact sur le consommateur (le programme “appelant”) et que les services sont interopérables entre les langues et les plates-formes.

• SOA et OOA / OOD o Similitudes: encapsulation, abstraction et interfaces définies o Différences: la SOA est faiblement associée à aucune hiérarchie ou inheritance de classe, abstractions de bas niveau – niveau de classe par rapport au service métier

• Développement basé sur les composants (CBD) – par exemple CORBA, DCOM, EJB o Similitudes: réutilisation via l’assemblage de composants, interfaces, appels distants o Différences: adoption généralisée de normes, schémas XML ou objects marshaled, orchestration de services est plus facile, les services sont axés sur les affaires plutôt que sur l’informatique, les services aux entresockets sont bien ciblés (de vaste scope)

• SOA (pour l’intégration) et intégration d’applications d’entreprise (EAI) o Similitudes: meilleures pratiques (interfaces bien définies, schémas normalisés, architecture pilotée par les événements), interfaces réutilisables, schémas communs o Différences: normes, adoption et outils améliorés

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

Il pourrait également signifier “Struct of Arrays” (par opposition à “Array of Structs”) qui est un sujet commun dans la programmation parallèle (surtout SIMD), mais je suppose que ce n’est pas ce que vous voulez dire ici!

La SOA est un mot à la mode qui a été inventé par les fournisseurs de technologie pour aider à vendre leurs technologies liées à Enterprise Service Bus. L’idée est que vos petites applications insulaires en entreprise (par exemple: système comptable, système de contrôle des stocks, etc.) exposent toutes les services, de sorte qu’ils puissent être orchestrés de manière flexible en «applications» ou plutôt en partie. logique.

Fondamentalement, une charge de vieilles bornes qui ne fonctionne presque jamais, car il manque le fait que les raisons pour lesquelles la technologie est la façon dont elle est dans une organisation est la culture, l’évolution, l’histoire de l’entreprise et tenter de restructurer la technologie est vouée à l’échec.

Écoutez l’édition de cette semaine du podcast Floss Weekly , qui couvre la SOA. Les descriptions sont de très haut niveau et ne contiennent pas trop de détails techniques (même si des exemples plus concrets et reconnaissables de projets SOA auraient été utiles).

Une architecture d’application traditionnelle est:

  • Une interface utilisateur
  • Des éléments non définis (implémentation) qui sont 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 récupération d’écran.

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

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

  1. Interface, politique et contrat
  2. Transparence de l’emplacement
  3. Autonome
  4. Abstrait
  5. Réutilisable
  6. Composable
  7. Apasortingde
  8. Découvrable
  9. Extensible
  10. Couplage lâche

L’objective principal de l’architecture SOA est l’agilité du développement logiciel, c’est-à-dire la capacité à réagir facilement et à moindre coût au changement, ce qui permet aux entresockets de réagir rapidement à l’évolution des marchés.

Les services sont généralement (mais pas exclusivement) implémentés en tant que services Web, c’est-à-dire qu’ils fonctionnent sur le protocole Web HTTP omniprésent et sont implémentés en utilisant SOAP XML ou le paradigme REST léger.

Ça dépend de qui vous êtes!

Si vous êtes propriétaire d’une entreprise, la SOA est une solution pour augmenter vos revenus et votre agilité. Si vous êtes un architecte d’entreprise, l’architecture SOA est un moyen de dessiner un morceau de logiciel agréable et net sur une canvas vierge. Si vous êtes un architecte, la SOA est la solution pour concevoir des services faiblement couplés sur une plate-forme d’intégration, afin de simplement twigr des services dans des points de vente. Si vous êtes un développeur, la 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é

L’architecture orientée services (SOA) est un style architectural logiciel qui crée des applications sous la forme d’une collection de composants enfichables, chacun pouvant être réutilisé par d’autres applications.