Ir al contenido
Todos los proyectos

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
  1. Paquete de build a Servidor en la nube: brotli precomprimido
  2. Ajustes en la nube a Servidor en la nube: token al reinicio sin deploymodificado
  3. Cliente web a Servidor en la nube: solicitudes en paralelo
  4. Servidor en la nube a Cliente web: brotli, o 304 con 0 bytesmodificado
  5. 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.
    Antes
    Despué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.
    Antes
    Despué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.
    Antes
    Despué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
Portada de Despliegue en la nube de un gemelo digital 3D y su demo para clientesPortada de Despliegue en la nube de un gemelo digital 3D y su demo para clientes