Voordat we verder gaan met onze integratiereis, moeten we eerst begrijpen hoe het mogelijk is om een niveau van communicatie tussen verschillende systemen te bereiken.
In eerste instantie was er een eenvoudige methode om alle code samen te voegen; de monolithische infrastructuur.
Monolithische infrastructuur verwijst naar een type softwarearchitectuur waarbij een volledige applicatie wordt gebouwd als een enkele, zelfstandige eenheid. Dit betekent dat alle verschillende componenten van de applicatie nauw geïntegreerd en onderling afhankelijk zijn, en dat eventuele wijzigingen of updates aan de applicatie vereisen dat de volledige applicatie opnieuw wordt opgebouwd en opnieuw wordt geïmplementeerd.
Een monolithische applicatie kan een software systeem zijn dat alle aspecten van het bedrijf van de kerstboomkwekerij behandelt, van het beheren van voorraad en bestellingen tot het verwerken van betalingen en het verzenden van bomen. Al deze verschillende functies zouden nauw geïntegreerd en afhankelijk van elkaar zijn binnen hetzelfde software systeem.
Hoewel monolithische infrastructuur een eenvoudige en directe manier kan zijn om een applicatie te bouwen, kan het ook inflexibel en moeilijk schaalbaar zijn naarmate de applicatie groeit. Het stilleggen van een proces zou ertoe leiden dat de hele infrastructuur stopt. Eventuele wijzigingen in de applicatie vereisen dat het volledige systeem opnieuw wordt opgebouwd en geïmplementeerd, wat tijdrovend en verstorend kan zijn.
Waar de monolithische infrastructuur ooit een belangrijk onderdeel was van de IT-wereld, is deze niet meer zo dominant. In de afgelopen jaren zijn veel bedrijven overgestapt van monolithische infrastructuur naar meer modulaire en schaalbare architecturen, zoals microservices of containerisatie. Deze architecturen stellen bedrijven in staat om hun applicaties op te splitsen in kleinere, flexibelere componenten die onafhankelijk van elkaar kunnen worden bijgewerkt en geïmplementeerd.
Met de behoefte om zaken continu te laten werken, is er een handiger keuze gekomen in de infrastructuurwereld: Service-georiënteerde architectuur.
Stel je voor dat je een groot Lego-kasteel bouwt. Je hebt veel verschillende Lego-stukjes, zoals blokken, ramen en deuren. Om het kasteel te bouwen, moet je al deze stukjes op de juiste manier samenvoegen.
Service-georiënteerde architectuur lijkt een beetje op het bouwen van een groot Lego-kasteel. Maar in plaats van Lego-stukjes heb je verschillende computerprogramma’s die je wilt gebruiken om een groter programma te bouwen. Net als met Lego-stukjes moet je deze programma’s op de juiste manier samenvoegen om een groter programma te maken.
In Service-georiënteerde architectuur (SOA) is elk programma als een kleine werker die een specifieke taak uitvoert, genaamd een ‘service’. Elke service kan communiceren met andere services en samenwerken om doelen te bereiken. Het is alsof alle kleine Lego-werkers samenwerken om het kasteel te bouwen door de stenen en gereedschappen die ze nodig hebben aan elkaar door te geven.
SOA is een manier om grote programma’s te bouwen door kleinere programma’s samen te stellen die samenwerken en met elkaar communiceren, net zoals Lego-werkers een kasteel bouwen.
Door de code op te splitsen in kleinere bouwstenen, heeft Service-georiënteerde architectuur tot doel een robuuste, onderling verbonden structuur te creëren die ook dient als basis voor het creëren van nieuwe processen.
Om terug te komen op het voorbeeld van de kerstboomkwekerij, kan een SOA-aanpak betekenen dat het software systeem van de kwekerij wordt opgesplitst in kleinere, onafhankelijke services, waarbij elke service een specifiek aspect van het bedrijf behandelt. Er zou bijvoorbeeld een service kunnen zijn voor het beheren van de voorraad, een andere service voor het verwerken van bestellingen, een service voor het afhandelen van betalingen en een service voor het verzenden van bomen.
Deze services zouden allemaal met elkaar communiceren via gestandaardiseerde interfaces, waardoor ze naadloos kunnen samenwerken, zelfs als ze zijn ontwikkeld met verschillende programmeertalen of technologieën. We kunnen deze herbruikbare bedrijfsservices bundelen in geavanceerdere processen. Bijvoorbeeld, de kerstboomkwekerij zou willen dat alleen niet-mobiele gebruikers bestellingen kunnen annuleren, terwijl mobiele gebruikers deze functionaliteit niet hebben. We kunnen beide geavanceerde processen creëren door dezelfde herbruikbare services te gebruiken.
Het gebruik van een SOA-benadering kan verschillende voordelen hebben. Het biedt meer flexibiliteit en schaalbaarheid naarmate de applicatie groeit, omdat elke service onafhankelijk kan worden ontwikkeld en geïmplementeerd. Het stelt bedrijven ook in staat om bestaande services opnieuw te gebruiken in verschillende applicaties, wat op de lange termijn tijd en middelen kan besparen.
Bij het verkopen van een boom willen we ook dat de onderliggende herbruikbare bedrijfsprocessen van de opslagruimte en de financiële afdeling een actie uitvoeren:
- Een boom verwijderen uit onze opslagruimte-database
- De verkoop toevoegen aan onze balans
Meestal gebeurt dit door middel van een tussenpersoon: application programming interfaces, ofwel APIs.