API-proxy: de tussenpersoon die softwaresystemen veilig laat praten
Een API-proxy is een stukje software dat tussen twee computersystemen in staat en al het verkeer daartussen doorgeeft, controleert en soms aanpast. API staat voor 'application programming interface': een vaste manier waarop programma's met elkaar kunnen communiceren, zoals een weerapp die bij een weerdienst de temperatuur van vandaag opvraagt. De proxy is de tussenpersoon die dat verzoek onderschept voordat het bij de eigenlijke dienst aankomt.
Vergelijk het met een receptioniste bij een bedrijf. Bezoekers melden zich niet zomaar bij elke medewerker, maar eerst bij de balie. Daar wordt gecontroleerd wie je bent, of je een afspraak hebt, en pas dan word je doorgestuurd naar de juiste persoon. Een API-proxy doet hetzelfde met digitale verzoeken: hij controleert wie er vraagt, hoe vaak, en of dat mag, voordat het verzoek de eigenlijke server bereikt. Voor de buitenwereld lijkt het alsof je rechtstreeks met de dienst praat, maar in werkelijkheid zit er steeds een wakende laag tussen.
Wat is het precies?
Technisch gezien is een API-proxy een server die inkomende verzoeken ontvangt, ze beoordeelt en ze vervolgens doorstuurt naar de 'echte' server die de data of dienst levert (de zogeheten backend). Het antwoord van die backend gaat op dezelfde manier terug, weer via de proxy, naar de oorspronkelijke aanvrager.
Onderweg kan de proxy verschillende dingen doen. Ten eerste authenticatie: controleren of de aanvrager een geldige sleutel (API-key) of token heeft. Ten tweede rate limiting: een limiet stellen aan hoeveel verzoeken iemand per minuut mag doen, zodat één gebruiker niet het hele systeem kan overbelasten. Ten derde logging en monitoring: bijhouden wie wat vraagt, hoe lang een antwoord duurt en of er fouten optreden. Ten vierde transformatie: het formaat van een verzoek of antwoord aanpassen, bijvoorbeeld van een oud dataformaat naar een nieuw formaat, zodat oudere en nieuwere systemen toch met elkaar kunnen samenwerken.
Een verwant maar breder begrip is de 'API-gateway'. Waar een simpele proxy vooral doorstuurt en misschien wat verkeer filtert, regelt een gateway doorgaans ook zaken als routing naar meerdere backends, caching (tijdelijk antwoorden opslaan om herhaalde vragen sneller te beantwoorden) en integratie met meerdere onderliggende diensten tegelijk. In de praktijk worden de termen vaak door elkaar gebruikt, omdat de meeste moderne API-proxy's inmiddels ook gatewayfuncties bevatten.
Wat wil men ermee bereiken?
De belangrijkste reden om een API-proxy te gebruiken is beveiliging. Zonder tussenlaag zou elke buitenstaander rechtstreeks toegang hebben tot de kwetsbare kern van een systeem, de database of interne server. Door alle verkeer via een proxy te laten lopen, kan een organisatie op één centrale plek regels afdwingen: wie mag wat, hoe vaak, en met welke gegevens.
Een tweede doel is beheersbaarheid. Grote bedrijven hebben vaak tientallen of honderden interne diensten die met elkaar en met de buitenwereld praten. Een proxy of gateway geeft één overzichtelijk aanspreekpunt, terwijl de interne structuur vrij kan veranderen zonder dat externe gebruikers daar iets van merken.
Een derde motivatie is schaalbaarheid en stabiliteit. Rate limiting en caching via een proxy voorkomen dat pieken in vraag een systeem laten crashen. Ten slotte spelen ook zakelijke overwegingen mee: bedrijven die hun data of diensten als API verkopen, gebruiken proxy's om gebruik te meten, facturering te koppelen aan verbruik en verschillende toegangsniveaus (gratis versus betaald) te onderscheiden.
Voorbeelden uit de praktijk
Kong Gateway is een veelgebruikte, open source API-proxy die oorspronkelijk werd ontwikkeld door het bedrijf Mashape en in 2015 werd opengesteld. Het bedrijf hernoemde zichzelf later naar Kong Inc. en levert nu ook een commerciële, uitgebreidere versie voor grote organisaties.
Amazon API Gateway, gelanceerd door Amazon Web Services in 2015, is een van de meest gebruikte cloudgebaseerde API-proxy's. Bedrijven kunnen er zonder eigen serverbeheer razendsnel een beveiligde laag voor hun API's mee opzetten, gekoppeld aan andere AWS-diensten zoals Lambda voor serverloze functies.
Apigee, oorspronkelijk een zelfstandig bedrijf, werd in 2016 overgenomen door Google en is sindsdien onderdeel van Google Cloud. Apigee wordt onder meer gebruikt door grote banken en telecombedrijven om hun interne systemen veilig open te stellen voor externe apps.
Zuul, ontwikkeld door Netflix en in 2013 als open source vrijgegeven, is een voorbeeld van een API-proxy die werd gebouwd om de enorme hoeveelheid streamingverzoeken van Netflix-klanten wereldwijd te kunnen verdelen en beveiligen.
NGINX, van oorsprong een webserver uit 2004 gebouwd door de Rus Igor Sysoev, wordt tegenwoordig zeer breed ingezet als reverse proxy voor API's, vaak als basisbouwsteen onder complexere API-gateway-oplossingen.
Hoe ver is de techniek?
API-proxy's zijn geen opkomende technologie meer, maar een volwassen en wijdverspreid onderdeel van moderne software-infrastructuur. Vrijwel elk bedrijf met een enigszins serieuze online dienst, van bank-apps tot streamingdiensten, gebruikt inmiddels een vorm van API-proxy of -gateway.
De ontwikkeling zit nu vooral in verfijning, niet in fundamentele doorbraken. Belangrijke trends zijn de opkomst van 'service mesh'-technologie zoals Istio, waarbij proxy-functionaliteit niet meer centraal maar verspreid over elk onderdeel van een systeem wordt geplaatst, en de groeiende inzet van API-proxy's om verkeer naar AI-modellen (zoals taalmodellen) te bewaken, te meten en te beveiligen.
Een blijvend obstakel is complexiteit: een extra laag tussen gebruiker en dienst kan zelf ook vertraging, storingen of nieuwe kwetsbaarheden introduceren als hij niet goed is ingericht. Daarnaast blijft het lastig om beveiligingsregels in een proxy actueel te houden naarmate systemen achter de schermen snel veranderen; een verkeerd geconfigureerde proxy kan zowel te veel als te weinig toegang geven, met alle risico's van dien.
Wie werken eraan?
De markt wordt gedomineerd door een mix van clouddiensten van de grote technologiebedrijven en gespecialiseerde softwareleveranciers. Amazon (AWS API Gateway), Google (Apigee, onderdeel van Google Cloud) en Microsoft (Azure API Management) bieden elk hun eigen clouddienst aan. Daarnaast zijn er gespecialiseerde bedrijven zoals Kong Inc. en Salesforce, dat in 2018 het API-platform MuleSoft overnam.
Op het open source-vlak spelen projecten als NGINX (nu onderdeel van F5 Networks), Envoy Proxy (oorspronkelijk ontwikkeld bij Lyft en inmiddels beheerd door de Cloud Native Computing Foundation) en Istio (mede ontwikkeld door Google en IBM) een grote rol. Deze projecten worden vaak gebruikt als bouwsteen door zowel kleine start-ups als grote ondernemingen die hun eigen infrastructuur willen beheren zonder afhankelijk te zijn van één cloudleverancier.
Verder lezen
- Kong Inc. — documentatie en achtergrond over API-gateways
- Amazon API Gateway — officiële productpagina van AWS
- Google Cloud Apigee — officiële productpagina
- NGINX — officiële site over webserver- en proxytechnologie
- Envoy Proxy — open source project van de Cloud Native Computing Foundation