Targets de backend

Prepara un target de backend, lee su cierre de artefactos y su resolución congelada, y ejecútalo en un entorno propio. El CDN nunca lo ejecuta.

  • Disponibilidad: Planificado
  • Evidencia: Leído del código fuente
  • Guía práctica

Estado inicial

Tu aplicación tiene código de servidor escrito como módulos públicos. Quieres que el CDN lo compile y lo entregue junto con el frontend, como parte del mismo release inmutable.

Define el target

JSON
{ "kind": "backend", "package": "@example/api", "selection": "1.0.0", "entry": ".", "runtime": "node>=22" }

Envíalo con targets.define, por ejemplo a /v1/applications/{application}/targets/api. runtime es un requisito que tú declaras a quien ejecute el target. El CDN lo guarda y lo informa; no lo comprueba ni proporciona el runtime.

Los módulos de backend no necesitan Widgets. Son módulos públicos compilados para un target de servidor, así que sus solicitudes de entrega usan target=node:

Text
/m/@example/[email protected]/modules/~root?target=node&format=esm

Prepara y luego lee el cierre

Registra y prepara como con cualquier target. Cuando el release esté listo, lee el cierre del target de backend:

Operación Solicitud Capacidad
releases.closure GET /v1/applications/{application}/releases/{release}/targets/{target}/closure application.read
Miembro Significado
entry El specifier público que se importa primero, y su url relativa al origen
runtime El requisito que declaraste en el target
conditions, format Para qué se generaron las salidas. format es esm.
resolution El documento beyond-resolution/1 congelado del target
artifacts Cada artefacto del cierre: url relativa al origen, kind (module, style, map, asset), digest, bytes y media
ready Si todos los artefactos son durables y se pueden obtener

El cierre de un release que no está en un estado que lo tenga responde 409 STATE_INVALID.

ready informa solo sobre artefactos. Indica que los bytes existen y se pueden obtener. No dice nada sobre un proceso, un puerto o una comprobación de salud, porque el CDN no inicia ninguno.

Ejecútalo tú

Tu entorno hace tres cosas, en este orden:

  1. Obtiene el cierre y verifica cada artefacto contra su digest.
  2. Resuelve los imports con la resolution congelada, anteponiendo el origen del CDN a cada URL relativa al origen.
  3. Importa la entry.

Cómo cargas módulos ES desde URL depende de tu runtime y queda fuera de este contrato. Fija el release: el cierre de un release nunca cambia, así que un host que cargó el release 12 sigue ejecutando el release 12 hasta que despliegues otro.

Límites

  • Revertir el frontend no revierte tu host. Coordina ambos tú, y recuerda que revertir código no puede deshacer cambios en una base de datos.
  • Los secretos nunca van en un target, en un módulo ni en una URL. Proporciónalos en tu propio entorno.
  • Una aplicación privada restringe quién puede obtener sus artefactos. Dale a tu host su propio acceso; consulta Acceso privado.