翻译自 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)。