Hvad er en API-gateway?
En API-gateway er den fælles indgang foran alle jeres bagvedliggende tjenester: ét sted hvor sikkerhed, trafikstyring og logning håndteres. I stedet for at hver tjeneste eksponeres for sig, går al trafik gennem gatewayen, som lukker de rigtige kald ind, beskytter mod overbelastning og fører log. Der er brug for den når I har flere forbrugere eller flere tjenester.
Når I kun har én tjeneste, er det nemt: Den tager imod sine kald og svarer. Men virkeligheden vokser. Snart er der flere tjenester bag kulisserne og flere apps, partnere og systemer der vil tale med dem. Så opstår spørgsmålet om hvor al den trafik skal komme ind og hvordan I holder styr på sikkerhed og overblik. Svaret er ofte en API-gateway. Her er hvad det er.
Sammenligningen: receptionisten
Forestil dig et stort kontor med mange afdelinger. Uden reception skulle hver besøgende vide præcis hvor de skulle hen og gå direkte ind, og hver afdeling skulle selv kontrollere hvem der kom og gik. Det bliver rodet og usikkert.
Med en reception ved indgangen kommer der orden. Receptionisten lukker dem ind der skal ind, viser hver enkelt hen til den rigtige afdeling og fører en besøgslog over hvem der er kommet forbi. Ét enkelt sted tager sig af det der ellers ville være spredt og svært at overskue.
En API-gateway er receptionisten for jeres systemer. Den sidder foran alle de bagvedliggende tjenester som en fælles indgang. Alle kald kommer ind der, og gatewayen lukker de autoriserede ind, styrer hvert kald til den rigtige tjeneste og fører log over trafikken. De besøgende (apps og systemer) behøver kun at kende indgangen, ikke hvordan kontoret er organiseret indenfor.
Hvad gatewayen tager sig af
Bag sammenligningen ligger nogle konkrete opgaver som gatewayen varetager ét sted, i stedet for at hver tjeneste skal gøre det selv:
- Autentificering. Gatewayen kontrollerer at den der kalder, faktisk har ret til det før kaldet overhovedet når tjenesterne bagved. Adgangskontrollen sker ved døren, én gang, for det hele.
- Hastighedsbegrænsning. Den sætter et loft over hvor mange kald en enkelt afsender må foretage inden for et bestemt tidsrum. Sådan beskyttes jeres tjenester mod at én klient, med vilje eller ved en fejl, drukner dem i forespørgsler. Den afsender bremses uden at de øvrige rammes.
- Versionering af API’er. Når jeres API’er udvikler sig, kan gatewayen hjælpe med at styre trafikken rigtigt mellem forskellige versioner så ændringer kan rulles ud uden at alt skal ændres på én gang.
Ud over det fører gatewayen log over trafikken, hvilket giver overblik og gør det lettere at fejlsøge når noget går galt. Pointen er den samme hele vejen igennem: Det som ellers skulle bygges ind i hver tjeneste, samles ét fælles sted.
Hvorfor det er bedre end at lade hver tjeneste klare sig selv
Man kunne lade hver tjeneste håndtere sin egen sikkerhed, sin egen trafikbegrænsning og sin egen logning. Problemet er at den samme logik så skal bygges og vedligeholdes mange steder. Det bliver dyrere, og værre endnu: Det bliver let lavet forskelligt fra tjeneste til tjeneste eller glemt i en af dem. En glemt adgangskontrol i en enkelt tjeneste er en åben dør.
Med en gateway findes den fælles logik ét sted, ensartet for alle. Tjenesterne bagved kan koncentrere sig om deres egentlige opgave mens den fælles orden håndteres én gang, samlet og overskueligt. Det gør systemet både sikrere og billigere at drifte og vedligeholde.
Hvornår der er brug for den
En API-gateway er ikke altid det rigtige. Har I én tjeneste og én klient der taler med den, er en gateway ofte overkill: Den tilføjer et lag uden at løse et reelt problem.
Nytten opstår når der bliver flere. Tommelfingerreglen er at en gateway betaler sig når I har mere end én forbruger af jeres API’er (flere apps, partnere eller systemer der kalder jer) eller mere end et par tjenester bag kulisserne som skal hænge sammen. Så bliver den fælles indgang det der holder styr på sikkerhed, trafik og overblik når kompleksiteten ellers ville løbe løbsk.
Vi hos Weapp bygger API’er og sætter gateways op der hvor de gør nytte, hverken mere eller mindre. Vil I have styr på hvordan jeres systemer tilgås? Se vores ydelser eller kontakt os.
Ofte stillede spørgsmål
Hvad gør en API-gateway?
Den fungerer som en fælles indgang foran jeres tjenester og tager sig af det som ellers skulle bygges ind i hver enkelt af dem. Den kontrollerer at kald må komme ind, styrer trafikken til den rigtige tjeneste, begrænser hvor meget en enkelt afsender må kalde og fører log over hvad der passerer. Kort sagt samler den sikkerhed, styring og overblik ét sted.
Hvorfor ikke lade hver tjeneste klare sig selv?
Fordi de samme ting så skal bygges og vedligeholdes mange steder, med risiko for at de bliver lavet forskelligt eller bliver glemt. Autentificering, trafikbegrænsning og logning i hver tjeneste for sig bliver både dyrere og mere usikkert. En gateway samler det hele så tjenesterne kan passe deres egen opgave og den fælles logik kun findes ét sted.
Hvad er hastighedsbegrænsning i en API-gateway?
En beskyttelse der sætter et loft over hvor mange kald en enkelt afsender må foretage inden for et bestemt tidsrum. Den forhindrer at én klient, med vilje eller ved en fejl, overbelaster jeres tjenester med for mange forespørgsler. Gatewayen bremser så den afsender uden at de øvrige påvirkes. Det er en af de mest almindelige og vigtigste beskyttelser en gateway tilbyder.
Hvornår har vi brug for en API-gateway?
Når I har mere end én forbruger af jeres API’er eller mere end et par tjenester bag dem. Med én tjeneste og én klient er en gateway ofte overkill. Men så snart flere apps, partnere eller systemer kalder jer, eller flere tjenester skal hænge sammen, bliver en fælles indgang værdifuld for at holde styr på sikkerhed og trafik.
Er en API-gateway det samme som en firewall?
Nej, men de er beslægtede i ånden. En firewall beskytter netværket på et groft niveau. En API-gateway arbejder tættere på selve API-kaldene: Den forstår trafikken, autentificerer kaldene, styrer dem til den rigtige tjeneste og logger dem. Man kan sige at gatewayen er en mere indsigtsfuld dørmand, specialiseret i netop API-trafik snarere end netværket som helhed.