[译] Ruby 在 Basecamp 运营中的开销

2019-12-19

翻译自 DHH 的文章 《Only 15% of the Basecamp operations budget is spent on Ruby》。主要表达,相比于开发效率和程序员的开发体验,语言和Web框架性能几乎不值一提。很有意思,试着翻译一下。 由于我本人水平有限,本文不免存在遗漏或错误之处。如有疑问,请查阅原文。原文链接

以下为译文:

我们每年花费3百万刀来运营所有版本的 Basecamp 和 一些老应用。这3百万包括本地数据中心(on-premise data centers)和云服务。不包含我们超强的7人运维团队,只是网络(connectivity)、机器、电费 等等。

这包含很多支出项目。最大的一项是存储 (价值连城的) 4.5PB 文件每年所需的百万美元。过去我们自己存储,为了冗余和可用性,放在三个物理数据中心(physical data centers),但是操作麻烦。现在我们放在Amazon S3 上,并且也是用了多区域冗余。

除此之外还有不少支出。我们花了不少钱在数据库上,都是运行的MySQL;使用 ElasticSearch 提供搜索;使用 Redis 集群提供缓存;使用 Kafka 和 Big Query 进行数据分析;在数据中心和云服务器之间我们有自己的直连网络。

上面我说到的所有东西都是我们的基础服务,和语言或者Web框架无关。不管我们是用 PHP、Python、Rust 、Go、C++ 还是别的,都需要数据库、搜索、文件存储。

现在来说说语言和框架的开销,大约是15%。这15%包含了我们所有的应用和任务开销(app and job server),这些机器都运行这 Ruby on Rails 。所以来算下,3百万的15%,大约是45万刀。

想想一下,有个牛逼的技术,能做我们用 Rails 做的所有工作,并且速度是 Rails 的两倍,那我们每年可节省约 22.5万 。省下的这点钱还比不上我们每年圣诞节给员工的礼物开销。而且要找到两倍快的技术,省一半的机器可不容易,各种性能测试数据会迷惑你。

就算我们找到了真的银弹,能节省一个数量级的服务器资源,开销每年省40万,我们的应用和任务(app and job server)每年只需付超低价 4.5 万。省下来的 40万 还不够我们两个程序员的平均工资。

我们考虑下 Rails 花出去的45万能省下来什么。我们超强的15人的开发团队一年的开销就比所有运维开销(300万)还要多。如果团队效率下降15%,多花的钱就比运行整个 Rails 花的多了(意为:如果不用Rails,带来的效率损失更大)。

是的,使用 Rails 是奢侈的。不是每个公司都像 Basecamp 一样付员工这么多钱,所以别的公司的的费用可能不一样。也许有的公司他们的应用是计算密集型的。但对于大多数SaaS公司,都和我们一样,在运行语言和Web框架上的开销只占全部开销中的一小部分。

对于像 Basecamp 这样的公司,在编程语言和web框架上,你最好果断选择让程序员最富有激情、最快乐、效率最高的技术。无论花费多少,都值得。就算单纯从 开销/收益 上来看,都是值得的。更重要的是,给人带来更多的幸福和潜力。

这是为什么我们使用 Ruby 、Rails。这是一个取舍(It's a complete bargain)。