Del "Vibe Coding" a las Primitivas de Arquitectura: Una mirada profunda a la construcción de un registro de voluntarios serverless para el AWS Community Day Bolivia 2025. Descubre cómo navegué la "personalidad" de los agentes de IA, superé los obstáculos de contexto de sesión y por qué elegí un enfoque Multi-Cloud-Ready para garantizar la portabilidad.
Desde pequeño, las computadoras han ejercido una fascinación magnética sobre mí. Recuerdo perfectamente la primera vez que vi una en la oficina de mi madre, a los 11 años; en ese instante, supe exactamente a qué quería dedicar mi vida.
Aunque el destino me llevó por la senda de la infraestructura, en mi corazón nunca abandoné la idea de desarrollar aplicaciones. Si bien poseo bases sólidas de programación y me defiendo bien frente a la terminal, la falta de práctica diaria y de tiempo para profundizar me habían impedido, hasta ahora, producir software a nivel profesional.
Sin embargo, hoy el panorama es distinto. Con el auge de la Inteligencia Artificial, los LLM y la IA Generativa, se ha abierto un nuevo horizonte para perfiles como el mío: la posibilidad de materializar aplicaciones complejas sin necesidad de ser un experto en sintaxis profunda, apoyándonos en editores que potencian nuestra capacidad creativa.
Esta aventura comenzó con la organización del AWS Community Day Bolivia 2025. Este año, el honor de liderar el evento recayó en el AWS User Group Cochabamba, equipo del cual soy uno de los líderes. Organizar un encuentro de esta magnitud exige una coordinación impecable con los voluntarios y, aunque herramientas como Google Forms o Sheets son útiles, yo buscaba algo más: una solución integral diseñada a medida.
Mi visión era construir una plataforma que nos permitiera:
Aunque el desarrollo no llegó a finalizarse a tiempo para el Community Day, la experiencia fue reveladora. Este proceso enriqueció profundamente mis conocimientos sobre IA Generativa, arquitectura de aplicaciones y el ciclo de vida del desarrollo moderno. Pero, sobre todo, me permitió descubrir los tips & tricks de los agentes de IA y la delicada relación humano-máquina necesaria para obtener el resultado deseado.
Al momento de publicar este artículo, Kiro ha avanzado muchísimo. Varias de las limitaciones iniciales que encontré han sido mejoradas, especialmente en lo que respecta a la gestión de sesiones y memoria, consolidándose como la herramienta de vanguardia que deja atrás versiones anteriores.
Debo confesar que fui muy ingenuo al principio. Confiaba casi ciegamente en lo que Kiro producía, ya que, al menos de entrada, generó la estructura inicial del sitio de forma correcta y sorprendentemente rápida. El proyecto arrancó con una propuesta de especificaciones (Spec) diseñada por el propio Kiro; en el prompt le pedí que generara un proyecto serverless de tres capas: AstroJS para el frontend, FastAPI para el backend y DynamoDB para la persistencia de datos.
Durante las primeras etapas, trabajaba con tres editores abiertos y desplegaba directamente desde mi local a la cuenta de AWS del grupo de usuarios. Sin embargo, llegó el momento de hacer las cosas bien y configurar el despliegue mediante un flujo de CI/CD (porque ya saben: “en casa de herrero, cuchillo de palo”). Para ello, decidí utilizar AWS CDK. Según mi experiencia, mantener y gestionar los archivos de estado (state) es una preocupación adicional que quería evitar, por lo que descarté Terraform y Pulumi desde el inicio.
Al inicio de cada tarea (task), ingresaba un prompt para pulir los detalles que no me convencían o que no funcionaban correctamente. Fue aquí donde me topé con el primer escollo: tenía cuatro sesiones diferentes de Kiro que no compartían contexto entre sí.
Si durante el desarrollo del frontend Kiro detectaba un bloqueo en la API, la herramienta se quedaba “ciega” respecto al otro componente, obligándome a realizar constantes procesos de copy-paste para transferir datos de un entorno a otro. Para solucionar esto, decidí centralizar todo en una única sesión. Agrupé todos los repositorios en un directorio raíz para que Kiro pudiera navegar entre ellos con plena conciencia de la relación entre los componentes.
A continuación, comparto la estructura local que definí para lograr esa sincronía:
❯ tree -L 1 -a
.
├── .amazonq
├── .devbox
├── .envrc
├── .gitignore
├── .kiro
├── .python-version
├── .venv
├── README.md
├── devbox.json
├── devbox.lock
├── generated-diagrams
├── pyproject.toml
├── registry-api
├── registry-documentation
├── registry-frontend
├── registry-infrastructure
└── uv.lock
9 directories, 8 files
El lector notará que tengo Devbox configurado en el directorio raíz. Tomé esta decisión porque Kiro necesitaba ejecutar frecuentemente scripts en Python para sanitizar los repositorios, realizar búsquedas o ejecutar tareas de troubleshooting. Por ello, vi la necesidad de proveerle una cadena de dependencias aislada, evitando así la instalación de software innecesario en mi sistema operativo principal.
Sin embargo, en el mundo del desarrollo, apenas se resuelve un problema suele asomarse otro mucho peor.
Esta fue la etapa más compleja y la que más tiempo demandó. Fue el periodo de alineación entre la IA y yo; el momento en el que descubrimos el carácter, los límites y hasta dónde podíamos tolerarnos el uno al otro. El lector quizás sea escéptico, pero tras haber trabajado en decenas de sesiones, puedo afirmar que cada una desarrolla una “personalidad” distinta. Existe una diferencia sutil, pero real: la velocidad con la que captan el contexto previo, el tono de la conversación y la iniciativa varían entre sesiones.
Para quienes aún no han experimentado con Kiro (o Amazon Q), hay aspectos fundamentales que deben tomarse muy en serio:
Ignorar estas reglas tiene un costo alto: Kiro generará código que no funciona o que no se ajusta a tus objetivos. Lo más peligroso es que la herramienta siempre te asegurará con confianza que todo está bien, dejándote con una falsa sensación de éxito.
El punto de quiebre llegó durante una iteración en la que solicité un ajuste arquitectónico. Kiro malinterpretó la instrucción y alteró todo el proyecto: transformó una arquitectura Serverless en una basada en ECS y Aurora. Fue una experiencia frustrante, pero necesaria. En ese momento decidí establecer reglas de compromiso: creé un documento de “Primitivas de Arquitectura”. En él definí lineamientos estrictos sobre la estructura del proyecto, la gestión de repositorios y el comportamiento esperado al publicar cambios.
A partir de ese contrato, el proyecto se estabilizó. Avancé con una fluidez que antes parecía imposible y, gracias a ello, la versión beta se materializó mucho antes de lo previsto y ya se encuentra disponible en línea.
La arquitectura del proyecto puede verse en el siguiente diagrama:
Para lograr los objetivos de costo y escalabilidad, diseñé una estructura modular dividida en capas lógicas. Así es como interactúan los componentes:
Es la primera línea de contacto con el usuario, priorizando la seguridad y la velocidad.
Separamos los planos de control para garantizar la seguridad de las operaciones sensibles.
Aquí es donde reside la inteligencia del sistema, utilizando un enfoque de microservicios basados en eventos.
El corazón del sistema utiliza el patrón Service Registry para evitar el acoplamiento rígido.
Una combinación políglota para manejar diferentes tipos de datos con eficiencia.
Componentes que atraviesan toda la arquitectura para garantizar su salud y protección.
Para que la colaboración con la IA no terminara en el caos arquitectónico que mencioné antes, tuve que formalizar el conocimiento en dos pilares fundamentales. Estos documentos no solo guiaron a Kiro, sino que establecieron las bases de lo que considero un desarrollo moderno asistido.
No se trata solo de escribir código, sino de seguir principios que garanticen la evolución del sistema. Basándome en la documentación del Registry Project , implementamos tres reglas de oro:
Aprender a hablar con un agente como Kiro requiere más que simples instrucciones; requiere un marco de trabajo. Estos son los puntos clave que rescatamos de nuestras guías de asistencia :
Aunque el proyecto vive y respira en el ecosistema de Amazon Web Services, tomé una decisión estratégica desde el primer día: la arquitectura debía ser Multi-Cloud-Ready.
Muchos se preguntarán: ¿Para qué complicar el diseño si ya tenemos las herramientas de AWS? La respuesta reside en la soberanía técnica y el control de costos. Al implementar patrones como el Service Registry y utilizar Devbox para aislar entornos, evitamos el temido vendor lock-in (dependencia total de un solo proveedor).
Diseñar de esta manera nos obliga a separar la lógica de negocio de la infraestructura. Esto significa que, si mañana la comunidad decidiera migrar parte de la carga a otra plataforma o integrar servicios externos, el núcleo de nuestra aplicación no sufriría un trauma técnico. Es una arquitectura pensada para la libertad, donde AWS es nuestra elección por excelencia, pero no nuestra única posibilidad.
Este proyecto me permitió experimentar una nueva forma de trabajar, una nueva forma de pensar en el desarrollo de software. No se trata de reemplazar a los desarrolladores, sino de potenciarlos, de liberarles la mente para que puedan enfocarse en lo que realmente importa: la creatividad, la innovación, la resolución de problemas complejos.
La IA Generativa es una herramienta poderosa, pero necesita de un humano para guiarla, para corregirla, para mejorarla. Y eso es algo que me encanta de esta experiencia, el hecho de que haya un humano detrás de cada línea de código que se genera, y que ese humano tenga la capacidad de aprender, de evolucionar, de mejorar.
No se trata de dejar que la IA haga todo, sino de aprender a trabajar junto con ella, de aprovechar su poder para hacer más, para ser más, para lograr cosas que antes parecían imposibles.
Espero que esta experiencia les sirva de inspiración para explorar nuevas formas de trabajar, de pensar, de crear. Y que también les recuerde que el futuro no es algo que nos pasa a nosotros, sino algo que construimos juntos, con herramientas, con tecnología, con IA, con humanidad.
Finalmente, quiero decirles a todos aquellos que siempre quisieron desarrollar aplicaciones pero no pudieron que ahora es el momento, a partir de ahora nada es imposible, eso sí, no hay que entrar a éste proceso ingenuamente, hay que hacerlo con fundamentos por lo tanto a estudiar se dijo.
Gracias por leer hasta aquí, y como siempre, ¡hasta la próxima!
Sitio: https://registry.cloud.org.bo
Repositorios:
Keyboard Shortcuts
| Command | Function |
|---|---|
| ? (Shift+/) | Bring up this help modal |
| g+h | Go to Home |
| g+p | Go to Posts |
| g+e | Open Editor page on GitHub in a new tab |
| g+s | Open Source page on GitHub in a new tab |
| r | Reload page |