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.
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.
Bun.serve({
port: 443,
tls: { cert: Bun.file("cert.pem"), key: Bun.file("key.pem") },
routes: {
"/": new Response(Bun.file("./public/index.html")),
},
});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 = truePeta 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 ini | Target konfigurasi Webship |
|---|---|
listener / virtual host | listen + [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
Perilaku observasi inventaris
Catat listener, domain, rute, upstream, sertifikat, rewrite, autentikasi, aturan cache, probe kesehatan, batasan, dan integrasi operasional.
- 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
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
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
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