Što je servisno orijentirana arhitektura?

Uslužno orijentirana arhitektura (SOA) pojavila se početkom ovog stoljeća kao evolucija distribuiranog računanja. Prije SOA-e, usluge su se shvatile kao krajnji rezultat procesa razvoja aplikacija. U SOA-i se sama aplikacija sastoji od usluga. Usluge se mogu pružati pojedinačno ili kombinirati kao sastavni dijelovi veće, složene usluge.

Usluge komuniciraju putem žice pomoću protokola kao što je REST ili SOAP (Simple Object Access Protocol). Usluge su labavo povezane , što znači da je sučelje usluge neovisno o temeljnoj implementaciji. Programeri ili sistemski integratori mogu sastaviti jednu ili više usluga u aplikaciji, a da ne moraju nužno znati kako se svaka usluga implementira.

Ovaj je članak pregled Java SOA-e i ključnih karakteristika arhitekture orijentirane na usluge implementirane pomoću web-usluga temeljenih na SOAP-u. Također ću ukratko usporediti SOA i mikroservise i razgovarati o razlici između RESTful-a i web-usluga utemeljenih na SOAP-u u Javi.

SOA i web usluge

SOA i web usluge često se povezuju, ali nisu isto. SOA je arhitektura koja omogućava programerima da kombiniraju više aplikacijskih usluga u veću, složenu uslugu. SOA se može implementirati pomoću web usluga utemeljenih na SOAP-u ili REST API-ja, ili ponekad kombinacije oboje. Važno je razumjeti da je u SOA-i usluga bilo koji udaljeni resurs koji može odgovoriti na zahtjeve. Web servis se provodi pomoću specifičnih protokola.

Zašto arhitektura orijentirana na usluge?

SOA rješava tri uobičajena poslovna izazova:

  • Brzo reagirajte na poslovne promjene.
  • Iskoristite postojeće infrastrukturne investicije.
  • Podržati nove kanale interakcije s kupcima, partnerima i dobavljačima.

Poduzetnička infrastruktura je heterogena u odnosu na operativne sustave, aplikacije, sistemski softver i aplikacijsku infrastrukturu. Kao rezultat toga, mnogi se sustavi poduzeća sastoje od složenih i nedosljednih aplikacija koje pružaju niz međusobno ovisnih usluga. Postojeće aplikacije koje izvode trenutne poslovne procese su ključne, pa je kretanje od nule ili njihovo mijenjanje osjetljiv prijedlog. No, poduzeća moraju biti u mogućnosti modificirati i proširiti tehničku infrastrukturu kako bi udovoljila poslovnim zahtjevima.

SOA i mikrousluge

Microservices je arhitektonski stil razvijen iz SOA-e. Obje su distribuirane arhitekture i obje nude nevezanu paradigmu. Dok je arhitektura usmjerena na usluge teže infrastrukturi, mikroservisi nude fleksibilniji, lagani stil razvoja. Oboje postoje prednosti i nedostaci, a oboje se široko koristi. Općenito govoreći, SOA češće primjenjuju ili održavaju etablirana poduzeća koja imaju resurse za podršku više formalnosti. Mikroservisi često apeliraju na nove ili rastuće organizacije kojima je potrebna agilnost.

U usporedbi s monolitnom arhitekturom, SOA-ina labavo povezana priroda čini relativno lakim uključivanje novih usluga ili nadogradnju postojećih usluga za nove poslovne potrebe. Također pruža mogućnost da se usluge potroše na različite kanale i da se naslijeđene aplikacije izlažu kao usluge, čime se štite ulaganja u infrastrukturu.

Budući da su labavo povezane, SOA komponente mogu se mijenjati s minimalnim utjecajem na druge komponente. Komponente se također mogu dodavati u arhitekturu na standardiziran način i mogu se prilagoditi tako da adresiraju opterećenje.

Kao primjer, razmotrite kako poduzeće može koristiti niz postojećih aplikacija za stvaranje nove, složene aplikacije lanca opskrbe. Iako su postojeće aplikacije heterogene i raspoređene u različitim sustavima, njihova je funkcionalnost izložena i pristupa im se pomoću standardnih sučelja.

Matthew Tyson

Ključne karakteristike SOA-e

SOA može biti jednostavan kao pojedinačna komponenta koja troši usluge koje pruža druga komponenta ili sofisticiran kao niz komponenata koje međusobno djeluju preko sabirnice poslovnih usluga, kao što je MuleSoft-ov ESB. Bez obzira na opseg, ključ uspješne implementacije SOA-e je koristiti što manje složenosti za postizanje svojih ciljeva. Vaše prvo i posljednje pitanje uvijek bi trebalo biti: Udovoljava li ovaj dizajn našim poslovnim zahtjevima?

Bez obzira na opseg ili složenost, uzorak uslužno orijentirane arhitekture je više-manje isti:

  • Davatelji usluga izlažu krajnje točke i opisuju dostupne radnje na svakoj krajnjoj točki.
  • Potrošači usluga izdaju zahtjeve i konzumiraju odgovore.
  • Davatelji usluga generiraju poruke za obradu zahtjeva.

Provođenje arhitekture orijentirane na usluge

Da biste implementirali SOA, započinjete s osnovnom arhitekturom usluge, a zatim pružate infrastrukturu, što znači protokole i druge alate koji omogućuju komunikaciju i interoperabilnost. Slika 2 prikazuje dijagram tipične arhitekture usluga.

Matthew Tyson

U ovom dijagramu tri potrošača pozivaju na usluge slanjem poruka na sabirnicu servisa poduzeća, koja transformira i usmjerava poruke na odgovarajuću implementaciju usluge. Stroj za poslovna pravila uključuje poslovna pravila u usluzi ili u više usluga. Sloj upravljanja uslugama upravlja aktivnostima kao što su revizije, naplate, i prijavom.

Komponente u ovoj arhitekturi slabo su povezane, tako da ih se može isključiti ili ažurirati s relativno minimalnim utjecajem na aplikaciju u cjelini. To daje poduzeću fleksibilnost za dodavanje ili ažuriranje poslovnih procesa po potrebi. Promjene na pojedinim uslugama uglavnom ne bi trebale u velikoj mjeri utjecati na ostale usluge.

SOAP vs RESTful web usluge

Moguće je usvojiti SOA stil i implementirati ga s REST-om, na primjer koristeći JAX-RS API ili Spring Boot Actuator, ali ta rasprava izvan je opsega ovog članka. Pogledajte "SOAP vs REST vs JSON" za korisnu usporedbu SOAP vs RESTful web usluga. Postoji i neko preklapanje između RESTful web usluga i lakših stilova povezanih s mikrouslugama.

Web usluge temeljene na SOAP-u

Web usluge implementirane pomoću SOAP-a i dalje su krutije od implementacije RESTful web usluga ili mikrousluga, ali daleko fleksibilnije od ranih dana SOA-e. Ovdje ćemo samo pogledati protokole visoke razine potrebne za web usluge temeljene na SOAP-u.

SAPUN, WSDL i XSD

SOAP, WSDL i XSD temeljna su infrastruktura implementacije web usluga zasnovanih na SOAP-u. WSDL se koristi za opisivanje usluge, a SOAP je transportni sloj za slanje poruka između potrošača i davatelja usluga. Usluge komuniciraju s porukama formalno definiranim pomoću XML sheme (XSD). WSDL možete smatrati sučeljem usluge (slabo analogno Java sučelju). Implementacija se vrši u Java tečajevima, a komunikacija preko mreže odvija se putem SOAP-a. Funkcionalno, potrošač će potražiti uslugu, dobiti WSDL za tu uslugu, a zatim pozvati uslugu pomoću SOAP-a.

Sigurnost web usluga

Specifikacija WS-I Basic Profile 2.0 odnosi se na sigurnost poruka. Ova se specifikacija usredotočuje na razmjenu vjerodajnica, integritet poruka i povjerljivost poruka.

Otkrivanje web usluga

Jednom kad je kamen temeljac otkrića web usluga, UDDI (Univerzalni opis, definicija i integracija) nestao je u povijesti. Danas je uobičajeno izlagati web uslugu temeljenu na SOAP-u na način na koji biste to učinili bilo kojoj drugoj usluzi putem URL-a krajnje točke. Kao primjer možete koristiti sučelje krajnje točke usluge JAX-WS i njegove @WebServicei @WebMethodbilješke.

Izgradnja i implementacija web usluga

Java programeri imaju nekoliko mogućnosti za izgradnju i implementaciju web usluga temeljenih na SOAP-u, uključujući Apache Axis2 i Spring-WS; međutim, Java standard je JAX-WS, Java API za XML web usluge. Osnovna ideja koja stoji iza JAX-WS-a je stvaranje Java klasa i dodavanje im bilješki kako bi se stvorili potrebni artefakti. Ispod haube JAX-WS koristi nekoliko Java paketa, uključujući JAXB, knjižnicu opće namjene za vezivanje Java klasa za XML.

JAX-WS skriva temeljnu složenost i protokole od programera, čime se pojednostavljuje postupak definiranja i primjene SOAP usluga temeljenih na Javi. Suvremeni Java IDE-i poput Eclipse uključuju punu podršku za razvoj JAX-WS web usluga. Specifikacija JAX-WS također je odabrana za stalni razvoj u Jakarti EE.

Zaključak

Uslužno orijentirana arhitektura implementirana sa web-uslugama temeljenim na SOAP-u zahtijeva strože i formalnije definicije usluga od RESTful web-usluga ili mikroservisa. Međutim, neke veće organizacije i dalje favoriziraju formalniji stil koji provodi SOAP. Mnogi naslijeđeni sustavi velikih razmjera također su izgrađeni na SOAP-u, a neki B2B i interni sustavi biraju web usluge temeljene na SOAP-u za svoje formalnije definirane API ugovore. Bez obzira razvijate li ili održavate li sustav velikih poduzeća, razumijevanje SOA uzorka i mogućnost procjene mogućnosti za njegovu primjenu dobro će vam poslužiti u programskoj karijeri.

Ova priča "Što je arhitektura usmjerena na usluge?" izvorno je objavio JavaWorld.