Diseño visual de aplicaciones serverless con AWS Application Composer - Generación automática de plantillas IaC

Explica el diseño visual de arquitecturas serverless con Application Composer, la generación automática de plantillas SAM y la integración con VS Code.

Descripción general de Application Composer

Application Composer es un servicio que permite diseñar visualmente la arquitectura de aplicaciones serverless y generar automáticamente plantillas SAM. En lugar de escribir YAML manualmente, basta con colocar recursos en el lienzo y conectarlos para generar una plantilla que incluye las políticas IAM correctas y la configuración de fuentes de eventos.

Diseño visual y sincronización bidireccional

Al arrastrar una función Lambda al lienzo y conectarla con API Gateway mediante una línea de conexión, se generan automáticamente el mapeo de fuente de eventos de API Gateway y el rol de ejecución de Lambda. Al conectar una tabla DynamoDB con Lambda, el ARN de la tabla se configura como variable de entorno y se agregan permisos de acceso a DynamoDB en la política IAM. Los cambios visuales se reflejan inmediatamente en el YAML, y las ediciones manuales del YAML también se reflejan en el visual, siendo la sincronización bidireccional su característica principal. Usando la extensión de VS Code, puedes editar visualmente plantillas SAM existentes locales.

Uso en desarrollo en equipo y limitaciones

Las plantillas diseñadas con Application Composer se prueban localmente con SAM CLI, se hacen commit en un repositorio Git y se integran en el flujo de trabajo IaC habitual. Los cambios realizados en el lienzo visual se reflejan inmediatamente en el YAML, por lo que las diferencias se pueden verificar en la revisión de código. Sin embargo, los tipos de recursos compatibles con Application Composer se limitan a los principales recursos serverless como Lambda, API Gateway, DynamoDB, S3, SQS, SNS y Step Functions. Recursos como VPC, RDS y ElastiCache deben agregarse manualmente al YAML y no se muestran en el lienzo visual. En plantillas que usan extensivamente Conditions y Mappings complejos, el límite entre la edición visual y manual se vuelve difuso, por lo que es importante establecer reglas dentro del equipo sobre qué se gestiona con Composer y qué se escribe manualmente. Para explicaciones detalladas sobre diseño serverless, también puedes consultar libros relacionados en Amazon.

Diferenciación con CloudFormation / SAM

Application Composer se posiciona como un editor visual de plantillas SAM y no reemplaza a CloudFormation ni a SAM CLI. Es más efectivo en escenarios de prototipado rápido de nuevas aplicaciones serverless. Importar plantillas existentes de gran escala (cientos de recursos) hace que el lienzo se vuelva desordenado y la operabilidad disminuya, por lo que la aplicación a proyectos existentes debe evaluarse con cuidado. En proyectos que usan CDK, es posible visualizar las plantillas CloudFormation generadas por los constructos de CDK en Composer, pero como no existe la funcionalidad de convertir inversamente los resultados de edición en Composer a código CDK, es realista usarlo como herramienta de visualización de solo lectura. Combinado con SAM Accelerator (sam sync), se puede iterar rápidamente el ciclo de diseñar en Composer, hacer hot deploy con sam sync y verificar el funcionamiento.

Precios de Application Composer

Application Composer es completamente gratuito. No hay cargos adicionales por el editor visual de la consola AWS, la extensión de VS Code ni la generación automática de plantillas SAM. El único costo es el de los recursos AWS desplegados con las plantillas generadas. Tampoco hay cargos adicionales al ejecutar pruebas locales combinadas con SAM CLI, permitiendo construir todo el flujo de trabajo de desarrollo de forma gratuita.

Resumen

Application Composer es una herramienta que visualiza el diseño de aplicaciones serverless y acelera la construcción inicial de IaC con la generación automática de plantillas SAM. La sincronización bidireccional entre el lienzo visual y YAML elimina la brecha entre diseño e implementación. Comprendiendo las limitaciones de los recursos compatibles, es más efectivo utilizarlo en prototipado y proyectos serverless de pequeña a mediana escala.