AzureGoliat - NexusPLATAFORMA MODULAR PARA AZURE
GitHub

GOLIAT NEXUS / AZURE APPLICATION PLATFORM

Tu aplicación.
Su base en Azure.

Una plataforma modular que conecta red, aplicaciones y datos. Comparte los servicios del hub y despliega Dev y Prod con sus propias aplicaciones, identidades y datos.

Hub compartidoDatos privadosTerraform

Incluye Alba: una aplicación de solicitudes con frontend Next.js, APIs Node.js y procesamiento de eventos. Una referencia que puedes adaptar a tu proyecto.

ARQUITECTURA INTERACTIVA

Explora la solución

NEXUS · v1.0.0

Elige una vista y sigue cómo se conectan las piezas.

UsuariosEntra ID
Hub compartido

WAF · Firewall · ACR · DNS · Logs · tfstate

×1
DEVDatos propios
Next.js + Node.jsPortales y APIs
Queue → FunctionProcesamiento asíncrono
Cosmos + Key VaultAcceso privado
PRODDatos propios
Next.js + Node.jsPortales y APIs
Queue → FunctionProcesamiento asíncrono
Cosmos + Key VaultAcceso privado
01 / COMPARTIR LA BASE

Se crea una vez. Se usa en los dos entornos.

El hub concentra los servicios comunes. Dev y Prod tienen aplicaciones, datos e identidades propios.

HubDev + Prod
1hub compartido
2entornos propios
5estados Terraform con edge
21capacidades documentadas

Infraestructura y aplicación.
En el mismo proyecto.

AzureTerraformNext.jsNode.jsCosmos DBFunctions

01 / ARQUITECTURA COMPARTIDA

Una plataforma común.
Dos espacios para construir.

El hub reúne los servicios que Dev y Prod necesitan en común. Cada entorno conserva sus aplicaciones y sus datos. Así evitas duplicar infraestructura fija y puedes configurar la capacidad por separado.

SE CREA UNA VEZ

Hub & shared services

WAF para publicar webs y APIs, Firewall para controlar salidas, ACR para las imágenes y servicios de DNS, logs y estado Terraform.

EN CADA ENTORNO

Dev & Prod

Portales, APIs, Functions, Cosmos y secretos propios. Dos spokes sin peering directo, con acceso privado y permisos por identidad.

COSTE CON CONTEXTO

Menos duplicación.

Los servicios compartidos siguen generando coste aunque Dev escale a cero. El presupuesto envía avisos; la capacidad y la retención se ajustan en los tfvars.

Abrir diagrama (se abre en una pestaña nueva)

El hub central comparte WAF, Firewall, imágenes, DNS y observabilidad. Dev y Prod conservan sus portales, APIs, Functions y datos propios. Selecciona un componente para explorar sus conexiones.

Abre la vista completa para ampliar, desplazarte y consultar cada componente.

CUATRO WEBS ESTÁTICAS

Dos portales de ejemplo por entorno.

dev · tenantdev · adminprod · tenantprod · admin

La referencia crea tenant y admin como Azure Static Web Apps independientes en Dev y Prod. Son interfaces de ejemplo para sustituir o adaptar a tu proyecto. Plan Standard, West Europe. Sus orígenes HTTPS solo aceptan la IP del WAF; el mapa de portales permite añadir más.

CÓMPUTO PRIVADO OPCIONAL

Tu agente de GitHub Actions.

VM UbuntuNICOS diskManaged Identity

Una VM en el hub, con NIC, disco del sistema e identidad propia. Sin IP pública ni conexión entrante desde GitHub. Configura su repositorio y concede solo los permisos que necesiten tus workflows.

Comparar la capacidad de Dev y Prod Réplicas · Cosmos · Zonas
LA MISMA BASE. DISTINTA CAPACIDAD.

Dev para iterar.
Prod con capacidad base.

Valores de referencia configurables, no un dimensionamiento validado por carga. Ambos mantienen sus datos e identidades propios.

Configuración de referencia de Dev y Prod
ConfiguraciónDevProd
Réplicas por API0–32–5
Cosmos DBServerless400 RU/s
Retención de backup Cosmos8 h24 h
Zonas Container AppsNoSí
Consulta los recursos y sus regiones ↗

02 / EXPLORA EL PRODUCTO

Las piezas que necesita
tu aplicación.

Explora los componentes de la plataforma. Consulta su función, sus opciones y los módulos que los crean antes de activar lo que necesitas.

Ver los módulos Terraform ↗

Las opciones se definen en los tfvars de cada entorno.

Los secretos tienen su sitio: Key Vault.

Las APIs y Functions acceden a los secretos con su identidad y permisos específicos. El frontend no recibe conexiones a Cosmos. La sincronización se hace fuera de los tfvars; el estado Terraform también necesita protección.

Ver funcionamiento ↗

03 / UNA APLICACIÓN PARA ENTENDERLO

De una solicitud
a una actividad.

Alba conecta dos portales, APIs privadas y una Function. Elige un caso y observa cómo se guarda la solicitud, se publica el evento y aparece la actividad.

Simulación local · No despliega ni conecta con Azure
01Frontend · Next.js

Next.js estático detrás del WAF compartido. Inicia sesión con Entra y PKCE y consulta las APIs por HTTPS, sin VPN. No recibe secretos de Cosmos.

02Backend · Node.js

El WAF dirige la petición al gateway Nginx privado y este a las APIs Node.js. Cada API verifica el token, el rol y el propietario antes de usar Cosmos y publicar el evento.

03Azure Functions · Node.js

Escucha Storage Queue y registra una actividad por solicitud, aunque reciba el evento varias veces. Un timer recupera los envíos pendientes del outbox.

PORTAL DE SOLICITUDES

Del formulario a la actividad.

DEMO
Acceso al espacio de documentación

Preparada para enviar

  1. 01Frontend
  2. 02Backend
  3. 03Cosmos DB
  4. 04Queue
  5. 05Function
  6. 06Actividad
ANTES DE EMPEZAR

Una petición, un identificador.

La misma solicitud conservará su UUID en el documento, el evento y la actividad.

POST /api/tenant/requests
TRAZA DE LA SOLICITUD11111111…
SolicitudPor enviar
EventoPendiente
ActividadSin registrar

Un mismo identificador une el documento, el evento y la actividad.

0solicitudes guardadas
0entregas del evento
0actividades registradas
Ver los datos de este paso

Después, compruébalo en tu Azure.

Despliega Dev y Prod y publica la entrada edge. Después crea una solicitud con un usuario Entra asignado y comprueba su actividad. La guía de validación distingue las pruebas de API del recorrido completo del navegador.

./lz verify-application --config .local/environments --environment dev
Leer el ejemplo completo →

Navegador → WAF compartido → web o gateway privado → API. Cosmos, colas y Functions solo se comunican por la red privada; esos eventos internos no pasan por el WAF. El hub comparte también Firewall, ACR, DNS y logs.

SEGURIDAD EN CADA SALTO

Red privada.
Identidad en cada acceso.

Controles Zero Trust de red, identidad y acceso a datos. Estar conectado al hub no concede permiso sobre una API ni sobre otro entorno.

Leer el modelo de seguridad ↗
  1. 01

    Entrada WAF, orígenes cerrados

    El WAF inspecciona la entrada pública. Static Web Apps solo acepta su IP; el gateway interno solo acepta su subred. APIs y datos permanecen privados.

  2. 02

    Token y rol verificados

    Entra con PKCE; la API verifica audiencia, scope, rol, tenant y propietario.

  3. 03

    Acceso al secreto necesario

    Identidades administradas y permisos por secreto. Ninguna conexión Cosmos llega al frontend.

  4. 04

    Tu política corporativa

    Completa MFA, Conditional Access y PIM con tu organización. El producto no modifica esas políticas globales.

04 / DEL EJEMPLO A TU AZURE

Tres archivos.
Tu propia configuración.

Define la plataforma compartida en common.tfvars y la capacidad de cada entorno en dev.tfvars y prod.tfvars. Los ejemplos están comentados para que puedas leerlos, adaptarlos y desplegar.

  1. 01 / FOUNDATIONPrepara el estado

    Backend y bootstrap. Cierra el acceso desde un ejecutor privado.

  2. 02 / PLATFORMConstruye la base

    Hub común, datos, identidades y servicios por entorno.

  3. 03 / DEVDespliega y verifica

    Publica imágenes, Functions y portales; comprueba el flujo.

  4. 04 / PRODAplica tu capacidad

    Mismo código, configuración y datos separados para Prod.

  5. 05 / EDGEPublica con WAF

    Dominio Azure y certificado renovable; dominios propios opcionales.

Ver tfvars en GitHub ↗

DEV · Producto

environments/dev.tfvars

Cosmos DB
—
Backup periódico
—
Réplicas por API
—
Zonas Container Apps
—

Terraform ≥1.9, Python, Azure CLI y sesión en tu suscripción. Para las aplicaciones: ejecutor privado, Node.js ≥24, npm, Docker/Buildx Linux y SWA CLI 2.1.0. Ejecutor existente o VM privada opcional; el repositorio del agente lo configura el usuario.

DEPLOYMENT WORKFLOW
Así se explican las opciones dentro de los tfvars
Leer la guía completa de variables →

05 / RECURSOS Y DOCUMENTACIÓN

Del mapa al código.

Consulta los módulos, revisa los recursos de referencia y sigue las guías de operación. El inventario se obtiene de planes con proveedor simulado; no es una factura ni una consulta a Azure.

—objetos en la configuración de referencia completa
Ver recursos por tipo y capa
CapaRecurso TerraformCantidad

PARA SEGUIR CON CRITERIO

Del primer despliegue a la operación.

El siguiente paso es tu proyecto.

Antes de producción: probar dos usuarios Requester, aplicar MFA/Conditional Access, ensayar restauración, rotación y poison queue, y medir carga y costes. Container Apps de Prod es zonal; Cosmos sigue en una región.

CÓDIGO PARA HACERLO TUYO

Una base para empezar.
Código para continuar.

Infraestructura, aplicación de ejemplo y documentación en un mismo repositorio. Cambia Alba por tu producto y conserva las piezas que te resulten útiles.

Ver repositorio en GitHub
danieljsaldana / goliat-nexusAzure application platform
modules/ Infraestructura modularapps/ Next.js · Node.js · Functionsenvironments/ common · dev · proddocs/ Arquitectura y operación