SOA(Service Oriented Architecture) en microservices zijn twee verschillende manieren om de technische architectuur van een project te beschouwen. Bij de uitvoering van een technisch project rijst vanaf het begin de vraag naar de architectuur ervan. Hoewel sommige IT-managers een systematische voorkeur hebben voor een van beide architecturen, is het verstandiger het project in zijn geheel te bekijken om de juiste keuze te maken.

En het antwoord is moeilijk te geven omdat men moet anticiperen op de schaalbaarheid van het project en de evolutie ervan op korte, middellange en lange termijn. Toch is de vraag cruciaal: monolithische architectuur, SOA of microservices? Ontdek de overeenkomsten en verschillen tussen twee systemen om de beste beslissing te nemen.

SOA, microservices: twee architectuurstijlen

SOA-architectuur

SOA werd gecreëerd om interoperabiliteitsproblemen op te lossen, bijvoorbeeld wanneer twee toepassingen die op verschillende technologieën draaien (Java en .Net, Windows en Linux, enz.) met elkaar moeten communiceren.

In een SOA moeten alle toepassingen verbinding maken met eenEnterprise Service Bus (ESB) om te kunnen communiceren met andere toepassingen. De ESB fungeert als ruggengraat van de integratie, waarlangs softwarediensten en applicatiecomponenten stromen. Via de ESB kunnen gegevens worden getransformeerd, aangevuld en verrijkt.

De MS microservice-architectuur: geen "spaghettischotel" meer.

De microservice-architectuur is ontstaan om schaalbaarheidsproblemen van de "spaghettischotel" op te lossen. Dit is de uitdrukking die wordt gebruikt om een reeks diensten te beschrijven die sterk gekoppeld zijn. Zo sterk gekoppeld dat het moeilijk wordt om de ene dienst te wijzigen zonder de andere te beïnvloeden.

Een microservice-applicatie is een reeks losjes gekoppelde microservices. Elke microservice kan onafhankelijk worden gewijzigd en geleverd, zonder de andere services te beïnvloeden. In dit opzicht kunnen we zeggen dat de microservice-architectuur een evolutie is van de SOA. Zij biedt een fijnere granulariteit om tegemoet te komen aan nieuwe behoeften, zoals het verkorten van de "time to market" door alleen het strikt noodzakelijke te leveren en te testen.

Een microservice is :

  • elastisch: schaalbaar onafhankelijk van andere microservices.
  • Veerkrachtig: als deze dienst crasht, mag dat geen gevolgen hebben voor andere microdiensten.
  • samenstelbaar: het moet een interface bieden die het gebruik ervan vergemakkelijkt
  • minimaal: de dienst moet slechts één ding doen (dit wordt sterke samenhang genoemd)
  • compleet: de dienst moet alleen werken.

Vaak wordt gezegd dat een microservice minimaal maar compleet moet zijn.

De beperkingen van een microservice-architectuur

De microservice-architectuur creëert nieuwe beperkingen en moeilijkheden om deze zwakke koppeling van microservices mogelijk te maken.

Het beste voorbeeld is databasebeheer. Aangezien elke microservice zijn eigen database heeft, is communicatie tussen microservices nodig om de databases bij te werken en de gegevensconsistentie te handhaven (via een berichtensysteem zoals ActiveMQ of Kafka). In SOA heeft een applicatie die verschillende diensten groepeert echter slechts één database.

Waarom een microservice-architectuur implementeren?

Een monolithische applicatie heeft de neiging om slecht te verouderen: elke nieuwe toevoeging van functionaliteit of bug fix kan leiden tot regressie. Dit komt doordat bepaalde stukken code of methoden door verschillende diensten worden hergebruikt.

De monolithische applicatie is ook moeilijker te testen omdat er meer randvoorwaarden voor nodig zijn (LDAP, database, mail, enz.) dan voor een eenvoudige microservice.

Dankzij de microservice-architectuur kan elke dienst onafhankelijk worden beheerd: evolutie, levering en prestaties.

Met welke technologieën werken microservice-architecturen?

De leercurve voor de verschillende concepten en tools die nodig zijn om een microservice-architectuur te implementeren, mag niet worden verwaarloosd.

Zo zijn er bijvoorbeeld :

  • het Spring Boot Framework: dit vergemakkelijkt het maken van standalone toepassingen (waarvoor geen applicatieserver zoals JBOSS nodig is)
  • Apache Kafka: berichtensysteem voor communicatie tussen microservices
  • API gateway: maakt beheer (beveiliging, logs) en centralisatie van microservices mogelijk
  • Logstash / Kibana: maakt centralisatie van logs van microservices mogelijk
  • Docker: hiermee kun je je microservices op containers laden om ze te testen
  • Devops: laat u toe uw microservices snel te ontwikkelen, te testen en uit te rollen.
  • Kubernetes: hiermee kunt u het beheer van uw docker-containers automatiseren.

De overgang van SOA naar microservices kan dus een moeilijke oefening zijn. Het gaat om het leren gebruiken van nieuwe concepten: Kafka, Docker, devops, continue integratie, unit tests en integraties, enz. De transformatie betreft de tools, via modernere en flexibelere modellen, en de 'cultuur' van projectmanagement. Wat betreft de migratie van een monolithische applicatie naar meerdere microservices, dat is nog moeilijker: alle functionaliteiten moeten worden opgesplitst in onafhankelijke diensten, de hele database moet opnieuw worden doordacht, en interacties tussen microservices via berichten moeten worden toegevoegd.

Op Blue Soft kunnen we u helpen met dit proces en u onze knowhow in microservices ter beschikking stellen. Laat onze Digital Experts u vergezellen om uw project te bespreken!

Deel dit artikel!