Czy termin „architektura zorientowana na usługi” stał się bezsensownym żargonem? [Zamknięte]

25

Zostałem dzisiaj zapytany, czy mam doświadczenie z „architekturą zorientowaną na usługi” i chociaż tak myślę. Ta koncepcja wydaje mi się tak zagmatwana, że ​​nie wiem, jak można uczciwie odpowiedzieć na to pytanie.

Zwróciłem się do Googlinga, aby uzyskać zwięzłą definicję pojęcia i tego, jak różni się on od innych architektur. Po przeczytaniu kilku artykułów na ten temat jedynym wspólnym wątkiem, który wydaje mi się być w stanie znaleźć, jest system z wieloma komponentami, które komunikują się ze sobą za pomocą pewnego rodzaju interfejsu, z być może nieznaczną preferencją dla XML / SOAP.

Wygląda na to, że prawie każda aplikacja może być zdefiniowana jako SOA, szczególnie aplikacja internetowa. Czy ten termin wpadł w pułapkę „Web 2.0” i stał się terminem oznaczającym cokolwiek chcesz?

Czy jestem tutaj daleko od bazy? Kiedy słyszycie ten termin, czy to oznacza coś konkretnego dla was? Jeśli tak, chciałbym zwięzłą definicję, która jasno pokazuje, co jest, a co NIE JEST SOA.

JohnFx
źródło
39
Zawsze był to bezsensowny żargon.
Fosco,
6
W języku holenderskim SOA oznacza STD.
Joeri Sebrechts
1
Czy SOA to koncepcja „użytkownik płaci”? Tradycyjnie firmy traktują IT jako koszt, który należy zminimalizować. Stwarza to ukryte niebezpieczeństwo, ponieważ firmy nie wiedzą, ile IT można zmniejszyć, dopóki nie wpłynie to na wydajność całej firmy. SOA było sposobem na zrobienie IT, dzięki czemu dział IT może dokładnie obliczyć, ile zasobów IT zostało zużyte przez każdy dział (takich jak finanse, sprzedaż i zasoby ludzkie) i odpowiednio je naliczyć. Może być bardzo nieefektywny, ale jest złem koniecznym. Brak możliwości obciążenia użytkownika prowadzi do wyniku Lose-Lose.
rwong
1
Sam nie używałem dużo SOA (P), ale słyszałem, że architektura zorientowana na usługi (SOA) była skrótem od Simple Object Access Protocol (SOAP), kiedy przestała być „prosta”.
Andrew Grimm
2
Hej, ludzie płacą za to dużo pieniędzy. Nie myl sytuacji ze znaczeniami i szczegółami. Kierownictwo musi brzmieć, jakby wiedzieli o czym mówią, i być na topie modnych słów. Nie bierz od nich tej drogi. Co jeszcze by zostało?
JeffO

Odpowiedzi:

12

Uważam, że pierwotne znaczenie SOA opierało się na usługach z dobrze zdefiniowanymi interfejsami, które można wykorzystać programowo . Koncentrowano się raczej na interfejsach usług niż na terminalach interfejsu użytkownika, komunikacji lub bazach danych. Kluczową częścią były usługi konsumujące inne usługi. Usługa A może zadzwonić do Usługi B, uzyskać wynik i wezwać Usługę C lub D. Możesz mieć zestaw specjalistycznych usług i opracować z niego rozwiązanie, łącząc je w sposób, który rozwiązuje problem klienta.

SOA jest często mylone z SaaS (oprogramowanie jako usługa), co odnosi się do modelu cenowego, w którym użytkownik płaci za korzystanie z usługi, którą subskrybował, zamiast kupować licencję na kopię oprogramowania. Aby odpowiedzieć na trzeci akapit pytania, aplikacja internetowa prawdopodobnie nie jest SOA, ale może być SaaS.

Termin zdecydowanie stracił trochę na znaczeniu. W organizacji, w której pracuję, pojęcie SOA jest często używane zamiennie z SaaS i odnosi się do zespołu specjalistów IT ( technologii informatycznych w przeciwieństwie do opracowywania oprogramowania ), którzy konfigurują serwery i routery i instalują oprogramowanie, aby na nich działać. Niektóre z nich mają tytuły takie jak „SOA Architect”, ale żaden z nich nie ma nic wspólnego z architekturą, projektowaniem, wdrażaniem lub testowaniem oprogramowania.

azheglov
źródło
1
Myślę, że uderzyłeś tu w głowę.
reinierpost
1
+1. W kilku akapitach podsumowałeś, co robi typowa książka SOA na 800 stronach puchu.
prasopes
4

Zrobiłem to samo, przeglądając SOA w Google, aby zobaczyć, co to naprawdę jest i tak, jest to dość nadużywane. Kiedy myślę o SOA, myślę o następujących kwestiach:

  1. Odkryty program bezgłowy ...
  2. Wykorzystuje łączność bezstanową (ala HTTP) ...
  3. Komunikacja w formatach niezależnych od platformy

SOA można skontrastować z architekturą klient-serwer (architektura usługi stanowej) i bibliotekami, które są modułami połączonymi z programami za pośrednictwem konsolidatora.

Więc kiedy ludzie o tym mówią, zazwyczaj biorę to z odrobiną soli. Ja też nazywam to „usługami internetowymi”. W przypadku usług internetowych sugerowana jest architektura.

Tjaart
źródło
2
Czy może to być architektura serwer-serwer?
JeffO
3

Ścisłe definicje SOA znacznie przekraczają linię kosztów / korzyści, ponieważ w wielu przypadkach są teoretyczne.

O ile twój produkt nie jest usługą, często potrzebujesz innego punktu widzenia.

Zdefiniowana przez USA definicja SOA oznacza, że ​​ogólna architektura jest przyjazna dla usług. System zbudowany całkowicie z usług atomowych zwykle nie jest właściwym planem, a niektóre usługi będą zorganizowane funkcjonalnie, podczas gdy inne będą pojedynczą odpowiedzialnością. Mogę mieć czarne skrzynki, mogę mieć procesy offline, ale jeśli istnieje wykrywalny zbiór usług, dzięki którym mogę wykonać znaczną ilość pracy, jest to moja minimalna definicja.

Oprócz debaty na temat tego, co to właściwie oznacza, pojęcie (cokolwiek to znaczy) ucierpiało w wielu kręgach, ponieważ zostało zastosowane w miejscach, które po prostu nie pasują.

Na przykład, jeśli buduję coś, co ma być procesem czarnej skrzynki i skaluje się poprzez równoległość, a nie segmentację i dystrybucję, mogę mieć usługę ujawnienia / rozmowy z czarną skrzynką, ale niektórzy ludzie próbują umieścić usługi wewnątrz pudełko.

Jako ścisła definicja techniczna zawsze była niezdefiniowana, ale pomysł nie jest pozbawiony wartości, w której się mieści.

Rachunek
źródło
3

Miałem brak szczęścia do pracy nad kilkoma systemami korporacyjnymi, w których zarządzanie zostało sprzedane na SOA. Jako programista patrzę na systemy i widzę mnóstwo oprogramowania za usługą internetową, która działa. Mógłby być napisany w różnych językach i architekturach, z których żaden nie miałby znaczenia lub byłby istotny dla klientów dzwoniących do usług, a dla których faktycznie nie ma akronimu „SOA” w dowolnym miejscu w dokumentacji.

Ale kierownictwo chce „SOA” !!! Kupili więc naprawdę drogie serwery od pewnej dużej firmy, które nakleiły naklejki „SOA” na poprzednie naklejki „Web Service”, które zostały nałożone na poprzednie naklejki „JEE”, które zostały nałożone na .... Masz pomysł. W rezultacie, jako programiści, siedzimy przy przeciąganiu i upuszczaniu wielobitowych ikon na ekranie, aby tworzyć „KOMPONENTY” SOA, które działają w połowie tak dobrze, jak gdybyśmy zrobili to z czymś prostym, takim jak fasola EBJ3, komponenty sprężynowe itp. .

Więc moja rada jest taka, że ​​jeśli zostaniesz zapytany o SOA, powiedz „Tak, zrobiłem SOA, napisałem wiele systemów, które wykorzystują architekturę zorientowaną na usługi do robienia różnych rzeczy. O którą technologię SOA pytasz?”. A jeśli zaczną rozmawiać ze świecącymi oczami i tęsknym spojrzeniem na temat KOMPONENTÓW SOA, PRZECIĄGNIĘCIA I UPADKU oraz tego, jak ułatwia to rozwój. Odsuń się powoli i unikaj kontaktu wzrokowego!

drekka
źródło
2

Myślę, że może to mieć sens: jedna rzecz ma miejsce, gdy wywoływane są moduły „slave”, gdy jest to potrzebne, a druga dotyczy sytuacji, gdy procesy usługi / demona działają niezależnie i reagują na twoje żądania, być może rozmawiają ze sobą, żyją innymi słowy własne życie. Dzięki takiemu podejściu możesz mieć ogromny, skalowalny, fizycznie rozproszony system. Widziałem na przykład telefonię komórkową. Ale to tylko przypuszczenie.

(Zobaczmy teraz, co Wikipedia mówi o SOA ... Whoa.)

mojuba
źródło
Podsumowując. Architektura jest SOA, jeśli działa więcej niż jeden proces, a każdy proces ma inne zadanie i rozmawiają ze sobą w jakiś sposób?
JohnFx,
@JohnFx: Tak. W ten sposób łatwiej jest zbudować wysoce skalowalne i wysoce dostępne / redundantne systemy.
mojuba,