Tjenesteorientert arkitektur

Tjenesteorientert arkitektur (engelsk: service-oriented architecture, SOA) er en arkitekturstil laget for å integrere datasystemer på en mer kostnadseffektiv måte.

Når den er riktig utformet gir tjenesteorientert arkitektur muligheten for løst koblede applikasjoner. Dette i motsetning til tett koblede applikasjoner. Endringer i tett koblede systemer er veldig kostnadskrevende da alle systemene som integrert må endres hvis ett system endres. Ved hjelp av tjenesteorienterte arkitekturmønstre kan man få til løst koplede systemer der man får et mellomlag i arkitekturen som isolerer endringen fra de tjenestekonsumentene. Systemer som bruker tjenesten forholder seg til en kontrakt (WSDL) som danner tjenestens grensesnitt. Hvordan dette grensesnittet er implementert holdes usynlig for tjenestekonsumenten.

For eksempel tilbyr vevtjenester (web services) de åpne standardene som er nødvendige for å kunne implementere allsidige, gjenbrukbare forretningsfunksjoner slik at man kan dele opp komplekse forretningsprosesser til enkle, administrerbare enheter.

Sentralt i den tjenesteorienterte arkitekturen er komponenten kalt tjenestebuss (enterprise services bus, ESB). Denne danner limet mellom de forskjellige systemene som skal integreres. Tjenestebussen skal etter beste praksis være tynn og kun utføre VETRO (verify, enrich, transform, route, operate, direkte oversatt: «verifisering, berikelse, transformasjon, ruting og drift»). Tilstand og logikk skal ikke implementeres på tjenestebussen, men i andre lag i arkitekturen.

Til behandling av tilstand og logikk i såkalte orkestreringsprosesser har man utviklet standarden Business Process Execution Language (BPEL). BPEL muliggjør orkestrering, det vil si å sette sammen tjenester til mer sammensatte tjenester, som da kan leve over lengre tid. En BPEL prosess kan vare lenge og huske sin tilstand. Det er mulig at prosessen dehydrerer (lagres på disk) for så å våkne ved en hendelse som vekker opp prosessen igjen.