競爭對手遷移指南
從 Bun.serve 遷移到 Webship,且不進行盲目切換。
將應用程式代碼與邊緣職責分開:保留 Bun 作為源端,同時由 Webship 接管 TLS、靜態交付、HTTP/3、防護及請求路由。
在改變流量之前定義遷移邊界。
首先僅移動 Webship 可以重現和驗證的行為。在其替代品通過類生產測試之前,將應用程序身份驗證、服務發現、腳本和專用緩存規則保留在現有源上。
首先翻譯最小的生產路徑。
來源片段標識了遷移概念;Webship 片段顯示了目標形態。用已在您的環境中驗證的值替換範例網域、地址、憑證、限制和健康檢查路徑。
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 = true對應概念,而非語法。
技術指令不總是逐一對應。使用此表格找到對應的 Webship 配置區域,然後驗證有效配置和運行時行為。
| 當前概念或指令 | 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 |
使用可逆的五步切換。
在 Webship 通過代表性流量的正確性、容量、安全性、可觀察性和回滾門檻之前,保持舊的監聽器準備就緒。
- 1
可觀察的庫存行為
記錄監聽器、域、路由、上游、證書、重寫、身份驗證、快取規則、健康檢查、限制及操作整合。
- 2
翻譯一個邊界
將一個主機或路由移入嚴格的 TOML。在單獨的替代方案被證實之前,保留 Webship 後的供應商專用模組和應用邏輯。
- 3
離線並本地驗證
運行 --check-config 和 --print-effective-config,檢查刪節後的結果,本地探測健康狀況,並在啟用 HTTP/3 時對 TCP 和 UDP 進行 TLS 操作。
- 4
金絲雀真實流量
向 Webship 發送少量可觀察的流量。比較狀態碼、標頭、主體、延遲、上游健康狀況、快取行為、日誌和安全決策。
- 5
推廣並準備回滾
在測量階段增加流量。保持先前目標的健康狀態並可立即路由,直到達到約定的觀察窗口和負載閘門。
首先進行驗證。回滾請透過路由,而非編輯即時內容。
驗證候選文件,檢查已編輯的有效配置,並在更改流量前探測私有監聽器。在觀察窗口結束前,保留舊的二進位檔、配置、監聽器,以及 DNS 或負載平衡器目標。
/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