DHH推出不同于Kubernetes/Docker的部署产品


Ruby on Rails创始人DHH推出新的Kamal:可随时随地部署Web应用。
DHH:为了庆祝即将发布的v1.0版本,我们将MRSK重命名为Kamal,这是一种古老的阿拉伯导航工具(为了庆祝我们完全退出云计算,我们使用了几个元音)。

背景上下文
在过去的十多年里,商业产品呈爆炸式增长,使 Web 应用程序的部署变得更加容易。

首先Heroku 以令人难以置信的产品拉开了序幕,该产品似乎永远在竞争中保持领先地位;如今,我们有了 Fly.io 和 Render 等优秀的替代品;然后托管 Kubernetes 也让 AWS、GCP、Digital Ocean 和其他地方的事情变得更加容易。

但这些产品都可以让您以高价租用云中的计算机。如果您想在自己的硬件上运行,或者只是将来有一个明确的迁移路径,您需要仔细考虑如何锁定这些商业平台。最好是在账单吞没你的整个生意之前!

Kamal 试图将这些商业产品所开创的人体工程学先进技术应用到任何地方的网络应用部署中:
无论是云计算公司提供的低成本、无管理服务标记的云选项,还是您自己的主机托管裸机。对于Kamal 来说,这些都是一样的。你只需在配置文件中输入一个 IP 地址列表,其中包含除了添加 SSH 密钥之外没有任何预处理的 Ubuntu 服务器,几分钟内就能运行。

这种方法具有极大的可移植性。你可以像这样轻松地在多个云上部署网络应用。或者,你可以用自己的硬件购买基线,然后在大的季节性高峰前部署到云上,以获得更多的容量。从工具的角度来看,当你不被单一提供商锁定时,就会有很多令人信服的选择。

归根结底,Kamal 的目的是利用不与任何商业产品绑定的开源工具压缩生产的复杂性。如果基础 Linux 或 Docker 仍有困难,你最好还是选择完全托管的服务,但只要熟悉了这些概念,你就可以使用 Kamal 了。

为什么不直接运行 Capistrano、Kubernetes 或 Docker Swarm?
Kamal 基本上就是容器的 Capistrano,无需事先精心准备服务器。无需确保服务器上有正确版本的 Ruby 或其他所需的依赖项。现在,这一切都在 Docker 镜像中。你可以启动一个全新的 Ubuntu(或其他)服务器,将其添加到 Kamal 的服务器列表中,它就会自动配置 Docker 并立即运行。Docker 的层缓存也能加快部署速度,减少服务器上的杂乱无章。为 Kamal 构建的镜像可用于 CI 或后期反省。

Kubernetes 是一头猛兽。在自己的硬件上运行它并不适合胆小的人。如果你想在别人的平台上运行,无论是像Render那样透明地运行,还是明确地在AWS/GCP上运行,Kubernetes都是一个不错的选择,但如果你想在云和自己的硬件之间自由切换,甚至将两者混合使用,Kamal要简单得多。你可以看到正在发生的一切,调用的只是基本的 Docker 命令。

Docker Swarm 比 Kubernetes 要简单得多,但它仍然建立在使用状态调节的声明式模型之上。Kamal 是有意围绕命令式命令设计的,比如 Capistrano。

归根结底,有无数种方法可以部署网络应用,但这就是我们在 37signals 所使用的工具包,它将 HEY 和其他所有以前托管在云端的应用搬到了我们自己的硬件上,同时又不失现代容器化工具的优势。