CloudDevOpsIaCAzureTerraform

De diagrama a infraestructura cloud en producción: cómo rediseñamos una arquitectura Azure antes de escribir la primera línea de Terraform

NNubyron6 min de lectura

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?

1

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.

2

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.

3

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.

4

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

Reflexión

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.