Compara serverless vs containers: AWS Lambda, Azure Functions. Descubre cuándo elegir arquitectura sin servidores o contenedores para tu cloud.
En 2023, una empresa fintech latinoamericana migró su procesamiento de pagos a contenedores y gastó 47.000 dólares mensuales en Kubernetes. Tres meses después, un competidor directo resolvía el mismo volumen transaccional con Lambda por 8.200 dólares. La diferencia no era técnica: era estratégica. Elegir entre serverless vs containers no es una cuestión de moda tecnológica — es una decisión que impacta directamente en tu factura de cloud y en tu capacidad de escalar cuando el negocio lo demande.
Usa serverless (arquitectura sin servidores)** cuando tienes cargas de trabajo eventuales, spikes impredecibles, o quieres minimizar operaciones de infraestructura. Usa contenedores cuando necesitas control granular del runtime, portabilidad entre clouds, o workloads persistentes con requisitos estrictos de latencia y personalización. La mayoría de arquitecturas empresariales modernas usan ambos.
¿Qué es Serverless? Más Allá del Nombre
El término "sin servidores" genera confusión deliberada. Técnicamente, servidores existen — lo que desaparece es la necesidad de gestionarlos. Con Lambda AWS, Azure Functions, o Google Cloud Functions, despliegas funciones individuales que ejecutan código en respuesta a eventos, y el proveedor cloud escala automáticamente: de cero a millones de invocaciones en milisegundos.
Lambda AWS ofrece actualmente hasta 10 GB de memoria por función y un tiempo de ejecución máximo de 15 minutos (900 segundos). El pricing es por milisegundos de ejecución: en la capa gratuita incluye 1 millón de solicitudes y 400.000 GB-segundos de cómputo mensuales. Más allá de eso, los costos comienzan desde 0,20 dólares por millón de solicitudes y 0,0000166667 dólares por GB-segundo.
Funciones Azure sigue un modelo similar: el plan Consumption ofrece pricing por ejecución y memoria consumida, con 1 millón de solicitudes gratuitas mensuales. El plan Premium escala hasta 14 GB de memoria por instancia y elimina el límite de 5 minutos de ejecución por defecto.
La ventaja tangible:以北,你 solo pagas por lo que usas. Si tu función se ejecuta 100 veces al día durante 200 milisegundos, pagas por 20 segundos de cómputo totales — no por una instancia corriendo 24/7.
¿Qué Son los Contenedores y Por Qué Importan?
Los contenedores empaquetan tu aplicación junto con sus dependencias en una unidad portable que ejecuta consistentemente en cualquier entorno. Docker revolucionó esta práctica, pero en producción enterprise, Kubernetes es el estándar: orchestras cientos o miles de contenedores, defines políticas de auto-scaling, service mesh, y gestión de secretos.
Amazon EKS (Elastic Kubernetes Service) cobra 0,10 dólares por hora por cada cluster (aproximadamente 73 dólares mensuales), más los costos de las instancias EC2 subyacentes. Azure AKS elimina el cargo de management fee en el tier Free, pero el tier Standard incluye 0,10 dólares por hora de cluster. Google GKE ofrece un cluster Autopilot que cobra solo por los recursos consumidos por tus pods, o un cluster Standard con 0,10 dólares por hora.
AWS también ofrece ECS (Elastic Container Service), que se integra nativamente con IAM, CloudWatch, y el ecosistema AWS. Para workloads que no requieren la complejidad de Kubernetes, ECS con Fargate — el motor serverless para containers — combina lo mejor de ambos mundos: pagas por los recursos que tus contenedores consumen, sin gestionar servidores.
Serverless vs Containers: Las Diferencias Críticas
Control y Flexibilidad
Los contenedores te dan control total sobre el sistema operativo, las versiones de runtime, las bibliotecas instaladas, y la configuración de red. Puedes instalar software personalizado, aplicar parches de seguridad específicos, o configurar reglas de firewall granulares.
Serverless ofrece abstracción: tu función se ejecuta en un ambiente predefinido. Lambda soporta runtimes de Python, Node.js, Ruby, Java, Go, .NET, y ahora custom runtimes con Amazon Linux 2023. Pero si necesitas un daemon específico corriendo constantemente o modificaciones al kernel, serverless no es viable.
Arranque en Frío (Cold Starts)
Aquí está la verdad que muchos artículos omiten: serverless tiene latency spikes.
Una función Lambda sin tráfico reciente tarda entre 100 ms y 1 segundo en iniciar, dependiendo del runtime y memoria asignada. Node.js y Python son rápidos (~100-300 ms). Java y .NET pueden tardar 2-5 segundos con cold starts significativos.
AWS implementó Provisioned Concurrency — instancias pre-calentadas que cuestan 0,015 dólares por GB-hora adicional — para resolver esto, pero añade complejidad y costo.
Los contenedores, especialmente cuando usas Kubernetes con auto-scaling basado en métricas, mantienen instancias corriendo continuamente. El tiempo de arranque de un nuevo pod en un nodo ya aprovisionado es típicamente 10-30 segundos para aplicaciones containerizadas.
Ecosistema y Herramientas
Serverless se integra naturalmente con servicios manejados: Lambda + S3 + API Gateway + DynamoDB crea un backend completo en minutos. AWS SAM (Serverless Application Model) y Serverless Framework simplifican el deployment.
Los contenedores requieren orquestación. Kubernetes implica aprender YAMLs de Deployment, Service, Ingress, ConfigMap, Secret, HPA (Horizontal Pod Autoscaler), y potencialmente Operators. Aunque herramientas como Terraform, Helm, y Argo CD automatizan el proceso, la curva de aprendizaje es sustancial.
Cuándo Elegir Serverless: Casos de Uso Reales
1. Procesamiento de Eventos Asíncronos
Si tu workload es triggered por eventos — uploads a S3, cambios en DynamoDB, mensajes en SQS — serverless es la elección correcta. Procesar 10.000 imágenes simultáneamente sin gestionar servidores es exactamente el caso de uso para Lambda.
Ejemplo real: Una plataforma de e-learning procesa videos subidos por usuarios. Usa Lambda para generar thumbnails (función que procesa cada video y guarda resultados en S3), Step Functions para orquestar el pipeline completo, y SNS para notificar al usuario cuando el procesamiento termina. El costo mensual promedio: 340 dólares por 2 millones de invocaciones.
2. APIs con Tráfico Variable
API Gateway + Lambda escala de cero a millones de requests sin intervención. Para MVPs, hackathons, o productos en validación, serverless reduce el time-to-market drásticamente.
Lambda@Edge permite ejecutar funciones en edge locations de CloudFront, ideal para personalización de contenido con baja latencia para usuarios globales.
3. Trabajos Batch Programados
EventBridge (o CloudWatch Events) + Lambda ejecuta tareas diarias, semanales, o bajo demanda. Un job que corre 15 minutos diarios en una instancia EC2 dedicada cuesta aproximadamente 27 dólares mensuales. La misma función Lambda cuesta menos de 1 dólar.
4. Automatización de Operaciones
Losevent-driven workflows — aprovisionar recursos cuando se crea un usuario, archivar datos antiguos, generar reportes — son candidatos perfectos para serverless. El vendor lock-in es menor de lo que parece: Serverless Framework permite desplegar a AWS, Azure, o GCP con cambios mínimos.
Cuándo Elegir Contenedores: Decisiones Fundamentadas
1. Requisitos de Latencia Estrictos
Si necesitas responder en menos de 50-100 ms consistentemente, y los cold starts de serverless son inaceptables, los contenedores son tu opción. Aplicaciones de trading, sistemas de pagos en tiempo real, o gaming backend típicamente requieren este nivel de control.
Nota honesta: Para la mayoría de aplicaciones web, 200-500 ms de respuesta es aceptable. No elijas contenedores por rendimiento a menos que tengas métricas que demuestren que serverless no cumple tus SLAs.
2. Aplicaciones Monolíticas Modernizadas
Cuando lift-and-shift no es suficiente y necesitas containerizar aplicaciones legacy para migrar a cloud, los contenedores ofrecen un camino de modernización gradual. Puedes containerizar módulos incrementalmente, mantener la arquitectura existente, y re-architectear progresivamente.
3. Machine Learning en Producción
Modelos de ML frecuentemente requieren GPUs, bibliotecas específicas (CUDA, TensorFlow, PyTorch con versiones exactas), y personalizadosentrypoints. Amazon SageMaker usa contenedores para inference endpoints, permitiendo deployar modelos con el runtime exacto que necesitas.
Los contenedores también son esenciales para training distribuido en clusters de GPUs, donde necesitas control sobre scheduling y affinities.
4. Microservicios con Requisitos Heterogéneos
Si diferentes servicios de tu arquitectura tienen necesidades radicalmente diferentes — uno requiere 64 GB de RAM y GPUs, otro solo 512 MB — los contenedores permiten optimizar recursos por servicio. Serverless te limita a los recursos disponibles por función (máximo 10 GB en Lambda).
La Estrategia Híbrida: Usar Ambos
La decisión no es binaria. Las arquitecturas cloud más robustas que he diseñado combinan serverless para operaciones event-driven y contenedores para workloads stateful o con requisitos específicos.
Patrón típico: Un API Gateway recibe requests y los enruta a servicios containerizados (EKS/Fargate) para lógica de negocio compleja. esos servicios publishan eventos a SNS/SQS, que triggeran funciones Lambda para procesamiento asíncrono (notificaciones, analytics, archivado).
AWS App Runner es un ejemplo de esta convergencia: despliega contenedores sin gestionar Kubernetes, con auto-scaling basado en tráfico y pricing por uso. Para equipos que quieren la portabilidad de contenedores sin la complejidad de Kubernetes, App Runner o Azure Container Apps son opciones viables.
Análisis de Costos: Los Números Reales
Escenario: API REST con 1 Millón de Requests/Mes
Serverless (Lambda + API Gateway):
- 1 millón de requests a API Gateway: ~3,50 dólares (primeros 333 millones son 3,50 USD/millón)
- Lambda con promedio 150 ms y 512 MB por request: aproximadamente 0,30 dólares
- Total estimado: 3,80 dólares mensuales
Contenedores (ECS Fargate):
- 1 millón de requests implica tráfico sostenido. Con auto-scaling configurado para 2-4 tareas, asumiendo 4 vCPUs y 8 GB RAM promedio: aproximadamente 45-90 dólares mensuales
- Total estimado: 50-100 dólares mensuales
Para este escenario, serverless es 10-25x más económico.
Escenario: Procesamiento Batch de 8 Horas Diarias
Serverless:
- Lambda con límite de 15 minutos por ejecución requiere dividir el trabajo en chunks
- 8 horas de procesamiento intensivo en Lambda (8 vCPUs equivalentes): aproximadamente 200-400 dólares mensuales
Contenedores (EKS con instancias On-Demand):
- Una instancia m5.4xlarge (16 vCPUs, 64 GB) dedicada 8 horas diarias: aproximadamente 120 dólares mensuales
Aquí los contenedores comienzan a ser competitivos, especialmente si el trabajo es predecible y puede aprovechar reserved instances (hasta 70% de descuento).
Migración: De On-Premise a Serverless o Contenedores
Evaluación Inicial
Mapea tus dependencias: Identifica librerías del sistema, conexiones de red fijas, y estado local. Serverless requiere stateless functions; contenedores son más permisivos.
Analiza patrones de tráfico: Si tienes tráfico constante 24/7, contenedores con reserved capacity son más económicos. Si tienes spikes impredecibles, serverless escala mejor.
Evalúa vendor lock-in: Lambda usa API Gateway, SQS, DynamoDB. Contenedores son más portables entre clouds (aunque hay matices: EKS/AKS/GKE tienen diferencias sutiles en networking y storage).
Estrategia de Migración Recomendada
Para aplicaciones existentes:
Containeriza primero, refactoriza después: Envuelve tu aplicación en Docker. Esto te da portabilidad inmediata y te permite testear localmente con Docker Compose.
Extrae funciones event-driven: Identifica webhooks, scheduled jobs, o procesamiento triggered por archivos. estas son candidatas naturales para Lambda o Azure Functions.
Mueve a Kubernetes progresivamente: Si tu equipo tiene capacidad, EKS o GKE ofrecen el mayor control. Si necesitas simplicidad, ECS Fargate o App Runner reducen operational overhead.
Recomendación Final
Después de diseñar arquitecturas serverless y containerizadas para empresas en sectores financieros, retail, y salud, mi conclusión es pragmática:
Para startups y equipos pequeños (menos de 5 devs): Empieza serverless. Lambda, API Gateway, DynamoDB, y S3 te dan una infraestructura completa sin necesitar un especialista en Kubernetes. El time-to-market vale más que la flexibilidad futura.
Para empresas medianas y grandes: Adopta una estrategia híbrida. Contenedores para tu core business logic, microservicios críticos, y workloads con requisitos específicos. Serverless para automatización, processing de eventos, y utility functions.
Para equipos con deuda técnica significativa: No migrar a contenedores o serverless por moda. Si tu aplicación monolith corre bien en EC2 con auto-scaling groups, optimize eso primero. La complejidad innecesaria es el mayor riesgo operativo.
La pregunta correcta no es "¿serverless o contenedores?" — es "¿qué parte de mi arquitectura se beneficia más de cada paradigma?" Las cloud platforms modernas están diseñadas para esta composición: usa el servicio correcto para cada problema específico.
En Ciro Cloud ayudamos a empresas a diseñar arquitecturas cloud que equilibran costo, rendimiento, y maintainabilidad. Si estás evaluando cómo migrar o arquitectar desde cero, nuestros arquitectos pueden analizar tu workload específico y recomendar la estrategia óptima.
Insights cloud semanales — gratis
Guías prácticas sobre costos cloud, seguridad y estrategia. Sin spam.
Comments