Uso de Nested Stacks para superar límites en CloudFormation
Clase 14 de 38 • Curso de Infraestructura Como Código en AWS
Resumen
¿Qué son los nested stacks y por qué son necesarios?
Los nested stacks son una importante solución para superar las limitaciones en el uso de AWS Cloud Formation, especialmente cuando debemos administrar una gran cantidad de recursos en un solo stack. La necesidad de utilizarlos surge debido al límite que existe en la cantidad de elementos que podemos manejar: 100 mappings y 200 recursos por stack. Cuando superamos estas cifras, necesitamos un enfoque diferente y es ahí donde entran en juego los nested stacks.
¿Cómo funcionan los nested stacks?
Imagina un stack maestro que sirve como un controlador principal que se comunica con varios stacks más pequeños, cada uno manejando menos de 200 recursos. Estos stacks pequeños pueden tener muchos más mappings y ayudas específicas para cada contexto. Esto no solo nos permite superar los límites impuestos por AWS, sino que también organiza y segmenta los recursos de manera efectiva.
Ventajas de utilizar nested stacks
Utilizar nested stacks no solo ayuda a superar limitaciones numéricas:
- Orden y organización: Al dividir recursos en stacks separados, cada uno tiene su propósito y contexto claro, facilitando el entendimiento y manejo de los recursos.
- Facilidad de uso: Con stacks más pequeños, las operaciones de troubleshooting (resolver problemas) se vuelven más simples y rápidas.
- Interacción de recursos: A través de los outputs, podemos comunicar stacks entre sí, logrando que los recursos interactúen de manera eficiente.
¿Cómo los nested stacks benefician proyectos del día a día?
Cuando gestionamos proyectos complejos que incluyen, por ejemplo, un API Gateway, una función Lambda, un repositorio de código y un DynamoDB, los nested stacks nos permiten desplegar estos recursos de manera eficiente y organizada:
En un escenario sin nested stacks, todos los recursos se despliegan desde una única plantilla, complicando los cambios y la reutilización de recursos. Pero con nested stacks, un stack maestro controla la creación y gestión de stacks individuales para cada componente como Lambda o DynamoDB. Esto permite replicar, modificar y reutilizar componentes fácilmente sin complicaciones.
Escenario práctico: Organización de recursos
Un caso práctico es el siguiente: Imagina un proyecto que necesita desplegar recursos alojados en S3. Cada recurso puede manejarse de forma directa mediante su stack, lo que permite una gestión granular y evita sobrecarga en el stack principal. A través de direcciones en la AWS S3, los nested stacks se encargan de manejar cada componente de forma segregada.
Implementación de un stack maestro con nested stacks
Un stack maestro típicamente incluye una imagen de cómo debe estructurarse el proyecto, señalando:
- La API y su diseño dentro del stack.
- La función Lambda y sus dependencias.
- Integración de DynamoDB como base de datos.
- Uso de un bucket en S3 como almacenamiento central.
Este enfoque promueve la reutilización de recursos y una implementación flexible, reducida en complejidad.
Conclusión: Uso recomendado de nested stacks
Utilizar nested stacks se convierte en una práctica esencial para cualquier proyecto con dimensionamiento considerable. No solo optimiza la gestión de recursos y su reutilización, sino que también contribuye a un diseño claro y ordenado que facilitan el mantenimiento y la escalabilidad. Para explorar más sobre este enfoque, el repositorio del curso ofrece ejemplos donde podrás reemplazar URLs y ajustar stacks a tus necesidades, maximizando el potencial del uso de AWS Cloud Formation en tus proyectos.