мини|454x454piksel|Dijagram servisno orijentisane arhitekture (SOA) Сервисно оријентисана архитектура (енгл. Service-oriented architecture, скраћено SOA) представља архитектонски стил у софтверском инжењерству који се заснива на организацији система у облику независних сервиса, уместо као јединствене монолитне целине. SOA се често користи у интеграцији информационих система, јер омогућава комуникацију између различитих апликација путем мрежних протокола.
Сервис представља самосталну јединицу функционалности којој се може приступити преко мреже и која се може независно развијати, одржавати и ажурирати. Примери сервиса укључују онлајн плаћања, приступ банкарским изводима или аутентификацију корисника. Сервисно оријентисана архитектура тежи независности од конкретних технологија, платформи и произвођача софтвера.
Преглед У оквиру SOA архитектуре, сервиси комуницирају путем стандардизованих протокола и размењују поруке дефинисане метаподацима. Метаподаци описују функционалне карактеристике сервиса, али и његов квалитет услуге. Корисници могу комбиновати више сервиса како би изградили сложеније апликације, без познавања унутрашње имплементације појединачних компоненти.
SOA се често повезује са концептом API-ја (енгл. Application Programming Interface), који представља интерфејс за комуникацију између различитих делова софтверског система. Док API представља конкретан интерфејс сервиса, SOA представља архитектуру која омогућава њихово функционисање и међусобну сарадњу.
Сервисно оријентисана архитектура не треба се мешати са сервисно заснованом архитектуром (енгл. Service-based architecture), јер је реч о различитим архитектонским приступима.
Основни концепти SOA промовише концепт лабаве повезаности (енгл. loose coupling) између сервиса. Функционалности система раздвајају се у засебне сервисе који комуницирају преко мреже користећи унапред дефинисане формате података.
Сервис се обично описује следећим карактеристикама:
представља поновљиву пословну активност; самосталан је и независан; кориснику приказује само интерфејс, без откривања унутрашње логике; може бити састављен од других сервиса.
SOA се развио из ранијих концепата као што су дистрибуирано рачунарство, модуларно програмирање и компонентно оријентисани системи, а касније је утицао на развој рачунарства у облаку, SaaS модела и микросервисне архитектуре.
Принципи Иако не постоји јединствени индустријски стандард за SOA, најчешће се издваја неколико основних принципа:
стандардизован уговор сервиса — сервиси користе јасно дефинисане интерфејсе; апстракција сервиса — унутрашња логика сервиса сакривена је од корисника; аутономија сервиса — сваки сервис функционише независно; поновна употребљивост — сервиси се могу користити у различитим системима; компоновање сервиса — више сервиса може се комбиновати у сложеније процесе; откривање сервиса — сервиси садрже метаподатке који омогућавају њихово проналажење; безстатусност — сервиси по правилу не чувају информације о претходним захтевима.
Улоге у SOA архитектури У сервисно оријентисаној архитектури разликују се три основне улоге:
Пружалац сервиса Пружалац сервиса (енгл. service provider) креира сервис и објављује информације о њему. Он одлучује које функционалности ће бити доступне, као и који ниво безбедности и доступности сервис треба да има.
Регистар сервиса Регистар сервиса (енгл. service registry или service broker) омогућава проналажење доступних сервиса. Један од раних покушаја стандардизације оваквог система био је UDDI.
Корисник сервиса Корисник сервиса (енгл. service consumer) претражује регистар и повезује се са одговарајућим сервисом ради извршавања одређене функционалности.
Имплементација Сервисно оријентисана архитектура може бити реализована различитим технологијама и протоколима. Најчешће се користе:
SOAP и WSDL; REST; gRPC; Apache Thrift; RabbitMQ; JMS; CORBA; Windows Communication Foundation (WCF).
SOA системи могу функционисати независно од програмских језика и платформи. На пример, сервис написан у Java програмском језику може комуницирати са сервисом написаним у C#-у преко стандардизованог интерфејса.
Предности Главне предности сервисно оријентисане архитектуре укључују:
лакшу интеграцију различитих система; поновну употребу постојећих компоненти; већу флексибилност и скалабилност; независан развој и одржавање сервиса; једноставније тестирање и ажурирање система.
SOA омогућава организацијама брже прилагођавање променама пословних захтева и ефикасније коришћење постојеће ИТ инфраструктуре.
Критике Једна од најчешћих критика SOA архитектуре односи се на повећану сложеност система и додатне трошкове комуникације између сервиса. У појединим случајевима, системи засновани на SOA могу захтевати више процесорске снаге и сложеније управљање метаподацима.
Проблем може представљати и тестирање великог броја независних сервиса, као и координација између различитих организација и технологија.
Микросервиси Микросервиси представљају савремену варијанту сервисно оријентисане архитектуре. У микросервисној архитектури систем је подељен на велики број малих, независних сервиса који комуницирају преко мреже.
Микросервиси су постали посебно популарни након развоја DevOps пракси и рачунарства у облаку, јер омогућавају континуирано развијање и независно распоређивање компоненти система.
Види још
Микросервиси Рачунарство у облаку API DevOps
Референце
Спољашње везе
Service-oriented architecture — IBM What is SOA? — Red Hat