Durante ocho módulos has visto la plataforma de Contoso Airlines por partes. Cada lección presentó una pieza, la justificó y la dejó funcionando: una red aquí, una base de datos allá, un pipeline, una alerta, un presupuesto. Es la única forma de aprender una plataforma —nadie entiende cincuenta servicios a la vez—, pero no es la forma en que la plataforma existe. En producción todo está conectado con todo, y el día que algo falla nadie tiene tiempo de reconstruir mentalmente ocho módulos: hace falta un plano.
Esta lección dibuja ese plano entero y enseña a leerlo. No vuelve a explicar qué es App Service ni cómo funciona Cosmos DB: eso ya lo sabes. Lo que hace es mostrar el conjunto y el criterio: por dónde entra una petición y por dónde sale, qué habla con qué y a través de qué, por qué cada pieza es esa y no otra, cuánto cuesta el resultado, qué tres versiones distintas de esta misma arquitectura tendrían sentido en otros contextos, y qué haría el equipo distinto si empezara hoy con lo que sabe ahora.
Es la lección más importante del módulo, porque leer una arquitectura de conjunto —ver el punto único de fallo, el acoplamiento innecesario, la pieza que sobra— es exactamente lo que separa a quien conoce servicios de quien diseña sistemas.
Recordatorio: todas las cifras en euros son orientativas y ficticias, y los nombres de recursos pertenecen a un caso de estudio inventado. Los precios reales varían por región y cambian con frecuencia.
Contenido
- Cómo se lee un plano de arquitectura
- El plano completo de Contoso Airlines
- Lectura por zonas
- El recorrido de una reserva, de extremo a extremo
- La tabla maestra de decisiones
- Los números de la plataforma
- Tres variantes de la misma arquitectura
- La retrospectiva honesta: qué haríamos distinto hoy
- Arquitecturas de referencia y el Azure Architecture Center
- Errores Comunes y Consejos
- Ejercicios
- Conclusión
- Cómo se lee un plano de arquitectura
Un diagrama de arquitectura útil no es un inventario de iconos: es un mapa de flujos y fronteras. Se lee siempre en el mismo orden, y merece la pena interiorizarlo porque sirve para cualquier plataforma, no solo para esta:
- ¿Por dónde entra el tráfico? Todo lo que viene de internet tiene un único punto de entrada legítimo. Si hay dos, uno de ellos es un agujero.
- ¿Dónde están las fronteras de confianza? El borde público, la red privada, la subred de datos. Cada cruce de frontera es un control: WAF, firewall, NSG, punto de conexión privado.
- ¿Qué es síncrono y qué es asíncrono? Una flecha continua significa que si el destino cae, el origen falla. Una flecha por cola o evento significa que si el destino cae, el trabajo espera. Es la distinción que más determina la resiliencia real.
- ¿Dónde vive el estado? El cómputo se puede recrear en minutos; los datos no. Todo lo que guarda estado necesita copia, réplica y plan de recuperación.
- ¿Quién observa el conjunto? La plataforma de operación no participa en el flujo, pero lo cruza entero.
- ¿Qué impide crear lo que no debe existir? El gobierno no está en el flujo: está por encima, en la jerarquía de suscripciones.
El plano de la sección siguiente está dibujado exactamente en ese orden, de arriba abajo.
- El plano completo de Contoso Airlines
flowchart TB
subgraph BORDE["Borde y entrega global"]
USR["Pasajero<br/>navegador y movil"]
FD["fd-contoso-global<br/>Front Door"]
WAF["wafcontosoglobal<br/>WAF"]
end
subgraph HUB["vnet-contoso-hub-pro 10.10.0.0/16"]
FW["fw-contoso-hub-pro<br/>Azure Firewall"]
BAS["bastion-contoso-pro"]
VGW["vgw-contoso-pro<br/>VPN sitio a sitio"]
end
subgraph OFI["Oficinas propias"]
BCN["Barcelona<br/>centro de datos"]
PMI["Palma"]
end
subgraph APP["Capa de aplicacion - vnet-contoso-pro 10.20.0.0/16"]
WEB["app-contoso-reservas-pro<br/>App Service Premium v3"]
API["app-contoso-api-disponibilidad-pro<br/>API de disponibilidad"]
VMSS["vmss-api-disponibilidad-pro<br/>+ lb-api-disponibilidad-pro"]
CAE["cae-contoso-pro<br/>ca-motor-disponibilidad"]
AKS["aks-contoso-operaciones<br/>sistema / aplicaciones / lotes"]
ACR["acrcontosopro"]
end
subgraph INT["Integracion"]
SB["sb-contoso-pro<br/>tema reservas-confirmadas"]
FUNC["func-contoso-tarjetas-pro"]
LOGIC["logic-contoso-retrasos-pro"]
EVGT["evgt-contoso-reservas-pro"]
EVH["evhns-contoso-telemetria-pro"]
OAI["oai-contoso-pro<br/>Azure AI Services"]
end
subgraph DATOS["Capa de datos"]
SQL["sql-contoso-reservas-pro<br/>db-reservas + fg-contoso-reservas"]
COSMOS["cosmos-contoso-tarifas-pro<br/>particion /origenDestino"]
MYSQL["mysql-contoso-portal-pro"]
PSQL["psql-contoso-tripulaciones-pro"]
STT["sttarjetascontosopro<br/>GZRS"]
LAGO["stlagocontosopro<br/>bronce / plata / oro"]
SYN["syn-contoso-analitica-pro"]
end
subgraph SEC["Seguridad"]
KV["kv-contoso-pro"]
ENTRA["Microsoft Entra ID<br/>identidades administradas"]
PE["pe-sql-reservas<br/>pe-storage-tarjetas<br/>pe-kv-contoso"]
end
subgraph OPS["Plataforma de operacion"]
LOG["log-contoso-pro<br/>Log Analytics"]
AI["ai-insights-contoso-pro<br/>Application Insights"]
AUTO["aa-contoso-operaciones"]
RSV["rsv-contoso-pro<br/>bv-contoso-pro"]
end
USR --> FD --> WAF --> WEB
WAF --> API
WEB --> API --> CAE
API --> VMSS
WEB --> SB --> FUNC --> STT
EVGT --> LOGIC
EVH --> SYN
API --> COSMOS
WEB --> SQL
AKS --> PSQL
AKS --> LAGO --> SYN
ACR --> AKS
ACR --> CAE
MYSQL --- WEB
WEB -.->|"identidad administrada"| KV
API -.->|"identidad administrada"| KV
ENTRA -.-> KV
PE -.-> SQL
PE -.-> STT
PE -.-> KV
VGW --- BCN
VGW --- PMI
FW --- VGW
BAS -.-> VMSS
OAI -.-> API
WEB -.-> AI
API -.-> AI --> LOG
AKS -.-> LOG
SQL -.-> LOG
AUTO -.-> LOG
RSV -.-> SQL
Las flechas continuas son flujo de petición o de datos; las discontinuas, dependencias de plano de control: identidad, secretos, telemetría, copias. Es una distinción deliberada: si kv-contoso-pro deja de responder, la aplicación no se cae al instante —los secretos están en caché—, pero si cosmos-contoso-tarifas-pro deja de responder, la búsqueda de vuelos falla en el acto.
Y por encima de todo el dibujo, sin aparecer en él, está la jerarquía de gobierno, que no participa en ningún flujo pero determina qué se puede crear:
flowchart TB
MG["mg-contoso"] --> MGP["mg-contoso-plataforma"]
MG --> MGC["mg-contoso-cargas"]
MGP --> SUBP["Contoso Airlines - Produccion"]
MGC --> SUBD["Contoso Airlines - Desarrollo"]
SUBP --> RG1["rg-contoso-reservas-pro"]
SUBP --> RG2["rg-contoso-red-pro"]
SUBP --> RG3["rg-contoso-seguridad-pro"]
SUBD --> RG4["rg-contoso-reservas-dev"]
POL["Iniciativa<br/>Base de gobernanza de Contoso"] -.->|"asignada en"| MG
- Lectura por zonas
Borde y entrega global
Un único punto de entrada: fd-contoso-global. Todo lo demás está cerrado a internet. Front Door termina TLS en el punto de presencia más cercano al pasajero, aplica el WAF wafcontosoglobal antes de que la petición llegue a ninguna aplicación, cachea lo estático y enruta a la región sana. Las aplicaciones solo aceptan tráfico procedente de Front Door, lo que convierte el WAF en obligatorio y no en opcional. Módulo 2 (entrega global) y módulo 4 (WAF).
Capa de aplicación
Cuatro modelos de cómputo conviviendo, y eso no es incoherencia sino adecuación:
| Carga | Servicio | Por qué ese modelo |
|---|---|---|
| Portal de reservas | App Service Premium v3 | Aplicación web clásica, ranura preproduccion, redundancia de zona, /salud |
| API de disponibilidad | App Service + vmss-api-disponibilidad-pro |
Picos extremos de temporada, autoescalado 2-20 |
| Motor de disponibilidad | Container Apps ca-motor-disponibilidad |
Contenedor con escalado a cero, sin operar un clúster |
| Operaciones internas y lotes | AKS aks-contoso-operaciones |
Varios equipos, cargas heterogéneas, nodos de acceso puntual |
Integración
Es la zona que hace que la plataforma no se caiga entera cuando algo falla. sb-contoso-pro desacopla la confirmación de la reserva de todo lo que ocurre después: el tema reservas-confirmadas reparte a tarjetas, facturacion y fidelizacion, tres consumidores que no se conocen entre sí y que pueden estar caídos sin impedir una venta. evgt-contoso-reservas-pro propaga eventos discretos, logic-contoso-retrasos-pro orquesta el aviso a pasajeros con conectores en lugar de con código, y evhns-contoso-telemetria-pro absorbe el chorro de telemetría hacia analítica. Módulo 6.
Capa de datos
Cinco motores, uno por forma de dato: SQL para transacciones de reserva, Cosmos DB para tarifas de lectura masiva y global, MySQL para el portal de contenidos heredado, PostgreSQL para tripulaciones, y el lago con Synapse para analítica. Todos accesibles solo por punto de conexión privado. Es el estado, y por eso es donde se concentran las copias, las réplicas y el plan de recuperación. Módulo 3 y módulo 7.
Plataforma de operación y gobierno
log-contoso-pro es un área única en la que confluye todo: aplicaciones, plataforma, seguridad y actividad. Sobre ella se apoyan las alertas, ag-guardia-contoso, los paneles y las consultas KQL. Y por encima, la iniciativa Base de gobernanza de Contoso impide crear un recurso sin etiquetas, fuera de las regiones permitidas, con blobs públicos o sin HTTPS. Módulos 4 y 7.
- El recorrido de una reserva, de extremo a extremo
Este es el flujo que justifica la existencia de toda la plataforma: una pasajera busca un vuelo Barcelona–Palma y termina con su tarjeta de embarque en el correo.
sequenceDiagram
autonumber
participant P as Pasajera
participant FD as fd-contoso-global + WAF
participant W as app-contoso-reservas-pro
participant A as api-disponibilidad
participant C as cosmos-tarifas
participant S as db-reservas
participant B as sb-contoso-pro
participant F as func-contoso-tarjetas-pro
participant T as sttarjetascontosopro
P->>FD: Buscar BCN-PMI
FD->>FD: Reglas WAF y cache
FD->>W: Peticion enrutada
W->>A: Consultar disponibilidad
A->>C: Leer tarifas por /origenDestino
C-->>A: Tarifas
A-->>W: Vuelos y precios
W-->>P: Resultados
P->>W: Confirmar y pagar
W->>S: Transaccion de reserva
S-->>W: Localizador CA7431
W->>B: Publicar reservas-confirmadas
W-->>P: Reserva confirmada
B->>F: Suscripcion tarjetas
F->>S: Leer datos del vuelo
F->>T: Guardar tarjeta PDF
F-->>P: Correo con la tarjeta
Lo importante del diagrama es dónde termina la respuesta al pasajero: en el paso 13. Todo lo que viene después ocurre por detrás, y esa frontera es la decisión de arquitectura más valiosa de toda la plataforma. Si la generación de tarjetas falla, la venta ya está hecha y el mensaje se reintenta.
| Paso | Pieza | Módulo en que se construyó |
|---|---|---|
| 1-3 | Front Door, WAF, enrutado | M2 (entrega global), M4 (WAF) |
| 4 | App Service y su plan | M2 |
| 5-7 | API y autoescalado | M2, M6 |
| 6 | Cosmos DB y clave de partición | M3 |
| 9-10 | SQL Database y transacción | M3 |
| 11 | Service Bus, tema y suscripciones | M6 |
| 14-16 | Azure Functions y Storage | M6, M2 |
| Transversal | Identidad administrada y Key Vault | M4 |
| Transversal | Traza distribuida en Application Insights | M7 |
| Transversal | Despliegue de cada pieza por pipeline y Bicep | M5 |
| Transversal | Coste imputado por etiqueta | M8 |
- La tabla maestra de decisiones
Toda arquitectura es una lista de decisiones con su alternativa descartada. Esta es la de Contoso, completa:
| Decisión | Alternativa descartada | Motivo | Módulo |
|---|---|---|---|
| App Service para el portal | Máquinas virtuales | Sin sistema operativo que parchear; ranuras y escalado incluidos | M2 |
| VMSS solo para la API | Todo en App Service | Control fino del escalado en picos de temporada y coste por instancia menor | M2 |
| Front Door | Application Gateway solo | Entrega global, caché y WAF en el borde, no en la región | M2 |
| Piloto ligero en North Europe | Activo-activo multirregión | Coste desproporcionado para un RTO de 4 h aceptado por negocio | M7 |
| Cosmos DB para tarifas | SQL Database | Lecturas masivas, latencia baja, esquema flexible, escritura por ruta | M3 |
Partición /origenDestino |
/aerolinea o /fecha |
Cardinalidad alta y consultas siempre por ruta; evita partición caliente | M3 |
| SQL Database para reservas | Cosmos DB | Transacciones ACID e integridad referencial no negociables | M3 |
| Puntos de conexión privados | Firewall de servicio con IP | Elimina la exposición pública del dato; obligatorio para tarjetas | M2, M4 |
| Identidades administradas | Cadenas de conexión en configuración | Ningún secreto que rotar ni que filtrar | M4 |
| Iniciativa de directivas | Revisión manual en el despliegue | Lo que no debe existir no llega a crearse | M4 |
| Bicep | Portal y scripts sueltos | Entorno reproducible y revisable en solicitud de cambios | M5 |
| Container Apps antes que AKS | AKS para todo | El motor no necesitaba un clúster; escalado a cero y cero operación | M6 |
| AKS solo para operaciones | Container Apps para todo | Varios equipos, cargas de lote, control de nodos y spot | M6 |
| Service Bus entre venta y tarjeta | Llamada HTTP síncrona | Desacopla el fallo: la venta no depende del PDF | M6 |
| Un área de Log Analytics | Una por equipo o por entorno | Correlacionar entre capas es imposible con datos repartidos | M7 |
| GZRS en tarjetas | LRS | Documento con valor probatorio; resistencia regional | M2, M8 |
| Reservas a 1 año, no a 3 | Compromiso a 3 años | Plataforma aún en evolución; flexibilidad sobre descuento máximo | M8 |
- Los números de la plataforma
| Indicador | Valor | Comentario |
|---|---|---|
| Coste mensual | 12.550 €/mes (orientativo) | Desde 17.800 €, un 29 % menos, sin degradar servicio |
| Presupuesto | 13.000 €/mes | Con alertas al 80 % real y 100 % previsto |
| Coste unitario | 0,136 €/reserva | Desde 0,193 €; el indicador que de verdad importa |
| Compromisos | ≈2.900 €/mes | Reservas y planes de ahorro a 1 año |
| Disponibilidad objetivo | 99,9 % mensual | Portal y API de disponibilidad |
| RPO / RTO producción | 15 min / 4 h | Con fg-contoso-reservas y piloto ligero |
| RPO / RTO desarrollo | 24 h / mejor esfuerzo | Decisión consciente de no invertir |
| Latencia objetivo búsqueda | < 400 ms p95 | Medida en Application Insights |
| Regiones | West Europe + North Europe | Principal y piloto ligero |
| Recortes rechazados por escrito | 2.555 €/mes | Redundancia, WAF, Defender, GZRS, copias, Bastion |
- Tres variantes de la misma arquitectura
La arquitectura de Contoso no es la arquitectura correcta: es la correcta para Contoso. Cambia el contexto y cambia el plano.
| Aspecto | Mínima viable (pyme) | Contoso (referencia) | Gran empresa activo-activo | Regulada con residencia |
|---|---|---|---|---|
| Regiones | 1 | 1 + piloto ligero | 2+ activo-activo | 1-2, siempre en la UE |
| Borde | App Service con dominio propio | Front Door + WAF | Front Door Premium + WAF por región | Front Door + WAF + inspección |
| Cómputo | App Service Basic/Standard | Premium v3 + VMSS + CA + AKS | Todo multirregión y multizona | Igual, con computación confidencial donde aplique |
| Datos | SQL Database sin servidor | SQL + Cosmos + MySQL + PSQL | SQL con grupos automáticos, Cosmos multiescritura | Claves gestionadas por el cliente, residencia verificada |
| Red | Sin red virtual propia | Hub-radio con firewall | Hub por región con emparejamiento global | Sin salida a internet, todo por punto privado |
| Identidad | Entra ID básico + MFA | Grupos, PIM, acceso condicional | Igual + revisiones de acceso automatizadas | Igual + segregación de funciones auditada |
| Operación | Application Insights solo | Log Analytics + alertas + guardia | SRE 24×7, presupuestos de error | Retención larga y registro inalterable |
| Coste orientativo | 600-900 €/mes | 12.550 €/mes | 45.000-60.000 €/mes | 18.000-25.000 €/mes |
| RTO | 24 h | 4 h | Minutos | 4 h con evidencia documentada |
Qué se quita en la versión mínima: firewall, bastión, VMSS, AKS, Synapse, segunda región y la mayor parte del gobierno; se conservan MFA, copias, HTTPS obligatorio, secretos fuera del código y etiquetas, porque eso no es lujo, es higiene. Qué se añade en la de gran empresa: segunda región activa con Cosmos DB de escritura múltiple, grupos de conmutación automática, emparejamiento global, equipo de guardia continuo y una factura tres o cuatro veces mayor; se compra latencia baja global y RTO de minutos, y se paga con complejidad operativa, que es el coste que nadie presupuesta. Qué caracteriza a la regulada: la arquitectura apenas cambia de forma, cambia en restricciones —dónde puede estar el dato, quién puede verlo, cuánto tiempo se conserva la evidencia— y en que cada decisión necesita justificación documental. En los tres casos el plano es reconocible: es la misma forma con más o menos piezas.
- La retrospectiva honesta: qué haríamos distinto hoy
Ninguna plataforma real sale bien a la primera. Estas son las cosas que Marta, Diego y Nuria harían de otra manera:
- Etiquetar desde el minuto uno, con directiva. Las etiquetas llegaron tarde y hubo que retro-etiquetar decenas de recursos a mano para poder repartir la factura. La directiva
hereda-centro-costedebería haber existido antes que el primer grupo de recursos. - Empezar por la zona de aterrizaje, no por la primera máquina. La jerarquía de grupos de administración y la iniciativa de gobierno se montaron cuando ya había recursos dentro. Es mucho más barato al revés.
- No crear
vm-motor-disponibilidad-dev. Nació como prueba rápida y sobrevivió un año sobredimensionada. Hoy sería un contenedor desde el primer día. - Bicep antes que el portal. Los primeros recursos se crearon a mano y luego hubo que escribirlos en plantillas a posteriori, con las diferencias sutiles que eso arrastra.
- Presupuesto y alerta de coste el mismo día que la primera suscripción. La factura duplicada del primer trimestre se detectó tarde solo porque nadie miraba, y el intento de separar Log Analytics por equipo costó dos semanas deshacerlo.
- Menos servicios distintos. Conviven MySQL y PostgreSQL por razones históricas; si se empezara hoy, sería un solo motor relacional además de SQL.
La conclusión que el equipo escribió en su retrospectiva es la que conviene llevarse: casi todos los errores fueron de orden, no de elección. Las piezas eran las adecuadas; lo que costó dinero fue montarlas en la secuencia equivocada.
- Arquitecturas de referencia y el Azure Architecture Center
No hace falta inventar cada plano desde cero. El Azure Architecture Center publica arquitecturas de referencia revisadas, con diagrama, componentes, consideraciones por pilar del Well-Architected Framework y, en muchos casos, plantillas desplegables:
| Familia | Qué resuelve | Relación con Contoso |
|---|---|---|
| Aplicación web multirregión | Alta disponibilidad de una web con datos replicados | Base del par West/North Europe |
| Microservicios en AKS | Clúster, entrada, malla, observabilidad | Referencia de aks-contoso-operaciones |
| Arquitectura sin servidor basada en eventos | Functions, Event Grid, colas | Referencia del flujo de tarjetas |
| Hub-radio con firewall | Topología de red corporativa | Modelo de vnet-contoso-hub-pro |
| Zona de aterrizaje empresarial | Gobierno, identidad, red y suscripciones | Se trata en 09-04 |
Cómo usarlas bien: empieza por la referencia, quítale lo que no necesitas y anota por qué. La referencia está diseñada para el caso exigente; copiarla entera en una organización pequeña produce una plataforma cara e inoperable. El valor no está en el dibujo, está en la lista de consideraciones que lo acompaña.
Errores Comunes y Consejos
- Confundir un diagrama con documentación. Un plano sin la tabla de decisiones no explica nada: dentro de un año nadie recordará por qué Cosmos y no SQL.
- Dibujar el diagrama una vez. Un plano desactualizado es peor que ninguno, porque induce a error durante un incidente. Vive en
contoso-infra, junto a las plantillas. - Dibujar todo en un único diagrama ilegible. Uno general y varios de detalle: red, flujo de reserva, gobierno. Cada uno responde a una pregunta.
- No distinguir flechas síncronas de asíncronas. Es la información más importante del plano y la que más se omite.
- Copiar una arquitectura de referencia entera. Está pensada para el caso más exigente; adapta y documenta lo que quitas. Y recuerda que más servicios no es mejor arquitectura: cada uno añade coste de operación, no solo factura.
- Consejo: mantén una tabla de decisiones de arquitectura con fecha, alternativa descartada y motivo. Es el documento más valioso de una plataforma y el que nadie escribe.
- Consejo: revisa el plano después de cada incidente, y tenlo a mano en las guardias. Los incidentes enseñan dónde estaba mal dibujado.
Ejercicios
Ejercicio 1. Mirando el plano general y el diagrama de secuencia, identifica los tres puntos de fallo más graves de la plataforma de Contoso: para cada uno, qué deja de funcionar exactamente, si el fallo es total o parcial, y qué haría falta para mitigarlo con su coste aproximado. Ordénalos por impacto en el negocio, no por gravedad técnica.
Ejercicio 2. Una cadena hotelera de 40 empleados quiere un portal de reservas con búsqueda, pago y confirmación por correo, con unas 8.000 reservas al mes y presupuesto máximo de 1.200 €/mes. Diseña su arquitectura partiendo del plano de Contoso: qué conservas, qué eliminas y qué sustituyes por una alternativa más barata. Justifica qué tres cosas no eliminarías nunca aunque el presupuesto bajara a 600 €.
Ejercicio 3. Contoso quiere vender en Latinoamérica y el equipo propone activo-activo con Cosmos DB de escritura múltiple. Analiza la propuesta: qué problema resuelve realmente, qué problemas nuevos crea —especialmente con db-reservas—, qué alternativa más barata cubriría el 80 % del beneficio, y qué preguntas de negocio harías antes de decidir.
Soluciones
Solución 1: ordenados por impacto en el negocio. (1) sql-contoso-reservas-pro / db-reservas: es el único punto donde la venta es síncrona e insustituible; si cae, no se puede confirmar ninguna reserva —parada total de ingresos—, aunque la búsqueda siga funcionando porque las tarifas están en Cosmos. Ya está mitigado parcialmente con redundancia de zona y fg-contoso-reservas a North Europe, con RTO de 4 h; reducirlo a minutos exigiría conmutación automática y pruebas frecuentes, con un coste adicional del orden de 1.200-1.500 €/mes. (2) fd-contoso-global: es el único punto de entrada; si falla el perfil o una regla del WAF bloquea tráfico legítimo, la caída es total e instantánea aunque todo lo demás esté sano —el fallo más probable no es de Azure, es una regla mal desplegada, y por eso la mitigación real es barata: modo de detección primero, despliegue por pipeline y capacidad de revertir en minutos—. (3) cosmos-contoso-tarifas-pro: si cae, no hay búsqueda de vuelos, que es el 90 % del tráfico; el fallo es parcial —quien ya tiene un vuelo elegido podría reservar— pero comercialmente devastador; la mitigación es lectura desde una segunda región, relativamente barata, más una caché de tarifas de la ruta popular en el borde. Nota de criterio: el fallo de func-contoso-tarjetas-pro no entra en la lista pese a ser visible para el cliente, porque el mensaje espera en Service Bus y la venta ya está cobrada: exactamente lo que se buscaba al desacoplar.
Solución 2: se conserva la forma, no el tamaño. Conservar: App Service —un plan Standard o Premium v1 pequeño, no Premium v3—, SQL Database sin servidor con pausa automática (8.000 reservas al mes es carga baja y muy irregular), Blob Storage para justificantes, Application Insights, MFA obligatorio, HTTPS obligatorio, copias con retención razonable, etiquetas y un presupuesto con alertas. Eliminar: Front Door y WAF —se sustituye por el dominio propio con certificado gestionado y, si preocupa el abuso, límite de peticiones en la aplicación—, firewall, bastión, VMSS, AKS, Container Apps, Synapse, lago, Event Hubs, segunda región, PIM y la mayor parte de la iniciativa de directivas, que se reduce a tres reglas —regiones permitidas, sin blobs públicos, solo HTTPS—. Sustituir: Service Bus por una cola de Storage o directamente por Event Grid con una Function en consumo, mucho más barato a este volumen; Cosmos DB no aplica —el catálogo cabe en SQL—. Total plausible: 700-900 €/mes, dentro del presupuesto. Las tres cosas que no se eliminan nunca, ni con 600 €: los secretos fuera del código con identidad administrada o Key Vault (una filtración no tiene relación con el tamaño de la empresa), las copias de seguridad probadas (un borrado accidental cierra una empresa pequeña, no la incomoda), y MFA con ningún puerto de administración abierto a internet (el ataque automatizado no distingue entre una pyme y una aerolínea). Son las tres cosas cuyo coste de omisión es catastrófico e independiente del volumen.
Solución 3: qué resuelve realmente: latencia de lectura para usuarios lejanos —una búsqueda desde Bogotá contra West Europe añade cientos de milisegundos— y, secundariamente, tolerancia a la caída de una región. Qué problemas crea: la escritura múltiple en Cosmos obliga a resolver conflictos, algo que un catálogo de tarifas tolera pero que exige una política explícita; y sobre todo db-reservas no acompaña: SQL Database no es de escritura múltiple, así que las reservas seguirían escribiéndose en West Europe y el usuario de Bogotá tendría búsqueda rápida y confirmación lenta, con el riesgo añadido de incoherencia entre lo que ve y lo que puede comprar. Se multiplican además el coste de RU/s, la salida de datos entre regiones, la complejidad de despliegue —dos de todo, en dos pipelines— y la superficie de incidentes. Alternativa que cubre el 80 %: añadir una región de solo lectura a Cosmos DB con lectura desde la región más cercana y consistencia Sesión, mantener la escritura en Europa y apoyarse en Front Door para acercar lo estático y cachear las rutas populares; se gana casi toda la latencia percibida por una fracción del coste y sin conflictos. Preguntas de negocio previas: ¿qué volumen real se espera en Latinoamérica y en qué plazo? ¿Existe requisito legal de residencia del dato en algún país destino? ¿Cuánta pérdida de conversión atribuimos hoy a la latencia, medida y no supuesta? ¿Hay equipo para operar dos regiones activas 24×7? La respuesta a la última suele decidir la discusión.
Conclusión
Ya tienes el plano completo de Contoso Airlines y, más importante, el método para leer cualquier otro: por dónde entra el tráfico, dónde están las fronteras de confianza, qué es síncrono y qué asíncrono, dónde vive el estado, quién observa y qué impide crear lo que no debe existir. Has visto las seis zonas —borde y entrega global, aplicación, integración, datos, operación y gobierno— con sus conexiones reales, y la distinción entre flujo de petición y dependencia de plano de control, que es la que explica por qué unas caídas se notan al instante y otras no se notan en absoluto.
Has recorrido una reserva de extremo a extremo, de la búsqueda a la tarjeta de embarque, atravesando Front Door, el WAF, App Service, la API, Cosmos DB, SQL Database, Service Bus, la función y el almacenamiento, con la frontera clave bien señalada: la respuesta al pasajero termina antes de que empiece el trabajo asíncrono. Y sabes en qué módulo se construyó cada pieza, que es la forma de convertir ocho módulos sueltos en un sistema.
Tienes la tabla maestra de decisiones —cada elección con su alternativa descartada y su motivo—, los números de la plataforma —12.550 €/mes, 0,136 € por reserva, 99,9 %, RPO 15 min y RTO 4 h—, tres variantes de la misma arquitectura para contextos distintos con lo que se quita y lo que se añade en cada una, la retrospectiva honesta con su lección central —casi todos los errores fueron de orden, no de elección— y el Azure Architecture Center como punto de partida para no dibujar desde cero.
Con el plano delante, la pregunta natural es si está bien dibujado. La siguiente lección responde a eso con el marco que Microsoft usa exactamente para ello: el Azure Well-Architected Framework, sus cinco pilares —fiabilidad, seguridad, coste, excelencia operativa y rendimiento—, sus compromisos entre pilares, y una auditoría pilar por pilar de esta misma plataforma que dirá qué cumple, qué no cumple y qué se decidió conscientemente no hacer.
Curso de Azure
Módulo 1: Introducción a Azure
- ¿Qué es Azure?
- Modelos de servicio, regiones y zonas de disponibilidad
- Crear y configurar tu cuenta de Azure
- Recorrido por el portal de Azure
- Azure Resource Manager: suscripciones, grupos de recursos y etiquetas
- Azure CLI, PowerShell y Cloud Shell
Módulo 2: Servicios principales de Azure
- Máquinas virtuales de Azure
- Escalado y alta disponibilidad del cómputo
- Azure App Service
- Azure Storage: blobs, archivos, colas y tablas
- Redes en Azure: redes virtuales, subredes y NSG
- Conectividad híbrida y entrega global
Módulo 3: Bases de datos de Azure
- Elegir el servicio de datos adecuado
- Azure SQL Database
- Azure Cosmos DB
- Azure Database for MySQL
- Azure Database for PostgreSQL
- Analítica de datos: Data Lake, Data Factory y Synapse
Módulo 4: Seguridad en Azure
- Microsoft Entra ID y gestión de identidades
- RBAC e identidades administradas
- Azure Key Vault
- Protección DDoS y firewall de aplicaciones web
- Microsoft Defender for Cloud
- Gobernanza y cumplimiento con Azure Policy
Módulo 5: Azure DevOps
- Introducción a Azure DevOps
- Azure Repos
- Azure Pipelines: integración continua
- Despliegue continuo con entornos y aprobaciones
- Azure Artifacts
- Infraestructura como código con Bicep
Módulo 6: Servicios avanzados de Azure
- Contenedores en Azure: Container Registry y Container Apps
- Azure Kubernetes Service (AKS)
- Azure Functions
- Azure Logic Apps
- Mensajería y eventos: Service Bus, Event Grid y Event Hubs
- Servicios de IA de Azure
Módulo 7: Monitoreo y gestión
- Azure Monitor: métricas, alertas y paneles
- Log Analytics y consultas KQL
- Application Insights
- Azure Automation y runbooks
- Copias de seguridad y recuperación ante desastres
Módulo 8: Gestión y optimización de costos
- Calculadora de precios y estimación de costes
- Azure Cost Management: análisis, presupuestos y alertas
- Reservas, planes de ahorro y Azure Hybrid Benefit
- Azure Advisor
- Estrategias de optimización y cultura FinOps
