Caso de estudio 08 / 17Azure Nube
Despliegue en la nube de un gemelo digital 3D y su demo para clientes
Llevé un gemelo 3D a su propio servidor en la nube, con ajustes gestionados y caché, y dejé su demo para clientes al día con el producto.
Stack
- Azure App Service
- Azure CLI
- Node.js
- CesiumJS
- WebGL
- Web Workers
- Brotli
- Next.js
01 · Cómo funciona
- Flujo de datos
Qué hace
Trasladé un gemelo 3D en el navegador de un sistema de tuberías y un canal desde una máquina de desarrollo a su propio servidor en la nube, con sus ajustes y el token de imágenes gestionados fuera del código. En el mismo trabajo llevé la demo del producto en la nube, la versión que evalúan los clientes externos, de 229 commits de atraso a la paridad.
Leer más
Hoy cada ruta de la API del producto se responde o se excluye por una razón explícita, y un control diario detecta cualquier deriva nueva.
5 conexiones· elige un componente para ver su recorrido
- Paquete de build a Servidor en la nube: brotli precomprimido
- Ajustes en la nube a Servidor en la nube: token al reinicio sin deploymodificado
- Cliente web a Servidor en la nube: solicitudes en paralelo
- Servidor en la nube a Cliente web: brotli, o 304 con 0 bytesmodificado
- Cliente web a Servicio de terreno: pide terreno con el token
02Resultados
- R01Cuanto más bajo, mejor
Vistas de la demo con fallas en un recorrido (de 38)
Antes 14, después 0, a cero. Cuanto más bajo, mejor.AntesDespués - R02Cuanto más bajo, mejor
Datos que descarga una visita repetida
Antes 9.4 MB, después 0.01 MB, 940× menor. Cuanto más bajo, mejor.AntesDespués - R03Cuanto más bajo, mejor
Primera visita, de carga de página a escenario listo
Antes 5.1 s, después 4 s, −22%. Cuanto más bajo, mejor.AntesDespués
Qué logró
- Demo para clientes: 14 de 38 vistas con fallas → 0, a la par del producto
- Cobertura de la API: 55 rutas sin respuesta → cada ruta respondida o excluida por una razón explícita
- Token de imágenes: fijo en el código → un ajuste de la aplicación en la nube, rotable sin redesplegar
Leer más
- Deriva: detectada a mano → señalada el mismo día, y un ancla de parche perdida detiene la copia
- Visita repetida: 9.4 MB descargados de nuevo → 0.01 MB o menos, servidos desde caché
El desafío
El gemelo corría en una máquina de desarrollo con un token de imágenes fijo en el código, así que rotarlo exigía cambiar código. En la nube era lento por razones que el servidor no explicaba: la máquina estaba ociosa cerca del 5 % de CPU mientras el navegador encadenaba peticiones, esperaba el terreno y recalculaba la física en cada visita, sin nada en caché.
Leer más
La demo para clientes se había alejado mucho más: 229 commits de atraso, 55 rutas de la API del producto sin respuesta y 14 de 38 vistas que fallaban un recorrido de prueba. Lo que evaluaban los clientes externos ya no coincidía con lo que hace el producto.
Qué aprendí
Medir antes de comprar hardware: un plan más grande habría duplicado el costo de un servidor ocioso al 5 % de CPU, cuando las demoras estaban en el navegador. Planeé precalcular los escenarios por defecto y luego medí la física en 72 ms; la espera real era el arranque del worker, así que el primer escenario ahora corre en el hilo de la página, sin nada guardado que pueda quedar obsoleto.
Leer más
Descarté un proxy para ocultar el token, ya que el navegador lo recibe de todos modos. La demo ejecuta los propios motores del producto sobre escenarios grabados: comportamiento actual, nada montado.
Stack
- Azure App Service
- Azure CLI
- Node.js
- CesiumJS
- WebGL
- Web Workers
- Brotli
- Next.js
Habilidades
- Despliegue en la nube
- Rendimiento web
- Caché HTTP
- Gestión de secretos
- Detección de deriva

