← Semua panduan migrasi

Panduan migrasi pesaing

Migrasikan dari Bun.serve ke Webship tanpa cutover buta.

Pisahkan kode aplikasi dari tugas edge: pertahankan Bun sebagai asalnya sementara Webship mengambil alih TLS, pengiriman statis, HTTP/3, perlindungan, dan pengaturan rute permintaan.

Berlaku untuk Webship 1.1.0TypeScript

Tentukan batas migrasi sebelum mengubah lalu lintas.

Mulailah dengan memindahkan hanya perilaku yang dapat direproduksi dan divalidasi Webship. Biarkan autentikasi aplikasi, penemuan layanan, skrip, dan aturan cache khusus tetap di asal yang ada sampai penggantiannya lulus pengujian mirip produksi.

Terjemahkan jalur produksi terkecil terlebih dahulu.

Fragmen sumber mengidentifikasi konsep migrasi; fragmen Webship menunjukkan bentuk target. Ganti domain contoh, alamat, sertifikat, batas, dan path kesehatan dengan nilai yang telah divalidasi untuk lingkungan Anda.

Konfigurasi perwakilan 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 yang setara
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

Peta konsep, bukan sintaks.

Petunjuk teknis tidak selalu cocok satu per satu. Gunakan tabel ini untuk menemukan area konfigurasi Webship yang setara, lalu validasi konfigurasi efektif dan perilaku runtime.

Konsep atau arahan saat iniTarget konfigurasi 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

Gunakan cutover lima langkah yang dapat dibalik.

Pertahankan pendengar lama siap sampai Webship telah melewati gerbang korektansi, kapasitas, keamanan, observabilitas, dan pemulihan pada lalu lintas representatif.

  1. 1

    Perilaku observasi inventaris

    Catat listener, domain, rute, upstream, sertifikat, rewrite, autentikasi, aturan cache, probe kesehatan, batasan, dan integrasi operasional.

  2. 2

    Terjemahkan satu batas

    Pindahkan satu host atau rute ke TOML yang ketat. Pertahankan modul spesifik vendor dan logika aplikasi di belakang Webship hingga pengganti terpisah terbukti.

  3. 3

    Validasi secara offline dan lokal

    Jalankan --check-config dan --print-effective-config, periksa hasil yang disunting, periksa kesehatan secara lokal, dan jalankan TLS melalui TCP dan UDP ketika HTTP/3 diaktifkan.

  4. 4

    Lalu lintas nyata canary

    Kirim irisan lalu lintas kecil yang dapat diamati ke Webship. Bandingkan kode status, header, isi, latensi, kesehatan upstream, perilaku cache, log, dan keputusan keamanan.

  5. 5

    Promosikan dengan rollback siap

    Tingkatkan lalu lintas pada tahap yang diukur. Pertahankan target sebelumnya dalam kondisi sehat dan segera dapat dirutekan hingga jendela observasi yang disepakati dan pintu beban terpenuhi.

Validasi terlebih dahulu. Kembalikan dengan routing, bukan dengan mengedit langsung.

Validasi file kandidat, periksa konfigurasi efektif yang disunting, dan uji pendengar pribadi sebelum mengubah lalu lintas. Pertahankan file biner lama, konfigurasi, pendengar, serta target DNS atau load-balancer sampai jendela observasi ditutup.

/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