API Gateway
Single entry point for API traffic: routing, authentication, rate limiting, and protocol translation.
1. Concept Overview
An API gateway sits between clients and backend services. It handles cross-cutting concerns (auth, rate limiting, logging, routing) so individual services can stay focused on business logic.
Why it exists: Without a gateway, every service would implement auth, rate limits, and routing; clients would need to know many endpoints. The gateway centralizes these and provides a single API surface.
2. Core Principles
Typical responsibilities
Routing
Path/host → backend service (e.g. /users → user service)
Authentication
Verify JWT, API key, or OAuth; reject unauthenticated requests
Authorization
Check permissions (e.g. scope, role)
Rate limiting
Limit requests per user/key/IP; return 429 when exceeded
Protocol translation
REST (public) → gRPC (internal); or GraphQL → REST backends
Caching
Cache responses for read-heavy endpoints
Circuit breaking
Fail fast when backend is down; avoid cascading failure
Logging / metrics
Centralized access logs, latency, error rate
Architecture
3. Real-World Usage
Kong: Open-source; plugins for auth, rate limit, logging; on-prem or managed.
AWS API Gateway: Managed; Lambda integration; usage plans and keys.
Google Apigee: Enterprise; monetization, analytics.
Nginx / Envoy: Often used as gateway with custom config or Lua/WASM.
4. Trade-offs
Centralized
One place for auth, rate limit, routing
Gateway is critical path and potential bottleneck
Protocol translation
Clients use REST; internals use gRPC
Extra hop and complexity
Managed vs self-hosted
Managed: less ops
Cost; less control
When to use: Multiple services exposed as one API; need central auth, rate limit, or versioning. When not: Single service; or when a simple reverse proxy is enough.
5. Failure Scenarios
Gateway down
Multiple gateway instances behind LB; stateless
Backend down
Circuit breaker; return 503; retry with backoff
Auth/rate-limit bypass
Validate at gateway only; don’t trust client to send correct headers
Latency spike
Timeouts; circuit breaker; scale gateway horizontally
6. Performance Considerations
Latency: Gateway adds one hop; minimize logic and use connection pooling to backends.
Throughput: Scale gateway horizontally; avoid heavy logic in hot path.
Caching: Reduces backend load and latency for cacheable GETs.
7. Implementation Patterns
Gateway per environment: One gateway for public API; optional separate for internal.
Backend for Frontend (BFF): Different gateway or route per client type (e.g. mobile vs web) to tailor responses.
Gateway + service mesh: Gateway at edge; mesh handles service-to-service (mTLS, retries, discovery).
Quick Revision
Role: Single entry; routing, auth, rate limit, protocol translation, caching, circuit breaking.
Vs reverse proxy: Gateway adds auth, rate limit, and often API-specific logic; reverse proxy is more generic.
Failure: Stateless; multiple instances; circuit breaker to backends.
Interview: “We use an API gateway for authentication and rate limiting so backends don’t each implement it; we route by path to the right microservice and can translate REST to gRPC internally.”
Last updated