Me han preguntado muchas veces cuál herramienta de IaC de AWS elegir. La respuesta honesta es "depende", pero puedo contarte cómo decido yo.
CDK
Lo uso cuando:
- La infraestructura es compleja y heterogénea (Lambdas, EC2, RDS, EventBridge, etc.).
- El equipo es fuerte en TypeScript o Python.
- Quiero reutilizar constructs entre proyectos.
- Necesito pipelines sofisticados con CDK Pipelines.
Lo evito cuando:
- El proyecto es chico y solo tiene un par de recursos.
- El equipo no quiere aprender una herramienta nueva.
SAM
Lo uso cuando:
- El 80% o más del proyecto son Lambdas y API Gateway.
- Quiero desarrollo local rápido con
sam local. - El equipo prefiere YAML sobre TypeScript.
Lo evito cuando:
- Tengo infraestructura compleja que no cabe en el modelo serverless.
Amplify (Gen 2)
Lo uso cuando:
- Es una app fullstack con frontend y backend juntos.
- El equipo es principalmente frontend y no quiere aprender CDK a fondo.
- Necesito auth, data y storage sin pensar mucho.
Lo evito cuando:
- Necesito control fino sobre la infraestructura.
- El backend va a crecer más allá de lo que Amplify ofrece out of the box.
Copilot
Lo uso cuando:
- El proyecto es principalmente contenedores en ECS o App Runner.
- Quiero ambientes aislados sin configurar redes manualmente.
- No quiero escribir CloudFormation para cosas estándar.
Lo evito cuando:
- La arquitectura mezcla serverless y contenedores.
Una tabla mental
| Proyecto | Herramienta |
|---|---|
| API serverless simple | SAM |
| Fullstack web con auth | Amplify Gen 2 |
| Microservicios en Fargate | Copilot |
| Plataforma compleja | CDK |
| Monorepo con todo lo anterior | CDK + módulos |
Lo que no cambio de opinión
Nunca mezclo dos herramientas de IaC gestionando los mismos recursos. Puedes tener un stack en CDK y otro en SAM, pero que no se pisen. Los errores de drift son una pesadilla.
Cierre
No existe la herramienta perfecta. Existe la herramienta que tu equipo puede mantener dentro de seis meses cuando tú ya no estés mirando el código todos los días.
Top comments (0)