TakéAPI GW, API management gatewayPokročilý
Definice
API Gateway je vstupní vrstva mezi klientem a sadou backendových služeb, která přijímá požadavky, směruje je na správné API, vynucuje bezpečnostní pravidla a často řeší limity, logování nebo transformace odpovědí. Pomáhá skrýt vnitřní strukturu systému a sjednotit chování pro web, mobilní aplikaci i partnery.
Nezaměňujte: API Gateway může znamenat obecný architektonický vzor i konkrétní cloudovou službu, například Amazon API Gateway nebo Google Cloud API Gateway.
Jak API Gateway funguje
API Gateway stojí na hraně systému a přijímá volání od prohlížeče, mobilní aplikace, partnerské integrace nebo jiného serveru. Klient tak nemusí znát adresy jednotlivých služeb ani jejich vnitřní rozdělení. Brána vystaví jedno konzistentní rozhraní a za ním směruje požadavky na konkrétní API, například na katalog, objednávky, fakturaci nebo uživatelské účty.
Typický průchod požadavku začíná ověřením identity, kontrolou tokenu, klíče API nebo certifikátu. Následuje směrování podle cesty, metody, hlaviček, verze rozhraní nebo tenantů. API Gateway může doplnit correlation ID, převést formát odpovědi, odstranit interní hlavičky, zapnout cache, omezit počet požadavků a zapsat metriky pro monitoring. Backendová služba se pak soustředí hlavně na doménovou logiku.
Kdy API Gateway použít a kdy ne
API Gateway dává největší smysl u systémů s více backendy, více typy klientů nebo veřejným API pro partnery. Architektura mikroslužeb často potřebuje jednotné místo pro autentizaci, rate limiting, auditní záznamy, verze rozhraní a pozvolné přepínání provozu mezi starou a novou implementací. Brána také pomáhá tam, kde mobilní aplikace potřebuje jednodušší kontrakt než interní služby.
API Gateway není automatická povinnost pro každou aplikaci. Malý monolit s jedním webovým frontendem obvykle vystačí s běžným routerem aplikace nebo reverzní proxy. Přidání brány znamená další komponentu, konfiguraci, latenci, monitoring a provozní odpovědnost. Návrh by měl proto vycházet z konkrétního problému, ne z dojmu, že mikroslužby bez brány nejsou moderní.
Co API Gateway obvykle řeší
- Směrování: cesta
/ordersmíří na objednávkovou službu, cesta/usersna službu identit. - Bezpečnost: brána ověřuje tokeny, vynucuje TLS a může blokovat požadavky s podezřelým tvarem.
- Omezení provozu: rate limiting chrání backend před náhlými špičkami i zneužitím.
- Pozorovatelnost: jednotné logy, metriky a trasování usnadňují hledání chyb napříč službami.
- Kompatibilita: transformace požadavků pomáhá udržet starší klienty funkční během změn API.
Na co si dát pozor
Centralizace funkcí nesmí vytvořit slepé místo. API Gateway by měla být redundantní, verzovaná jako infrastruktura a sledovaná stejně pečlivě jako samotné služby. Chybná konfigurace pravidla může odříznout všechny klienty najednou, proto se hodí automatické testy rout, bezpečnostních politik i limitů.
Bezpečnostní návrh musí rozlišovat autentizaci a autorizaci. Brána může ověřit, kdo volá, ale backend často stále potřebuje rozhodnout, zda má volající právo změnit konkrétní objednávku nebo přečíst konkrétní záznam. API Gateway také nenahrazuje validaci vstupů, ochranu proti zranitelnostem v business logice ani promyšlený návrh chybových odpovědí.
Jak API Gateway souvisí s Kubernetes Ingress
Kubernetes Ingress řeší hlavně přivedení HTTP provozu do clusteru a mapování hostů nebo cest na služby. API Gateway bývá širší produktová nebo architektonická vrstva: spravuje přístupové klíče, kvóty, verze API, transformace, vývojářské portály a detailnější bezpečnostní politiku. V praxi se obě vrstvy mohou doplňovat, ale jejich odpovědnosti by měly být oddělené.
Příklady z praxe
Mobilní aplikace e-shopu
Mobilní aplikace e-shopu volá pouze jednu veřejnou doménu, například api.example.com. API Gateway podle cesty pošle požadavek na katalog, objednávky nebo účty a ke každému volání přidá jednotné trasovací ID. Vývoj mobilní aplikace se tím nekomplikuje při každém přesunu interní služby na jinou adresu.
{ "routes": [ { "path": "/products/*", "service": "catalog-service" }, { "path": "/orders/*", "service": "order-service" }, { "path": "/users/*", "service": "identity-service" } ] }Ochrana partnerského API před špičkou
Partnerské API pro čtení objednávek začne po marketingové kampani dostávat násobně více požadavků. API Gateway ověří OAuth token, zkontroluje oprávnění a nad přiděleným klíčem uplatní limit. Backend zůstane dostupný i ve špičce a partner dostane srozumitelnou chybu při překročení kvóty.
rateLimit: key: partnerApiKey requestsPerMinute: 600 burst: 100 auth: type: oauth2 requiredScopes: - orders:read
Časté omyly
- MýtusAPI Gateway vyřeší bezpečnost, takže služby za ní už nemusí nic kontrolovat.
- Ve skutečnostiAPI Gateway řeší jen část bezpečnostních pravidel na hraně systému. Backend musí dál ověřovat oprávnění ke konkrétním datům, validovat vstupy a počítat s tím, že interní volání může být chybné nebo zneužité.
- MýtusAPI Gateway je jen jiný název pro load balancer.
- Ve skutečnostiLoad balancer hlavně rozděluje provoz mezi instance služby. API Gateway pracuje na úrovni API kontraktu a často přidává autentizaci, kvóty, transformace, verzování, logování a pravidla pro jednotlivé klienty.
Časté dotazy
- Jaký je rozdíl mezi API Gateway a reverse proxy?
- API Gateway je aplikačně orientovaná vstupní vrstva pro API, zatímco reverse proxy obecně předává provoz na jiný server. Reverse proxy často řeší TLS, kompresi, základní směrování a load balancing. API Gateway k tomu obvykle přidává správu identit, rate limiting, verze API, transformace payloadu, kvóty, analytiku a pravidla určená přímo pro vývojáře klientských aplikací nebo partnerů.
- Je API Gateway jen pro mikroslužby?
- API Gateway může běžet před mikroslužbami, monolitem i kombinací obou přístupů. Mikroslužby z brány často těží více, protože systém má mnoho samostatných rozhraní a více provozních pravidel. Monolit ale může používat API Gateway také, například kvůli veřejnému partnerskému API, jednotné autentizaci, ochraně před nadměrným provozem nebo oddělení staré a nové verze rozhraní.
- Může API Gateway nahradit bezpečnost v backendu?
- API Gateway pomáhá centralizovat část bezpečnostních kontrol, ale API Gateway nenahrazuje bezpečný návrh backendu. Backendové služby by měly dál validovat vstupy, kontrolovat oprávnění na úrovni konkrétních dat a bezpečně zpracovávat chybové stavy. Brána je dobré místo pro ověření identity, limity a jednotné politiky, ne univerzální štít proti všem typům zranitelností.
- Kdy se API Gateway vyplatí nasadit?
- API Gateway se vyplatí, když aplikace potřebuje jedno veřejné rozhraní před více službami, konzistentní autentizaci, limity požadavků, verzování API nebo lepší pozorovatelnost provozu. API Gateway se naopak nemusí vyplatit u malé aplikace s jednoduchým backendem, kde by přinesla hlavně další konfiguraci, provozní náklady a možné místo selhání.
Zdroje
- Amazon API Gateway(otevře se v novém okně)
- API Gateway documentation(otevře se v novém okně)
- API gateway pattern(otevře se v novém okně)
- Ingress(otevře se v novém okně)
- OWASP API Security Project(otevře se v novém okně)