← Alle Migrationsanleitungen

Migrationsleitfaden für Wettbewerber

Von Bun.serve zu Webship migrieren ohne einen blinden Cutover.

Trenne den Anwendungscode von Edge-Aufgaben: Behalte Bun als Ursprung, während Webship TLS, statische Bereitstellung, HTTP/3, Schutz und Anforderungsrouting übernimmt.

Gilt für Webship 1.1.0TypeScript

Definieren Sie die Migrationsgrenze, bevor Sie den Traffic ändern.

Beginnen Sie damit, nur das Verhalten zu verschieben, das Webship reproduzieren und validieren kann. Lassen Sie Anwendungs-Authentifizierung, Service Discovery, Skripte und spezialisierte Cache-Regeln auf der bestehenden Quelle, bis ihre Ersatzsysteme tests in produktionsähnlicher Umgebung bestehen.

Übersetzen Sie zuerst den kleinsten Produktionspfad.

Das Quellfragment identifiziert das Migrationskonzept; das Webship-Fragment zeigt die Zielstruktur. Ersetzen Sie Beispieldomänen, Adressen, Zertifikate, Limits und Pfade zur Gesundheit durch Werte, die für Ihre Umgebung validiert sind.

Repräsentative Bun.serve-Konfiguration
Bun.serve({
  port: 443,
  tls: { cert: Bun.file("cert.pem"), key: Bun.file("key.pem") },
  routes: {
    "/": new Response(Bun.file("./public/index.html")),
  },
});
Äquivalent zu Webship TOML
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

Konzepte abbilden, nicht Syntax.

Technische Richtlinien stimmen nicht immer eins zu eins überein. Verwenden Sie diese Tabelle, um den entsprechenden Webship Konfigurationsbereich zu finden und überprüfen Sie dann die wirksame Konfiguration und das Laufzeitverhalten.

Aktuelles Konzept oder RichtlinieWebship Konfigurationsziel
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

Verwenden Sie einen umkehrbaren Fünf-Schritte-Wechsel.

Halten Sie den alten Listener bereit, bis Webship die Prüfungen auf Korrektheit, Kapazität, Sicherheit, Beobachtbarkeit und Rückrollbarkeit mit repräsentativem Verkehr bestanden hat.

  1. 1

    Inventar beobachtbares Verhalten

    Protokollieren Sie Listener, Domains, Routen, Upstreams, Zertifikate, Umschreibungen, Authentifizierung, Cache-Regeln, Gesundheitsprüfungen, Limits und operative Integrationen.

  2. 2

    Übersetze eine Grenze

    Verschiebe einen Host oder Pfad in striktes TOML. Behalte vendorspezifische Module und Anwendungslogik hinter Webship, bis separate Ersatzlösungen bewiesen sind.

  3. 3

    Offline und lokal validieren

    Führe --check-config und --print-effective-config aus, inspiziere das zensierte Ergebnis, überprüfe die lokale Gesundheit und teste TLS über TCP und UDP, wenn HTTP/3 aktiviert ist.

  4. 4

    Canary-Echtverkehr

    Senden Sie einen kleinen, beobachtbaren Verkehrsausschnitt an Webship. Vergleichen Sie Statuscodes, Header, Inhalte, Latenz, Upstream-Gesundheit, Cache-Verhalten, Protokolle und Sicherheitsentscheidungen.

  5. 5

    Fördern mit Rückrollbereitstellung

    Erhöhe den Verkehr in gemessenen Phasen. Halte das vorherige Ziel gesund und sofort routbar, bis das vereinbarte Beobachtungsfenster und die Lastgrenzen überschritten sind.

Zuerst validieren. Rollen Sie zurück durch Routing, nicht durch Bearbeitung live.

Überprüfen Sie die Kandidatendatei, inspizieren Sie die geschwärzte effektive Konfiguration und prüfen Sie den privaten Listener, bevor Sie den Datenverkehr ändern. Bewahren Sie das alte Binary, die Konfiguration, den Listener und das DNS- oder Load-Balancer-Ziel auf, bis das Beobachtungsfenster geschlossen ist.

/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