API Gateway
Punto de entrada único que gestiona todas las peticiones a los microservicios, proporcionando funcionalidades transversales como autenticación, rate limiting y monitoreo.
Enrutamiento
Dirige peticiones al servicio correcto
Autenticación
Validación centralizada de tokens
Rate Limiting
Control de velocidad de peticiones
Monitoreo
Métricas y logging centralizado
Configuración Kong API Gateway
# kong.yml
_format_version: "3.0"
services:
- name: user-service
url: http://user-service:8000
plugins:
- name: jwt
config:
secret_is_base64: false
- name: rate-limiting
config:
minute: 100
hour: 1000
- name: order-service
url: http://order-service:8001
plugins:
- name: jwt
config:
secret_is_base64: false
- name: cors
config:
origins:
- "https://miapp.com"
methods:
- GET
- POST
- PUT
- DELETE
routes:
- name: user-routes
service: user-service
paths:
- /api/users
- /api/auth
- name: order-routes
service: order-service
paths:
- /api/orders
- /api/cart
plugins:
- name: prometheus
config:
per_consumer: true
- name: file-log
config:
path: /var/log/kong/access.log
Service Mesh
Infraestructura dedicada para gestionar comunicación entre servicios, proporcionando observabilidad, seguridad y control de tráfico sin modificar el código de aplicación.
Observabilidad
Métricas, logs y trazas automáticas
Seguridad
mTLS automático entre servicios
Traffic Management
Load balancing y circuit breakers
Policy Enforcement
Políticas de acceso y rate limiting
Configuración Istio Service Mesh
# virtual-service.yaml
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: user-service-vs
spec:
hosts:
- user-service
http:
- match:
- headers:
version:
exact: v2
route:
- destination:
host: user-service
subset: v2
weight: 100
- route:
- destination:
host: user-service
subset: v1
weight: 80
- destination:
host: user-service
subset: v2
weight: 20
---
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
name: user-service-dr
spec:
host: user-service
trafficPolicy:
connectionPool:
tcp:
maxConnections: 100
http:
http1MaxPendingRequests: 50
maxRequestsPerConnection: 10
circuitBreaker:
consecutiveErrors: 3
interval: 30s
baseEjectionTime: 30s
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2