Construcción de APIs serverless - Infraestructura API escalable con Amazon API Gateway
Explicamos cómo construir APIs serverless utilizando Amazon API Gateway y Lambda.
Concepto de API serverless y posicionamiento de API Gateway
Las APIs son el núcleo de las aplicaciones modernas, encargándose de la comunicación entre frontend y backend, entre microservicios y con socios externos. Amazon API Gateway es un servicio completamente administrado para crear, publicar y gestionar REST API, HTTP API y WebSocket API. Con capacidad para procesar cientos de miles de solicitudes por segundo, escala automáticamente ante picos de tráfico. La arquitectura interna de API Gateway procesa cada etapa de forma pipeline: recepción de solicitudes, autenticación/autorización, throttling, invocación del backend y transformación de respuestas. Esta filosofía de diseño permite configurar y optimizar cada etapa de forma independiente, gestionando declarativamente todo el ciclo de vida de la API. Al operar un servidor API on-premises, se necesita construir proxies inversos como Nginx o Kong, gestionar certificados SSL, configurar balanceadores de carga y diseñar el escalado. API Gateway proporciona todo esto de forma administrada, permitiendo concentrarse en el diseño de la API y la implementación de la lógica de negocio.
Diferencias entre REST API y HTTP API
API Gateway ofrece dos tipos: REST API y HTTP API. REST API proporciona gestión completa de APIs con funciones avanzadas como gestión de claves API, planes de uso, transformación de solicitudes/respuestas (plantillas VTL), caché, integración con WAF y validación de solicitudes. HTTP API tiene un costo hasta un 71% menor que REST API, menor latencia y es ideal para APIs simples o integraciones proxy. HTTP API soporta nativamente autorizadores JWT con OIDC y OAuth 2.0, facilitando la integración con proveedores de identidad como Cognito o Auth0. En cuanto a precios, HTTP API cuesta 1.29 USD por millón de solicitudes, mientras que REST API cuesta 4.25 USD por millón de solicitudes. A continuación se presentan los criterios de selección. ``` # Casos para elegir HTTP API - Solo se necesita integración proxy con Lambda - La autenticación basada en JWT es suficiente - Se prioriza la optimización de costos # Casos para elegir REST API - Se necesitan claves API + planes de uso - Se requiere transformación de solicitudes/respuestas - Se necesita integración con WAF o caché - Se requiere validación de solicitudes ``` La función de caché de REST API permite seleccionar capacidades de 0.5 GB a 237 GB, reduciendo las solicitudes al backend y logrando simultáneamente menor tiempo de respuesta y reducción de costos.
Autenticación, autorización y seguridad de API
API Gateway proporciona funciones de seguridad multicapa. Con autorizadores Lambda se puede implementar lógica personalizada de autenticación/autorización, soportando cualquier método como tokens JWT, OAuth o SAML. La integración con Cognito User Pools permite configurar un flujo completo de autenticación que incluye registro de usuarios, inicio de sesión, MFA y gestión de tokens solo con API Gateway. Las políticas de recursos permiten restringir el acceso a direcciones IP específicas, VPC endpoints o cuentas AWS. Los planes de uso y claves API permiten gestionar límites de tasa y cuotas por socio externo. La integración con AWS WAF añade protección contra inyección SQL, XSS y ataques DDoS. También soporta autenticación TLS mutua (mTLS) para autenticación bidireccional mediante certificados de cliente. En un servidor API on-premises, estas funciones de seguridad deben implementarse e integrarse individualmente, aumentando significativamente la carga de desarrollo y operación.
WebSocket API y comunicación en tiempo real
La WebSocket API de API Gateway permite comunicación bidireccional en tiempo real de forma serverless. Soporta casos de uso que requieren conexiones persistentes como aplicaciones de chat, dashboards en tiempo real, comunicación multijugador en juegos y control de dispositivos IoT. WebSocket API gestiona automáticamente las conexiones, procesando los eventos de ruta $connect, $disconnect y $default con funciones Lambda. Almacenando los IDs de conexión en DynamoDB, es posible enviar mensajes a clientes específicos o realizar broadcasts. WebSocket API soporta un timeout de inactividad máximo de 2 horas y una duración máxima de conexión de 24 horas. Los precios son 1.14 USD por millón de mensajes y 0.285 USD por millón de minutos de conexión. La WebSocket API de API Gateway es completamente de pago por uso, con costo cero durante los períodos sin conexiones. Esta diferencia en el modelo de precios genera grandes diferencias de costo en aplicaciones con alta variabilidad de tráfico. Para aprender desde los fundamentos hasta las aplicaciones avanzadas de APIs serverless, libros (Amazon) permiten un aprendizaje sistemático.
Despliegue de API y gestión del ciclo de vida
API Gateway proporciona versionado de API y gestión de etapas de forma integrada. Con variables de etapa se pueden especificar diferentes funciones Lambda backend o endpoints para cada entorno (dev, staging, prod), separando la configuración por entorno de la definición de la API. La función de lanzamiento canario permite dirigir solo una parte del tráfico (por ejemplo, 10%) a la nueva versión de la API, migrando gradualmente al 100% si no hay problemas. Con la gestión IaC usando SAM (Serverless Application Model), se pueden gestionar declarativamente la definición de la API, funciones Lambda y roles IAM en una sola plantilla. ```yaml Resources: ApiFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs20.x Events: GetItems: Type: HttpApi Properties: Path: /items Method: GET ``` La integración con métricas de CloudWatch permite monitorear en tiempo real la latencia, tasa de errores y número de solicitudes de la API, emitiendo alarmas ante anomalías. La integración con X-Ray permite trazar toda la ruta de solicitudes desde API Gateway hasta Lambda y DynamoDB, identificando cuellos de botella de rendimiento.
Precios de API Gateway
HTTP API cuesta aproximadamente 1.00 dólar por millón de solicitudes, y REST API aproximadamente 3.50 dólares. WebSocket API cuesta aproximadamente 1.00 dólar por millón de mensajes más el cargo por tiempo de conexión. Estime el costo total de la API serverless incluyendo los precios de Lambda (aproximadamente 0.20 dólares por millón de solicitudes + tiempo de ejecución). Use HTTP API como opción predeterminada y seleccione REST API solo cuando se necesite integración con WAF o planes de uso para optimizar costos.
Resumen - Selección de la infraestructura API serverless
Amazon API Gateway soporta de forma integral tres tipos de API como infraestructura API serverless: REST, HTTP y WebSocket. Combinando el bajo costo de HTTP API de 1.29 USD por millón de solicitudes, las funciones avanzadas de gestión de REST API y la comunicación en tiempo real de pago por uso de WebSocket API según el caso de uso, se puede construir la infraestructura API óptima.