願景
在過去的 10 多年中,使得部署 Web 應用程式變得更為容易的商務產品出現了爆炸性的成長。Heroku 以令人難以置信的產品打響了第一砲,而且在看似永遠的時間裡都領先於競爭對手。如今,我們有出色的替代方案,例如 Fly.io 和 Render。而且託管式 Kubernetes 也使 AWS、GCP、Digital Ocean 及其他服務的事務也變得更輕鬆。但這些都是提供你在雲端以高價租用電腦的產品。如果你想在自己電腦上執行,甚至只需要一條明確的移轉路徑以便在未來執行,你必須仔細考慮將自己鎖定在這些商業平台上的方式。最好在帳單吞噬你的整個事業之前!
快馬(Kamal)旨在將這些商業產品率先開發出的符合人體工學的優點帶到任何地方的 Web 應用程式部署。無論是採用 Digital Ocean、Hetzner、OVH 等提供的低成本雲端方案,還是你自己的並置裸機,對快馬(Kamal)來說都一樣。將包含未經預先準備的香草 Ubuntu 伺服器的 IP 位址清單提供給組態檔案,只需新增 SSH 金鑰,你就可以在幾分鐘之內執行。
這種方法為你提供了極高的可攜性。你可以像這樣輕鬆地將你的 Web 應用程式部署在多個雲端上。或者,你可以使用自己的硬體購買基準線,然後在季節性高峰前部署到雲端以獲得更多容量。當你在工具的角度上不受限於單一供應商時,就有許多令人信服的選擇可供使用。
最終,快馬(Kamal)旨在透過未連結到任何商業產品的開源工具,來壓縮進入製作環境所產生的複雜性。請注意,並非歸零。如果你仍不熟悉基本的 Linux 或 Docker,你可能仍需要更完善的管理服務,但只要你熟悉這些概念,你就可以使用快馬(Kamal)展開計畫。
為什麼不直接執行 Capistrano、Kubernetes 或 Docker Swarm?
Kamal基本上是容器式 Capistrano,不需要事先細心準備伺服器。無需確保伺服器配備您所需的 Ruby 正確版本或其他相依性。這些現在都由 Docker 映像提供。您可以啟動全新的 Ubuntu(或任何)伺服器,將其加入 Kamal 的伺服器清單,它會自動配置 Docker 並立即執行。Docker 的圖層快取機制也能加快部署速度,並減少伺服器上的調整作業。此外,為 Kamal 建置的映像可用於持續整合或後續的內省作業。
Kubernetes 是一個龐然大物。在自有的硬體上自行執行它並非膽小之輩所能勝任。如果您想在別人的平台上執行,不論是以透明的方式如 Render,或明確地在 AWS/GCP 上執行,那麼這是一個不錯的選擇,但如果您想自由地在雲端和自有硬體之間移動,甚至兩者並用,那麼 Kamal 會更為簡單。您可以看到當中所有的運作,其實只是呼叫基本的 Docker 指令。
Docker Swarm 比 Kubernetes 簡單許多,但仍建立在使用狀態調整的同一個宣告模型上。Kamal 是有意設計成圍繞如 Capistrano 般的命令式指令進行的。
說到底,部署網路應用程式的途徑有很多,但這是我們在37signals使用的工具組,用來將HEY和我們所有其他以前雲端託管的應用程式遷移到自有的硬體,但同時又不失去現代容器化工具的優勢。
名稱
Kamal 以古代阿拉伯航海工具命名,該工具由水手透過北極星來確定緯度,以保持航向。(Kamal 以前稱為 MRSK。)
