← Todos los guías de migración

Guía de migración de competidor

Migrar de Bun.serve a Webship sin un corte ciego.

Separa el código de la aplicación de las funciones de edge: conserva Bun como el origen mientras Webship se encarga de TLS, entrega estática, HTTP/3, protección y enrutamiento de solicitudes.

Se aplica a Webship 1.1.0TypeScript

Define el límite de migración antes de cambiar el tráfico.

Comienza trasladando solo el comportamiento que Webship puede reproducir y validar. Deja la autenticación de aplicaciones, el descubrimiento de servicios, los scripts y las reglas de caché especializadas en el origen existente hasta que sus reemplazos pasen pruebas similares a producción.

Traduzca primero la ruta de producción más pequeña.

El fragmento de origen identifica el concepto de migración; el fragmento Webship muestra la forma de destino. Reemplace los dominios de ejemplo, direcciones, certificados, límites y rutas de salud con valores validados para su entorno.

Configuración representativa de Bun.serve
Bun.serve({
  port: 443,
  tls: { cert: Bun.file("cert.pem"), key: Bun.file("key.pem") },
  routes: {
    "/": new Response(Bun.file("./public/index.html")),
  },
});
Webship TOML equivalente
listen = "0.0.0.0:443"
workers = 4

[[sites]]
domain = "app.example.com"
root = "/srv/app/public"
listen = "0.0.0.0:443"
cert = "/etc/letsencrypt/live/app.example.com/fullchain.pem"
key = "/etc/letsencrypt/live/app.example.com/privkey.pem"

[sites.protocols]
h1 = true
h2 = true
h3 = true

Mapear conceptos, no sintaxis.

Las directivas técnicas no siempre coinciden uno a uno. Usa esta tabla para localizar el área de configuración equivalente de Webship, luego valida la configuración efectiva y el comportamiento en tiempo de ejecución.

Concepto o directiva actualObjetivo de configuración de Webship
listener / virtual hostlisten + [reverse_proxy.protocols]
document root[[sites]].root
host matcher[[reverse_proxy.routes]]
certificate and private key[reverse_proxy.tls] / [[sites]] cert + key

Use un corte reversible de cinco pasos.

Mantenga el antiguo listener listo hasta que Webship haya pasado los controles de corrección, capacidad, seguridad, observabilidad y reversión con tráfico representativo.

  1. 1

    Comportamiento observable del inventario

    Registre listeners, dominios, rutas, upstreams, certificados, reescrituras, autenticación, reglas de caché, sondeos de salud, límites e integraciones operativas.

  2. 2

    Traducir un límite

    Mover un host o ruta a TOML estrictamente. Conservar los módulos específicos del proveedor y la lógica de la aplicación detrás de Webship hasta que se prueben reemplazos separados.

  3. 3

    Validar sin conexión y localmente

    Ejecutar --check-config y --print-effective-config, inspeccionar el resultado redactado, comprobar la salud localmente y usar TLS sobre TCP y UDP cuando HTTP/3 esté habilitado.

  4. 4

    Tráfico real canario

    Envíe un pequeño fragmento de tráfico observable a Webship. Compare códigos de estado, encabezados, cuerpos, latencia, salud de upstream, comportamiento de la caché, registros y decisiones de seguridad.

  5. 5

    Promocionar con reversión lista

    Aumentar el tráfico en las etapas medidas. Mantener el objetivo previo saludable y con enrutamiento inmediato hasta que la ventana de observación acordada y las puertas de carga pasen.

Valide primero. Haga la reversión mediante el enrutamiento, no editando en vivo.

Valide el archivo del candidato, inspeccione la configuración efectiva redactada y examine el escuchador privado antes de cambiar el tráfico. Conserve el binario antiguo, la configuración, el escuchador y el objetivo DNS o del equilibrador de carga hasta que se cierre la ventana de observación.

/usr/local/bin/webship --check-config --config /etc/webship/production.toml
/usr/local/bin/webship --print-effective-config --config /etc/webship/production.toml
curl --http3-only --insecure https://127.0.0.1:443/health