SOA (Service-Oriented Architecture) definiuje koncepcję tworzenia systemów informatycznych przedsiębiorstw zorientowanych na usługi. Polega na współdzieleniu pomiędzy wieloma aplikacjami sprawdzonych komponentów.
Jej standard oparty jest na otwartych usługach, dzięki czemu jest bardzo elastyczna. Nie jest zależna od żadnej technologii czy języka progowania. Stanowi zbiór dobrych praktyk.
Cechy SOA
- samowystarczalność – usługa nie powinna wymuszać integracji z innymi systemami na niższym poziomie. Potrafi działać samodzielnie, ale jest również zdolna do komunikacji z innymi systemami na wyższym poziomie.
- luźne powiązanie – logika powinna być odizolowana od interfejsu. Zmiana implementacji nie może wpłynąć na zmianę interfejsu.
- wykrywalność – łatwe do odszukania jako usługa.
- bezstanowość – sesja powinna nie mieć wpływu na inną.
- wielokrotnie stosowana – raz stworzona usługa powinna być elastyczna i możliwa do wykorzystania ponownie.
- komponentalność – zbudowany z mniejszych części (warstw), które są odizolowane od siebie.
- technologicznie niezależna – oparta na otwartych usługach, niezależna od języka programowania i technologii.
Standardy bezpośrednio związane z SOA
- XML
- XSD
- SOAP
- WSDL
- UDDI
- SCA
- JBI
*Są to standardy komunikatów wymiennie pomiędzy usługami.
Podział
- Podstawowe – np. Web Service (pojedyncza usługa).
- Złożone – agregacja na poziomie niższym. Co najmniej dwie usługi, które ze sobą współpracują. Np. system dokonywania zakupu, współpracujący z systemem zamawiania dostawcy.
- Procesowa – cały kompleks usług. Np. Od przestawienia oferty, przez zamawianie, dokonywanie płatności, wyboru dostawcy do prezentowania statusu zamówienia i oceny sprzedającego.
Cechy
- Granulowość usługi
- Niezależny od platformy
- Standardy
- Ponowne Zastosowanie
- Skalność
Kiedy używać SOA?
- wymagana integracja systemów
- ponownie chcemy wykorzystać raz stworzony system informatyczny
- chcemy uzyskać łatwy dostęp do zasobów
- łatwe modernizowanie i utrzymanie oraz rozbudowa
- wymagane udostępnianie API
Gdzie spotykamy SOA?
- Cecha systemów rozproszonych
- Gdzie wymagana jest integracja z innymi systemami
- Gdzie ważny jest interfejs a nie sama implementacja