În acest curs vom explora conceptele de API Gateway și Load Balancing, esențiale pentru gestionarea eficientă a traficului și securitatea serviciilor web.
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.
- 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.
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).
- 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.
Cum implementăm un API Gateway scalabil pentru un sistem de plăți online?
- 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.
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.
- 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.