fb
Enterprise Integration 5 minuten

API Gateway versus ESB

Is ESB voorbijgestreefd door API Gateways? Of toch nog bruikbaar in integratieoplossingen?

Yenlo
Integration Experts
Blog API Gateway vs ESB
Scroll

Enterprise Service Bus (ESB), ooit een veelgeprezen oplossing voor het Service Oriented Architecture-protocol. Maar zijn de dagen van het centraliseren van applicatie integratie nu geteld? En is de opkomst van API Gateways en Microservices voldoende om alle mogelijke use-cases voor enterprise integraties aan te kunnen? Leer hier meer over API Gateway versus ESB.

Wat is een API Gateway en wat is ESB?

Wat is een API Gateway?

Een API Gateway is een server die de requests voor API’s (Application Programming Interface) behandeld. Een API Gateway is een meer robuustere en veiligere variant van een proxy server. API Gateway geeft de klant een consistente interface, ongeacht eventuele wijzigingen binnen het interne systeem. Het zorgt ervoor dat het interne systeem kan veranderen zonder de klantzijde te beïnvloeden. De API Gateway maakt ook cross-cutting concerns zoals security logging, rapportages en API-analyses mogelijk.

Wat is een ESB?

Net als een API Gateway is een ESB (Enterprise Service Bus) een applicatieoplossing om services te verbinden. Het is een architectuur patroon waarbij een gecentraliseerd softwarecomponent integraties tussen de applicaties uitvoert. Het transformeert datamodellen, zorgt voor connectiviteit, voert berichtroutering uit en converteert communicatieprotocollen. Een ESB biedt een middel voor service-to-service-communicatie.

Wat zijn de functionaliteiten van API Gateways en ESB’s?

Bij het vergelijken van ESB versus API Gateway is het belangrijk om naar de functionaliteiten te kijken. Vooral waar ze allebei goed in zijn om erachter te komen waar ze van elkaar verschillen. Hier leggen we de functionaliteiten uit die in API Gateways en ESB’s aanwezig zijn.

Routing

Wat is routing? Een binnenkomend verzoek wordt door je server gelezen en gedistribueerd naar de aangewezen API op basis van de opgegeven parameter in de URL.

Authenticatie

Wat is authenticatie? Authenticatie onderscheidt of een gebruiker of een bepaald systeem geldig is om te worden geaccepteerd.

Autorisatie

Wat is autorisatie? De functie van autorisatie heeft betrekking op de vraag of een bepaald systeem of een gebruiker een bepaalde taak mag uitvoeren. Bijvoorbeeld, een bepaalde gebruiker behoort tot een bepaalde groep. En alleen die groep is bevoegd om data te versturen of bij te werken. 

Beleidsbeheer (Policy Management)

Wat is beleidsbeheer? Beleidsbeheer definieert hoe toegang tot een webservice moet worden verkregen. En welke onderdelen van een webservice op welke manier door de gebruiker moet worden gebruikt.

Payload Transformatie

Wat is Payload Transformatie? Gegevens en requests komen in allerlei verschillende formats je server binnen. Payload geeft het containerformaat van het inkomende bericht weer. Dus Payload Transformatie houdt zich bezig met het converteren van het format van het inkomende bericht, zodat het overeenkomt met wat je webservice ook kan lezen. Zo komt er bijvoorbeeld een request binnen op je API Gateway of ESB in een XML format en is je webservice gebaseerd op het JSON format. Zodra het verzoek binnenkomt, zet je API Gateway of ESB dat XML-bericht om in een JSON-format.

Gemeenschappelijk Protocol (Common Protocol)

Wat is een gemeenschappelijk protocol? Gemeenschappelijk protocol betekent de communicatie tussen verschillende heterogene en homogene systemen. Het gemeenschappelijk protocol zou dus kunnen zijn dat alle systemen zich bijvoorbeeld in HTTP, TFTP of SMTP bevinden.

Validatie & Verrijking van Payload

Wat is validatie en verrijking van payload? Laten we eerst kijken naar de validatie van de payload. Er zijn twee soorten validaties: 1. Format Validatie en 2. Inhoudsvaliditeit. Format Validatie bekijkt of de aanvraag structuur goed of fout is, aan de hand van de regels in het beleidsbeheer. Inhoudsvaliditeit bekijkt of het format een geldige waarde bevat of niet. Beide soorten validatie kun je zowel op API Gateway- als ESB-niveau uitoefenen. De term Verrijking betekent dat wanneer een verzoek binnenkomt, je extra waarde kunt toevoegen, misschien in de body, misschien in de header sectie.

FunctionalityAPIESB
Routing
Authentication
Authorization
Policy Management
Payload Transform
Common Protocol
Validation & Enrichment of Payload

Wanneer gebruik je ESB en wanneer API Gateway?

Kijkend naar de bovenstaande tabel, zou je kunnen stellen dat zowel ESB als API Gateway dezelfde functionaliteiten hebben voor het uitvoeren van integraties. Waarom dan de noodzaak om over te stappen op een modernere aanpak zoals API Gateways?

De laatste drie functionaliteiten – Payload Transformatie, Gemeenschappelijk Protocol en Validatie & Verrijking van Payload – hebben voornamelijk betrekking op verandering in de bedrijfslogica. Bedrijfslogica, of Business Logic, is de set aangepaste regels of algoritmen die de uitwisseling van informatie tussen een database en gebruikersinterface afhandelen. Deze zijn veel beter geschikt voor een gecentraliseerde component (ESB) dan op een API Gateway.

Waarom zou je bedrijfslogica niet in de API Gateway zetten? Op het moment dat je bedrijfslogica aan de gateway toevoegt, begint deze te fungeren als een ESB. Dit betekent gecentraliseerde gegevens aggregatie en bedrijfstransformatie waarvoor handmatig geschreven code in de gateway moet worden geïmplementeerd. Met elk stukje code loopt de CPU-cycli op. Dit heeft dus invloed op de prestaties, legt de nadruk op communicatie tussen teams en brengt extra onderhouds- en ondersteuningsproblemen met zich mee.

Aan de andere kant zijn er een aantal nadelen aan een ESB. Het is niet snel of schaalbaar, vooral niet in combinatie met het gebruik van Microservices. En het belangrijkste probleem is dat ESB’s een single point of failure (SPOF) hebben, dus je hebt meerdere ESB’s voor risicospreiding. Dat betekent extra complexiteit en infrastructuur wat uiteindelijk resulteert in de behoefte aan grotere teams en stijgende kosten.

Dus bij een vergelijking van API Gateway versus ESB, wil je idealiter kiezen voor een API Gateway, maar dat maakt het niet mogelijk om de volledige functionaliteiten van de server te gebruiken. Of is er toch een andere oplossing?

Conclusie: ESB, API Gateway of een combinatie voor jouw integratieoplossing?

We zouden al snel de conclusie kunnen trekken dat een combinatie van een ESB en een API Gateway de weg vooruit is. Waarbij je de routing, autorisatie, authenticatie en het beleidsbeheer in de API Gateway zet en de overige drie op je ESB. Alleen betekent dit, dat je dan (deels) een gecentraliseerde architectuur moet bouwen. Het probleem is dat Microservices en API’s het liefst op gedecentraliseerde architecturen draaien.

De oplossing? Je kunt een microservice toewijzen als Smart Endpoint. Hierbij bootst de microservice de functionaliteit van een ESB na, waarbij het de taken van Payload Transformatie, Gemeenschappelijk Protocol en Validatie & Verrijking van Payload op zich neemt. Je kunt in dat geval de bedrijfslogica in het Smart Endpoint hebben. In deze specifieke configuratie definieer je twee verschillende soorten microservices: Composite Microservice en Base Microservice. De Composite Microservice fungeert als een ESB en de Base Microservice functioneert als ‘gewone’ microservices. Je setup heeft dan alle functionaliteiten die je van een server nodig hebt. En omdat deze zich binnen een API Gateway bevindt, ben je volledig voorbereid op jouw API-first digitale transformatie.

Wil je meer weten over API Gateways en wat de juiste integratie setup voor jouw enterprise is, neem dan contact met ons op. En ontdek hoe Yenlo’s integratie-Platform-as-a-Service ‘Connext Platform’ en Integration-as-a-Service-oplossing ‘Connext Go!’ jou helpt de lead te nemen in jouw branche.