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:
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ě.
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.
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ů:
SOA může být považováno za pokračování starších konceptů jako distribuované programování nebo modulární programování.