Hva er en API-gateway?
En API-gateway er den felles inngangen foran alle de bakenforliggende tjenestene deres, ett enkelt punkt der sikkerhet, trafikkstyring og logging håndteres. I stedet for at hver tjeneste eksponeres for seg, går all trafikk gjennom gatewayen, som slipper inn riktige kall, beskytter mot overbelastning og fører logg. Den trengs når dere har flere konsumenter eller flere tjenester.
Når dere bare har én tjeneste, er det enkelt: Den tar imot kallene sine og svarer. Men i virkeligheten vokser det. Snart finnes det flere tjenester bak kulissene, og flere apper, partnere og systemer som vil snakke med dem. Da oppstår spørsmålet om hvor all denne trafikken skal komme inn, og hvordan dere holder orden på sikkerhet og oversikt. Svaret er ofte en API-gateway. Her er hva det er.
Et bilde: resepsjonisten
Tenk deg et stort kontor med mange avdelinger. Uten resepsjon måtte alle besøkende vite nøyaktig hvor de skulle og gå rett inn, og hver avdeling måtte selv kontrollere hvem som kom og gikk. Det blir rotete og usikkert.
Med en resepsjon i inngangen blir det orden. Resepsjonisten slipper inn dem som skal inn, viser hver enkelt til riktig avdeling og fører en besøkslogg over hvem som har passert. Ett enkelt punkt tar seg av det som ellers ville være spredt og uoversiktlig.
En API-gateway er nettopp en slik resepsjonist for systemene deres. Den sitter foran alle de bakenforliggende tjenestene som en felles inngang. Alle kall kommer inn der, og gatewayen slipper inn dem som har tilgang, styrer hvert kall til riktig tjeneste og fører logg over trafikken. De besøkende, altså appene og systemene, trenger bare å kjenne inngangen, ikke hvordan kontoret er organisert innenfor.
Hva gatewayen tar seg av
Bak bildet ligger noen konkrete oppgaver som gatewayen tar seg av på ett sted, i stedet for at hver tjeneste skal gjøre det selv:
- Autentisering. Gatewayen kontrollerer at den som gjør kallet, faktisk har rett til det. Dette gjøres før kallet i det hele tatt når tjenestene bak. Tilgangskontrollen skjer ved døren, én gang, for alt.
- Hastighetsbegrensning. Den setter et tak for hvor mange kall én enkelt avsender får gjøre i løpet av en viss tid. Slik beskyttes tjenestene deres mot at én klient, med vilje eller ved en feil, drukner dem i forespørsler. Den avsenderen bremses uten at andre rammes.
- Versjonshåndtering av API-er. Når API-ene deres utvikles, kan gatewayen hjelpe til med å styre trafikken riktig mellom ulike versjoner slik at endringer kan rulles ut uten at alt må endres på en gang.
I tillegg fører gatewayen logg over trafikken, noe som gir oversikt og gjør det lettere å feilsøke når noe går galt. Poenget er det samme hele veien: Det som ellers måtte bygges inn i hver tjeneste, samles på ett felles sted.
Hvorfor det er bedre enn å la hver tjeneste klare seg selv
Det er mulig å la hver tjeneste håndtere sin egen sikkerhet, sin egen trafikkbegrensning og sin egen logging. Problemet er at den samme logikken da må bygges og vedlikeholdes mange steder. Det blir dyrere, og verre: Det gjøres lett ulikt i ulike tjenester, eller glemmes i en av dem. En glemt tilgangskontroll i én eneste tjeneste er en åpen dør.
Med en gateway finnes den felles logikken på ett sted, konsekvent for alle. Tjenestene bak kan konsentrere seg om den egentlige jobben sin, mens den felles ordenen håndteres én gang, samlet og oversiktlig. Det gjør systemet både sikrere og billigere å forvalte.
Når den trengs
En API-gateway er ikke alltid riktig. Har dere én tjeneste og én klient som snakker med den, er en gateway ofte mer enn dere trenger. Den legger til et lag uten å løse noe reelt problem.
Nytten oppstår når det blir flere. Tommelfingerregelen er at en gateway lønner seg når dere har mer enn én konsument av API-ene deres (flere apper, partnere eller systemer som gjør kall mot dere) eller mer enn et par tjenester bak kulissene som skal henge sammen. Da er det den felles inngangen som holder orden på sikkerhet, trafikk og oversikt når kompleksiteten ellers kunne komme ut av kontroll.
Vi i Weapp bygger API-er og setter opp gatewayer der de gjør nytte, verken mer eller mindre. Vil dere ha orden på hvordan systemene deres nås? Se tjenestene våre eller ta kontakt.
Ofte stilte spørsmål
Hva gjør en API-gateway?
Den fungerer som en felles inngang foran tjenestene deres og tar seg av det som ellers måtte bygges i hver enkelt av dem. Den kontrollerer at kall får slippe inn, styrer trafikken til riktig tjeneste, begrenser hvor mange kall én enkelt avsender får gjøre og fører logg over det som passerer. Kort sagt samler den sikkerhet, styring og oversikt på ett sted.
Hvorfor ikke la hver tjeneste håndtere seg selv?
Fordi de samme tingene da må bygges og vedlikeholdes mange steder, med risiko for at de gjøres ulikt eller blir glemt. Autentisering, trafikkbegrensning og logging i hver tjeneste for seg blir både dyrere og mindre sikkert. En gateway samler det på ett sted slik at tjenestene kan konsentrere seg om jobben sin og den felles logikken bare finnes på én plass.
Hva er hastighetsbegrensning i en API-gateway?
En beskyttelse, ofte kalt rate limiting, som setter et tak for hvor mange kall én enkelt avsender får gjøre i løpet av en viss tid. Den hindrer at én klient, med vilje eller ved en feil, overbelaster tjenestene deres med for mange forespørsler. Gatewayen bremser da den avsenderen uten at andre blir påvirket. Det er en av de vanligste og viktigste beskyttelsene en gateway tilbyr.
Når trenger vi en API-gateway?
Når dere har mer enn én konsument av API-ene deres eller mer enn et par tjenester bak dem. Med én tjeneste og én klient er en gateway ofte mer enn dere trenger. Men så snart flere apper, partnere eller systemer gjør kall mot dere, eller flere tjenester skal henge sammen, blir en felles inngang verdifull for å holde orden på sikkerhet og trafikk.
Er en API-gateway det samme som en brannmur?
Nei, men tankegangen er beslektet. En brannmur beskytter nettverket på et grovt nivå. En API-gateway jobber nærmere selve API-kallene: Den forstår trafikken, autentiserer kallene, styrer dem til riktig tjeneste og logger dem. Man kan si at gatewayen er en mer innsiktsfull dørvakt, spesialisert på nettopp API-trafikk snarere enn nettverket som helhet.