</>inexpresivo
Systems Lab
Intermedioaws18 min

Backend en AWS: API Gateway + ECS + RDS

Arquitectura del backend containerizado sobre ECS Fargate con caché Redis, RDS PostgreSQL y gestión de secretos con Secrets Manager.

ECSFargateRDSElastiCacheALBAPI GatewayDockerPostgreSQL

Cómo desplegar un API REST containerizado en producción sobre AWS. ECS Fargate elimina la gestión de servidores, el ALB balancea carga entre contenedores, ElastiCache Redis reduce la carga en RDS y Secrets Manager inyecta credenciales de forma segura.

Componentes

Cliente

SPA o cliente que consume la API REST

API Gateway

Frontera HTTP con throttling, autenticación JWT y routing a servicios

ALB

Application Load Balancer que distribuye tráfico entre contenedores ECS

ECS Fargate

Contenedores Docker corriendo la API. ECS gestiona el ciclo de vida sin servidores que administrar.

ECR

Registro de imágenes Docker privado. ECS Fargate hace pull al iniciar cada Task.

ElastiCache Redis

Caché Redis para reducir la carga en RDS y servir datos frecuentes en <1ms

RDS PostgreSQL

Base de datos relacional Multi-AZ con failover automático en <2 minutos

Secrets Manager

Credenciales de la DB y claves de API inyectadas como variables de entorno en los Tasks de ECS

Conceptos relacionados

ECS Fargate vs EC2Application Load Balancer health checksCache-aside patternRDS Proxy y connection poolingRolling deployment strategySecrets Manager rotationJWT validation en API GatewayVPC Link para API Gateway privadoThundering herd problem

Recursos

Componentes de Backend en AWS: API Gateway + ECS + RDS

  • Cliente: Cliente HTTP que consume la API. Puede ser el SPA del frontend, otro servicio interno o un cliente externo.Enviar requests HTTPS autenticados con JWT a la API del backend.
  • API Gateway: Amazon API Gateway REST API que actúa como frontera HTTP del backend. Aplica throttling, valida JWTs y enruta al ALB.Ser la única puerta de entrada a la API. Proteger el backend de sobrecarga y tráfico no autenticado.
  • ALB: Application Load Balancer (capa 7) que distribuye requests entre los contenedores ECS en el Target Group, con health checks continuos.Balancear carga entre múltiples instancias de contenedores ECS y retirar automáticamente los contenedores unhealthy.
  • ECS Fargate: ECS Service con múltiples Tasks de Fargate corriendo el contenedor de la API. Fargate elimina la necesidad de gestionar EC2.Ejecutar el código de la API REST de forma escalable, sin gestionar servidores. ECS gestiona el ciclo de vida de los contenedores.
  • ECR: Amazon Elastic Container Registry (ECR) es el registro privado de imágenes Docker de AWS. Las imágenes compiladas por CI/CD se almacenan aquí.Almacenar las imágenes Docker de la API que ECS Fargate descarga al iniciar nuevos Tasks.
  • ElastiCache Redis: Amazon ElastiCache for Redis es una capa de caché en memoria de alta velocidad. Reduce la carga en RDS al servir datos frecuentemente accedidos desde memoria.Reducir la latencia de respuesta y la carga en RDS cacheando queries frecuentes, sesiones de usuario y datos de referencia.
  • RDS PostgreSQL: Amazon RDS PostgreSQL Multi-AZ. La instancia primaria acepta escrituras y lecturas. Una réplica standby sincrónica en otra AZ activa el failover automático.Ser la fuente de verdad de los datos del negocio. Garantizar consistencia ACID en todas las operaciones.
  • Secrets Manager: AWS Secrets Manager almacena y rota automáticamente credenciales sensibles (contraseña de la DB, API keys, tokens) inyectándolas en los Task Definitions de ECS.Eliminar credenciales hardcodeadas en el código o en variables de entorno del Task Definition. Rotar contraseñas automáticamente sin downtime.

Escenarios

  • Request normal — cache MISS en Redis: Un cliente consulta datos. Redis no tiene el dato en caché — se va a RDS, se cachea el resultado y se responde.
  • Request con cache HIT en Redis: El mismo endpoint consultado anteriormente. Redis tiene el dato en caché — respuesta en <5ms sin tocar RDS.
  • Deploy sin downtime (rolling update): Se despliega una nueva versión del contenedor. ECS la activa gradualmente sin interrumpir el tráfico existente.