I en arkitektur för mikrotjänster kan en klient interagera med mer än en klientdelstjänst. Med tanke på detta, hur vet en klient vilka slutpunkter som ska anropas? Vad händer när nya tjänster introduceras eller befintliga tjänster omstruktureras? Hur hanterar tjänster SSL-avslutning, ömsesidig TLS, autentisering och andra problem? En API-gateway kan hjälpa dig att hantera dessa utmaningar.
Ladda ned en Visio-fil av den här arkitekturen.
Vad är en API-gateway?
En API-gateway tillhandahåller en centraliserad startpunkt för att hantera interaktioner mellan klienter och programtjänster. Den fungerar som en omvänd proxy och dirigerar klienternas begäranden till lämpliga tjänster. Den kan också utföra olika övergripande uppgifter som autentisering, SSL-avslutning, ömsesidig TLS och hastighetsbegränsning.
Varför ska jag använda en API-gateway?
En API-gateway förenklar kommunikationen, förbättrar klientinteraktioner och centraliserar hanteringen av gemensamma ansvarsområden på servicenivå. Den fungerar som mellanhand och förhindrar direkt exponering av programtjänster för klienter. Utan en API-gateway måste klienter kommunicera direkt med enskilda programtjänster, vilket kan medföra följande utmaningar:
Komplex klientkod: Det kan resultera i komplex klientkod. Klienter måste spåra flera slutpunkter och hantera fel motståndskraftigt.
Nära koppling: Den skapar koppling mellan klienten och serverdelen. Klienter måste förstå nedbrytningen av enskilda tjänster, vilket komplicerar serviceunderhåll och refaktorisering.
Ökad svarstid: En enskild åtgärd kan kräva anrop till flera tjänster. Resultatet kan bli flera nätverksresor mellan klienten och servern, vilket ger betydande svarstid.
Redundant hantering av problem: Varje offentlig tjänst måste hantera problem som autentisering, SSL och klientfrekvensbegränsning.
Protokollbegränsningar: Tjänster måste exponera ett klientvänligt protokoll, till exempel HTTP eller WebSocket. Den här exponeringen begränsar kommunikationsprotokoll alternativ.
Utökad attackyta: Offentliga slutpunkter ökar den potentiella attackytan och kräver härdning.
Så här använder du en API-gateway
En API-gateway kan skräddarsys efter programmets krav med hjälp av specifika designmönster. De här designmönstren hanterar viktiga funktioner som routning, aggregering av begäranden och övergripande problem:
Gateway-routning. Du kan använda en API-gateway som en omvänd proxy för att dirigera klientbegäranden till olika programtjänster. API-gatewayen använder layer-7-routning och tillhandahåller en enda slutpunkt som klienter kan använda. Använd API Gateway-routning när du vill frikoppla klienter från programtjänster.
Gateway-sammansättning. Du kan använda API-gatewayen för att aggregera flera klientbegäranden till en enda begäran. Använd det här mönstret när en enskild åtgärd kräver anrop till flera programtjänster. I API-sammansättning skickar klienten en begäran till API-gatewayen. Sedan dirigerar API-gatewayen begäranden till de olika tjänster som krävs för åtgärderna. Slutligen aggregerar API-gatewayen resultatet och skickar tillbaka dem till klienten. Aggregeringen bidrar till att minska chattigheten mellan klienten och programtjänsterna.
Gateway-avlastning. Du kan använda en API-gateway för att tillhandahålla övergripande funktioner, så att enskilda tjänster inte behöver tillhandahålla den. Det kan vara användbart att konsolidera övergripande funktioner på en plats i stället för att göra varje tjänst ansvarig. Här är exempel på funktioner som du kan avlasta till en API-gateway:
- SSL-avslutning
- Ömsesidig TLS
- Autentisering
- IP-lista eller blocklista
- Begränsning av klientfrekvens (begränsning)
- Loggning och övervakning
- Cachelagring av svar
- Brandvägg för webbprogram
- GZIP-komprimering
- Underhåll av statiskt innehåll
Alternativ för API-gateway
Här följer några alternativ för att implementera en API-gateway i ditt program.
omvänd proxyserver. Nginx och HAProxy är omvända proxyerbjudanden med öppen källkod. De stöder funktioner som belastningsutjämning, SSL-avslutning och layer-7-routning. De har kostnadsfria versioner och betalda utgåvor som ger extra funktioner och supportalternativ. Dessa produkter är mogna med omfattande funktionsuppsättningar, höga prestanda och utökningsbara.
Service Mesh-ingresskontrollant. Om du använder ett tjänstnät utvärderar du ingresskontrollantens funktioner som är specifika för det tjänstnätet. Sök efter AKS-stödda tillägg som Istio och Open Service Mesh. Leta efter projekt med öppen källkod från tredje part som Linkerd eller Consul Connect. Till exempel stöder Istio-ingresskontrollanten layer 7-routning, HTTP-omdirigeringar, återförsök och andra funktioner.
Azure Application Gateway. Application Gateway är en tjänst för hanterad belastningsutjämning. Den tillhandahåller utföra layer-7-routning, SSL-avslutning och en brandvägg för webbprogram (WAF).
Azure Front Door. Azure Front Door är ett nätverk för innehållsleverans (CDN). Den använder globala och lokala närvaropunkter (PoPs) för att ge snabb, tillförlitlig och säker åtkomst till dina programs statiska och dynamiska webbinnehåll globalt.
Azure API Management. API Management är en hanterad lösning för publicering av API:er till externa och interna kunder. Den innehåller funktioner för att hantera offentliga API:er, inklusive hastighetsbegränsning, IP-begränsningar och autentisering med hjälp av Microsoft Entra-ID eller andra identitetsprovidrar. API Management utför ingen belastningsutjämning, så du bör använda den med en lastbalanserare, till exempel Azure Application Gateway eller en omvänd proxy. Mer information finns i API Management med Azure Application Gateway.
Välj en API Gateway-teknik
När du väljer en API-gateway bör du tänka på följande faktorer:
Stöd för alla krav. Välj en API-gateway som stöder de funktioner som krävs. Alla tidigare API-gatewayalternativ stöd för layer-7-routning. Men deras stöd för andra funktioner, till exempel autentisering, hastighetsbegränsning och SSL-avslutning, kan variera. Utvärdera om en enskild gateway uppfyller dina behov eller om flera gatewayer är nödvändiga.
Föredrar inbyggda erbjudanden. Använd inbyggda API-gateway- och ingresslösningar som tillhandahålls av din plattform, till exempel Azure Container Apps och AKS, när de uppfyller dina säkerhets- och kontrollkrav. Använd endast en anpassad gateway om de inbyggda alternativen saknar nödvändig flexibilitet. Anpassade lösningar kräver en styrningsmodell, till exempel GitOps, för att hantera livscykeln effektivt.
Välj rätt distributionsmodell. Använd hanterade tjänster som Azure Application Gateway och Azure API Management för att minska driftkostnaderna. Om du använder omvända proxyservrar eller lastbalanserare för generell användning distribuerar du dem på ett sätt som överensstämmer med din arkitektur. Du kan distribuera api-gatewayer för generell användning till dedikerade virtuella datorer eller inuti ett AKS-kluster i deras erbjudanden för ingresskontrollanter. Om du vill isolera API-gatewayen från arbetsbelastningen kan du distribuera dem utanför klustret, men den här distributionen ökar hanteringskomplexiteten.
Hantera ändringar. När du uppdaterar tjänster eller lägger till nya kan du behöva uppdatera reglerna för gatewayroutning. Implementera processer eller arbetsflöden för att hantera routningsregler när du lägger till eller ändrar tjänster, SSL-certifikat, IP-tillåtna listor och säkerhetskonfigurationer. Använd verktyg för infrastruktur som kod och automatisering för att effektivisera API Gateway-hanteringen.
Nästa steg
Tidigare artiklar utforskade gränssnitten mellan mikrotjänster och mellan mikrotjänster och klientprogram. Dessa gränssnitt behandlar varje tjänst som en fristående, ogenomskinlig enhet. En viktig princip för mikrotjänstarkitektur är att tjänster aldrig ska exponera intern information om hur de hanterar data. Den här metoden har betydande konsekvenser för att upprätthålla dataintegritet och konsekvens, vilket är föremål för nästa artikel.