Introducción
Desde hace mucho tiempo tuve la intención de comenzar a aportar activamente a la comunidad tecnológica, especialmente a la comunidad de AWS, como una forma de retribuir el valioso apoyo, conocimiento y experiencias que muchos profesionales comparten día a día.
Este artículo y el repositorio que lo acompaña nacen con ese objetivo: compartir una implementación clara y reusable del patrón SNS → SQS Fan-out en AWS, utilizando Terraform como Infrastructure as Code (IaC), y dejarla disponible para que otros puedan aprender, reutilizarla o mejorarla.
¿Por qué el patrón Fan-out es importante?
En arquitecturas modernas orientadas a eventos, uno de los desafíos más comunes es desacoplar productores y consumidores sin perder escalabilidad ni flexibilidad.
En integraciones tradicionales punto a punto:
- Cada nuevo consumidor incrementa la complejidad
- Los productores quedan fuertemente acoplados
- Los cambios generan alto impacto
El patrón Fan-out permite:
- Publicar eventos una sola vez
- Distribuirlos a múltiples consumidores
- Escalar de manera independiente
- Aislar fallos entre sistemas downstream
SNS y SQS como base del Fan-out en AWS
Amazon SNS actúa como el broker de eventos, mientras que Amazon SQS permite que cada consumidor procese mensajes de forma independiente y confiable.
Esta combinación ofrece:
- Fan-out nativo
- Filtrado de mensajes por suscripción
- Alta durabilidad y disponibilidad
- Desacoplamiento total entre productores y consumidores
Visión general de la arquitectura
Flujo de alto nivel
- Un productor publica un mensaje en un SNS Topic
- SNS evalúa las políticas de filtrado configuradas
- El mensaje se distribuye a una o más colas SQS
- Cada consumidor procesa los mensajes de forma independiente
Diseño con Terraform (Infrastructure as Code)
La solución está completamente implementada usando Terraform, permitiendo versionar, auditar y reproducir la infraestructura de manera consistente.
Enfoque modular
- Root module: orquesta el patrón Fan-out
- Módulo SNS: crea y configura el Topic
- Módulo SQS: crea las colas y políticas
Este enfoque facilita la reutilización y extensión del patrón en otros proyectos.
Decisiones de diseño relevantes
Algunas decisiones clave tomadas en este proyecto:
- Uso de Amazon SNS en lugar de EventBridge para mantener simplicidad y foco en el patrón
- Soporte para colas Standard y FIFO
- Naming consistente basado en entorno, proyecto y funcionalidad
- Filtrado de mensajes mediante subscription filter policies
Buenas prácticas AWS aplicadas
- Arquitectura desacoplada y orientada a eventos
- Infrastructure as Code
- Diseño modular
- Validaciones en variables Terraform
Casos de uso comunes
Este patrón es común en escenarios como:
- Detección de fraude
- Notificaciones
- Auditoría y logging
- Integración entre microservicios
- Procesamiento asíncrono
Repositorio GitHub
El código fuente está disponible públicamente:
🔗 Repositorio: https://github.com/auztinorix/terraform-aws-sns-sqs-fanout
Consideraciones para producción
Para un uso en producción se recomienda:
- Configurar un backend remoto de Terraform
- Implementar monitoreo con CloudWatch
- Revisar políticas IAM bajo el principio de menor privilegio
- Evaluar costos según volumen de mensajes
Cierre
Este proyecto representa un primer paso en mi objetivo de contribuir de forma constante a la comunidad AWS, compartiendo soluciones reales y aplicables basadas en experiencias de arquitectura.
Espero que este aporte sea útil y, sobre todo, que motive a otros a compartir su conocimiento con la comunidad 🚀

Top comments (0)