Curs 5 - API Gateway și Load Balancing în System Design

În acest curs vom explora conceptele de API Gateway și Load Balancing, esențiale pentru gestionarea eficientă a traficului și securitatea serviciilor web.

1. Ce este un API Gateway?

API Gateway este un punct unic de acces care gestionează cererile către backend-uri și aplică politici de securitate și routing.

- Diferența dintre API Gateway și Reverse Proxy: Un API Gateway include funcționalități de autentificare, rate limiting și logging.

- Exemple de API Gateway: Kong, NGINX, AWS API Gateway, Traefik.

2. Funcționalitățile unui API Gateway

- Rate Limiting și Throttling: Prevenirea supraîncărcării API-urilor prin limitarea numărului de cereri.

- Authentication și Authorization: Integrarea cu OAuth, JWT, API Keys pentru securizare.

- Logging și Monitoring: Colectarea de log-uri și monitorizarea traficului prin Prometheus, Grafana, ELK Stack.

3. Ce este Load Balancing?

Load Balancing distribuie traficul între servere pentru a evita supraîncărcarea unui singur nod.

- Diferența dintre Load Balancer și API Gateway: Un API Gateway oferă funcții avansate, în timp ce un Load Balancer se ocupă doar de distribuția traficului.

- Tipuri de Load Balancing:

- Layer 4 (Transport Layer): Funcționează la nivel de TCP/UDP (ex: AWS NLB, HAProxy).

- Layer 7 (Application Layer): Distribuie traficul pe baza conținutului HTTP (ex: AWS ALB, NGINX, Traefik).

4. Strategii de Load Balancing

- Round Robin: Fiecare cerere este trimisă la următorul server disponibil.

- Least Connections: Traficul este direcționat către serverul cu cele mai puține conexiuni active.

- IP Hashing: Cererile de la același client sunt trimise întotdeauna către același server.

- Sticky Sessions: Păstrează sesiunile utilizatorilor pe același server.

- Failover: Dacă un server cade, traficul este direcționat către unul funcțional.

- Global Load Balancing: Distribuie traficul între centre de date diferite pentru a îmbunătăți disponibilitatea.

5. Exemplu Practic - Arhitectura unui API Gateway pentru un sistem de plăți

Cum implementăm un API Gateway scalabil pentru un sistem de plăți online?

a) Alegerea API Gateway-ului

- NGINX: O soluție flexibilă, potrivită pentru control granular asupra request-urilor.

- Kong API Gateway: Oferă integrare ușoară cu OAuth, JWT și rate limiting.

- AWS API Gateway: Ideal pentru aplicații serverless și integrare cu Lambda.

b) Implementarea Rate Limiting pentru Protecția API-ului

limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;

Această regulă limitează fiecare client la 10 cereri pe secundă pentru protecție împotriva atacurilor.

c) Gestionarea Fault Tolerance și Retries

- Timeout-uri: Se stabilesc limite pentru răspunsurile API-urilor.

- Retries: Cererile pot fi refăcute în cazul unui eșec.

- Circuit Breaker Pattern: Previne supraîncărcarea unui serviciu defect.

Resurse suplimentare: