10 januari 2020 · Rutger Haagsma
Waar hoort business logica binnen het 5-lagen model van Common Ground?
De afgelopen maanden heb ik veel gesprekken gevoerd met mensen die actief zijn in de common ground. Bijeenkomsten bijgewoond en presentaties gezien. Mijn indruk is dat er een redelijk goed beeld is van wat de lagen 1, 2 en 3 moeten zijn. Sterker: ik heb indrukwekkende performance cijfers gezien van NLX en we hebben succesvol gebruik gemaakt van de API’s voor Zaakgericht Werken.
Nu komen laag 4 en 5 in beeld, ‘interactie’ en ‘procesinrichting’. Wat doen deze lagen? Met welke techniek worden ze ingevuld? En waar moet ‘business logica’ worden geplaatst? Daarover lijkt nog geen consensus te bestaan. De architecten die ik het afgelopen jaar heb gesproken hebben elk een eigen invulling. Ik zie backend programmeertalen worden toegepast in laag 5 en applicaties gebouwd worden op laag 2. Een mooi doel voor 2020 om daar eenduidigheid in te creëren.
De rest van de wereld
Ik denk dat een van de doelen van Common Ground is om te stoppen met aparte standaarden uit te vinden voor de Nederlandse overheid en te starten met het adapteren wat de rest van de wereld gebruikt. Het gebruik van standaard RESTful API’s in plaats van StUF is hier een goed voorbeeld van.
In de rest van de wereld bestaat al jaren de three-tier architecture. Daarmee worden (web)applicaties gesplist in drie lagen. Elk van deze lagen is ‘los’ onderhoudbaar en ook vervangbaar. Het is de hedendaagse standaard in applicatie-ontwikkeling.
<p></p>
De eerste is de presentatielaag, alles wat in de browser wordt getoond. Tegenwoordig bestaan deze technisch vaak uit Javascript frameworks zoals Vue, Angular en React of apps op Android of iOS. De presentatielaag heeft veel te maken met hoe we het de eindgebruiker makkelijk maken. Het is het domein van grafisch ontwerpers en UI-specialisten.
Daaronder bevindt zich de logicalaag. Met de term business logica wordt de kern van een applicatie bedoeld. Het is het brein van softwarepakketten, alles wat tussen de interface en de datalaag gebeurt. Er worden berekeningen gedaan, volgordelijkheid bijgehouden (proces of state) en functies uitgevoerd. Denk hier aan frameworks en talen als Symfony, Spring, ASP.NET, Django, Rails, Go, Phyton en Node.js. In deze laag worden ook de standaarden BPMN en DMN ingezet. Het is het domein van de backend programmeurs.
Tot slot is er de datalaag – waarin de data die door de applicatie wordt verwerkt wordt opgeslagen. Het is het werkterrein van DBA’s een thema zoals data lakes (het voorkomen van data replicatie) spelen hier.
De drie lagen vormen samen de applicatie, dus een toepassing. Deze aanpak is de standaard voor webapplicatie ontwikkeling. Past deze standaard op het 5-lagen model van Common Ground?
Het 5-lagen model
<p></p>
Laag 1 en 2 lijken me samen de Data tier. Ze zorgen voor de (centrale) opslag van data, authorisatie en logging. Het idee van Haal Centraal komt aardig overeen met het concept van Data Lakes om silovorming te voorkomen.
Laag 3 (NLX) is een beetje een vreemde eend in de bijt. Het is eigenlijk technische infrastructuur – maar door deze hier weer te geven wordt duidelijk dat data bij de bron gehaald kan worden.
Dan zou laag 4 de Logic Tier kunnen zijn. Deze heet echter ‘procesinrichting’. Dat roept vragen op: is deze laag alleen bedoeld voor bedrijfsprocessen – en zo ja, waar is dan de rest van de logica? Waar doen we berekeningen zoals het bepalen van een risicoscore, waar voeren we functies uit zoals het generen van een PDF’s, waar zitten de beslistabellen?
De interactie laag 5 sluit wel weer mooi aan bij Presentation Tier in het model: de user interfaces, de ontsluiting van informatie naar de eindgebruikers. Dus daar vinden we de javascript frameworks, de UI-specialisten en de apps.
Gemma en business logica
Wellicht dat het Gemma Gegevenslandschap meer licht op kan werpen op de plaats van de logica.
<p></p>
Hier staat dat laag vier proces, bedrijfsregels en analyse bevat. Vanuit mijn vakgebied interpreteer ik dat als BPMN, DMN en BI. Een deel van de business logica kunnen we dus kwijt in deze laag.
Het enig wat nu nog overblijft zijn functies zoals transactionele e-mail, het doen van berekeningen of het generen van pdf’s. Deze zouden prima een plek kunnen hebben in laag 2. Dit zijn standaard via een API benaderbare diensten die generiek aangeboden kunnen worden. De naam services van laag 2 sluit hier ook goed bij aan. Naast toegang tot data kan hier dan toegang tot functies aan toegevoegd worden.
Hiermee sluit het 5-lagen model goed aan bij het 3-tier model van de rest van de wereld en is Common Ground ‘gewoon’ Enterprise architectuur geworden
Gedachten
Eens of oneens? Plank mis? Ik hoor graag je ideeën.