SOA | Henrik Hvid Jensen
Forfatter og projektchef hos Devoteam
Som lovet i "
Hændelser er vigtige for forretningen" kommer her en ny blog om hændelser. Dette indlæg handler om, hvorfor jeg ser hændelser som en naturlig og vigtig ingrediens i en SOA.
SOA er en tilgang til distribueret computerbehandling, hvor softwarefunktionalitet tilbydes som services på et netværk.
En hændelsesbaseret arkitektur er en tilgang, hvor en
forretningshændelse afstedkommer, at en asynkron besked sendes mellem uafhængige softwareenheder. Beskeden er envejs i forhold til service-interaktioner, hvor kommunikationen typisk er en tovejs anmod/svar-kommunikation mellem en serviceforbruger og en serviceleverandør.
Hændelsesbaseret arkitektur er ikke en separat arkitektur-tilgang, men er et væsentlig element i, hvordan en virksomhed bør implementere SOA.
Fokus på forretningshændelserPrincippet i hændelser har været kendt længe på et teknisk niveau inden for systemsoftware såsom operativsystemer, netværk- og systemhåndteringsværktøjer. Det er ikke disse hændelsestyper, som der skal fokuseres på. Fokus vil være på hændelser, der sker i relation til organisationens forretningsområde.
En hændelse er information om, at noget
er sket; et servicekald er et ønske om, at noget
skal ske.
En afsendelse af en indkøbsordre til en leverandør er et servicekald, udsendelse af information om, at ”
indkøbsordre er afsendt” eller ”
indkøbsordre er modtaget” er en hændelse.
En hændelsesafsender sender typisk beskeden gennem noget middleware (kaldet en sink), som er ansvarlig for håndtering af abonnenterne på de enkelte hændelsestyper. Sinken offentliggør beskeden til de enheder, som abonnerer på hændelsen. Abonnenterne vil derefter foretage sig nogle aktiviteter baseret på hændelsen. Disse aktiviteter er helt uvedkommende for afsenderen af hændelsen og vil være forskellige for de enkelte modtagere.
Når der diskuteres it-arkitektur, er det typisk beskeden, der sendes mellem softwareenhederne, der betragtes som hændelsen. Selve hændelsen indkapsler en specifik aktivitet og er en
komplet beskrivelse af denne.
Hvornår er det en service og hvornår er det en hændelse?
Når jeg præsenterer hændelseskonceptet, er der ofte nogle, der begynder en diskussion mellem hvornår er det en hændelse og hvornår er det en service?
En ”
rigtig” hændelse har følgende karakteristika:
- Afsenderen har ingen afhængighed til, hvad modtageren gør med beskeden
- Der sendes intet forretningsmæssigt svar tilbage. Dog ofte en teknisk bekræftelse på modtagelse af beskeden
- Hændelsen udsendes når den sker (dvs. ingen batch opsamling der udsendes i løbet af natten).
- Modtageren har oprettet abonnement på hændelsen
- Meddelelsen indeholder forretningsrelevant information
Der vil altid være gråzoner, hvor det kan diskuteres om det er en service eller en hændelse, men det er ligegyldigt. Det vigtige er, at forretningen tænker og forstår konceptet og forretningsmulighederne omkring hændelser og
selvfølgelig også services.
I elektronisk tinglysning opererer vi med både services og hændelser og nogle der ligger i en gråzone:
- Helt klart en service: Forespørg på ejendom
- Jeg ser det som en service: Når der indsendes en anmeldelse kommer, der et øjeblikkeligt svar om, at den er modtaget. Når den er behandlet (efter f.eks. 15 sek.) kommer der et asynkront svar retur til anmelderen. Jeg betragter dette som svaret på servicekaldet
- Helt klar en hændelse: Hver gang der sker en tinglysning udsendes en hændelse til alle, der abonnerer på den pågældende ejendom
- Jeg mener også, dette er en hændelse: Når der tinglyses et skøde, sender e-TL en asynkron besked til beliggenhedskommunen og SKAT. De abonnerer ganske vist ikke selv, men jeg ser det som et lovpligtigt tvangsabonnement.
Central komponentHændelsesbaseret design vil blive en central komponent i forretningsarkitekturen og i it, fordi det giver muligheder for at understøtte dynamiske og mangesidede forretningsprocesser.
Hændelser vil komplementere, ikke udskifte, services i en serviceorienteret arkitektur, og services og hændelser bør derfor ikke betragtes som to separate koncepter. Det er gennem en kombination af serviceorientering og hændelsesbaseret design, at virksomheden vil opnå den ønskede behændighed.