Cómo transformamos un diseño de procesamiento de PDF en Azure hacia un pipeline event-driven, modular y terraformado antes de desplegar.
El punto de partida
Un cliente llegó a nosotros con una necesidad clara: automatizar el procesamiento de documentos PDF en Azure. El flujo era ambicioso — subir un documento, analizarlo con inteligencia artificial, extraer el contenido y almacenarlo de forma estructurada — pero la propuesta técnica inicial tenía margen de mejora significativo.
Antes de desplegar nada, hicimos lo que siempre hacemos: revisar el diagrama con ojos críticos.
Lo que encontramos no estaba mal en términos conceptuales. Cubría los requisitos. Pero arquitectónicamente introducía complejidad, coste y fragilidad innecesarios.
El diagnóstico: qué tenía el diseño original
El diagrama inicial planteaba la siguiente arquitectura:
🔗 Azure Logic Apps
Orquestador principal del flujo completo
⚡ 3 Azure Functions
Main scraper → Specific scraper → Data extraction
⏰ Trigger schedule
Temporizador periódico, sin reacción a eventos reales
🏗️ Terraform monolítico
Un único bloque sin separación de responsabilidades
¿Por qué esto era un problema?
Logic Apps como intermediario
Azure Logic Apps es un servicio potente, pero en este caso actuaba únicamente como disparador y conector entre funciones. Ese rol lo puede cubrir Event Grid de forma nativa, event-driven y a una fracción del coste. Pagar por Logic Apps para hacer de intermediario es coste que no aporta valor.
Tres Functions en cascada
Las tres Functions en cascada multiplican la latencia, los puntos de fallo y el código a mantener. Si la segunda falla, todo el pipeline se interrumpe. Si hay que hacer un cambio, hay que tocar tres piezas distintas. La lógica de negocio no justificaba esa fragmentación.
Trigger por schedule en lugar de eventos
El trigger por schedule significa que el sistema se despierta cada X tiempo independientemente de si hay trabajo o no. En un flujo de procesamiento de documentos, esto no tiene sentido: el sistema debería reaccionar cuando llega un fichero, no preguntar periódicamente si ha llegado algo.
Terraform sin modularizar
Sin modularización Terraform, la infraestructura es un bloque monolítico. Imposible reutilizar partes en otros proyectos, difícil de mantener, frágil ante cambios.
La solución: arquitectura event-driven modular
Antes de terraformar nada, propusimos un rediseño. El cliente lo aprobó. Luego sí, escribimos Terraform.
📐 Nuevo flujo
PDF subido a Storage (incoming/)
↓
Event Grid
(Microsoft.Storage.BlobCreated)
↓
Azure Function única
↓
Document Intelligence
(análisis del documento)
↓
OpenAI
(enriquecimiento IA)
↓
Cosmos DB
(almacenamiento estructurado)
Un evento real dispara un proceso real. Sin intermediarios. Sin polling.
Separación de almacenamiento por responsabilidad
| Storage | Propósito |
|---|---|
| ingest | Documentos entrantes (trigger del pipeline) |
| func | Artefactos y estado interno de la Function |
| processed | Documentos procesados (disponible para flujos adicionales) |
Infraestructura Terraform modularizada
app/
Function · Consumo · Insights
web/
Capa de entrada e ingesta
data/
Cosmos DB · Storage · Conexiones
Cada módulo es reutilizable de forma independiente en futuros proyectos.
Los resultados en producción
Pipeline completo
7.1s
Desde que el PDF llega al storage hasta que los datos están en Cosmos DB
📋 Logs de producción
[Information] 🔥 ProcessDocumentEvent FIRED!
[Information] EventType: Microsoft.Storage.BlobCreated
[Information] Starting document processing for prueba.pdf
[Information] Processing document: prueba.pdf, size: 182492 bytes
[Information] Document Intelligence analysis complete.
[Information] OpenAI enrichment complete
[Information] Document stored in Cosmos DB
[Information] Executed 'Functions.ProcessDocumentEvent'
(Succeeded, Duration: 7136ms)
Lo que se entregó
✅ Infraestructura Azure 100% terraformada y versionada en Git
✅ Pipeline event-driven funcional y probado en producción
✅ Módulos Terraform reutilizables para futuros proyectos
✅ Documentación técnica de la arquitectura
✅ Formación al equipo interno para mantenimiento y extensión del sistema
El mejor momento para mejorar una arquitectura es antes de desplegarla.
Revisar un diagrama cuesta horas. Refactorizar una infraestructura en producción cuesta semanas y dinero real. En este caso, el cambio de Logic Apps a Event Grid, la unificación del pipeline en una sola Function y la modularización de Terraform no solo simplificaron el sistema — lo hicieron más barato de operar, más fácil de mantener y preparado para escalar.
La infraestructura no es solo que funcione. Es que funcione bien, cueste lo justo y pueda crecer.
¿Tu arquitectura tiene margen de mejora?
Si tienes un diagrama que "funciona pero algo no cuadra", o una infraestructura cloud que ha crecido sin planificación, podemos ayudarte a diagnosticarla.
Contacta con nosotros →Este case study ha sido anonimizado. Los datos técnicos corresponden a un proyecto real.