SOA neboli service-oriented architecture, tedy architektura orientovaná na služby je styl návrhu software, u kterého jsou ostatním komponentám zpřístupněny služby skrze komunikační protokol využívající síť. Základním principem service-oriented architektury je, že není závislá na dodavatelích, produktech a technologiích. Služba je diskrétní jednotka funkcionality, ke které může být přistupováno vzdáleně a může být nezávisle spouštěna a aktualizována, jako například u online získávání výpisu z kreditní karty.

Služba má podle definice SOA čtyři vlastnosti:

  • Logicky reprezentuje obchodní aktivitu se specifickým výstupem.
  • Obsahuje sama sebe.
  • Pro uživatele se jedná o black box, neví tedy, co se děje uvnitř služby.
  • Může obsahovat další služby.

Různé služby mohou být použity společně, tak aby zajistily funkcionalitu velké softwarové aplikace. Tento princip SOA sdílí s modulárním programováním. Service-oriented architektura integruje distribuované, odděleně udržované a nasazované softwarové komponenty. To je umožněno využitím technologií a standardů, které usnadňují komunikaci mezi komponentami a spolupráci po síti, zvláště za využití IP sítě.

Specifika SOA

V SOA jsou služby protokoly, které popisují, jak posílají a parsují zprávy za pomoci popisných metadat. Tato metadata popisují funkční charakteristiky služby i kvalitativní charakteristiky služby. Service-oriented architektura se snaží uživatelům umožnit kombinovat velké objemy funkcionalit, tak aby vytvořili aplikace, které jsou postavené čistě na existujících službách, které jsou následně podle potřeby zkombinovány.

Služba reprezentuje jednoduchý interface pro requester, které abstrahuje komplexitu a chová se tak jako black box. Další uživatelé tak mohou k těmto nezávislým službám rovněž přistupovat, aniž by věděli, jak funguje jejich vnitřní implementace.

Definující koncepty

SOA funguje na principu volného navázání služeb. Služby tak rozdělují funkce do samostatných jednotek, ke kterým mohou vývojáři přistupovat přes síť a umožnit tak uživatelům, aby je volně kombinovali a znovu používali v produkční verzi aplikací. Tyto služby a jejich odpovídající konzumenti spolu komunikují tak, že si posílají data v jasně definovaném sdíleném formátu, nebo tím že koordinují aktivitu mezi dvěma nebo více službami.

V říjnu 2009 byl zveřejněn manifest, který definoval šest klíčových konceptů:

  • Obchodní hodnota má vyšší důležitost nežli technická strategie.
  • Strategické cíle mají vyšší důležitost nežli benefity pro konkrétní projekt.
  • Vzájemná kompatibilita má vyšší důležitost nežli kustomizovaná integrace.
  • Sdílené služby mají vyšší důležitost nežli specifické implementace.
  • Flexibilita má vyšší důležitost, nežli optimalizace.
  • Postupné zlepšování má vyšší důležitost nežli snaha o dokonalost od samotného počátku.

SOA může být považováno za pokračování starších konceptů jako distribuované programování nebo modulární programování.

Výhody použití SOA

  • Znovupoužitelnost služeb. Aplikace jsou stavěny skládáním malých částí funkcionality. Díky tomu lze služby znovupoužívat napříč aplikacemi.
  • Jednoduchá údržba. Služba je samostatnou jednotkou, může být snadno aktualizovaná nebo udržovaná bez vlivu na další služby. Díky tomu je údržba rozsáhlých komplexních aplikací snazší.
  • Větší spolehlivost. Vzhledem k tomu, že malé nezávislé služby je jednodušší testovat a opravovat, SOA umožňuje větší spolehlivost.
  • Škálovatelnost a dostupnost. Více instancí stejné služby může být spuštěno na různých serverech ve stejnou chvíli. To zvyšuje škálovatelnost i dostupnost.
  • Nezávislost na platformě. SOA umožňuje vytvořit komplexní produkt integrací různých produktů od odlišných dodavatelů nezávisle na platformě a technologii.
  • Zvýšená produktivita. Vzhledem k tomu, že není nutné vyvíjet vše od úplného začátku, zvyšuje se produktivita vývoje.

Nevýhody použití SOA

  • Výkon. Tím, že dochází k interakcím s dalšími službami, je nutná kompletní validace každého parametru. To zvyšuje dobu odezvy.
  • Komplexní správa služeb. Tím, jak si služby vyměňují zprávy, aby vykonaly svou roli, počet zpráv může stoupat do milionů pro jedinou aplikaci. Tak velké množství služeb je obtížné řídit.
  • Vysoká vstupní investice. Technologie, vývoj i lidské zdroje vyžadují vysokou počáteční investici.