架构师 2023年02月刊 本期主编蔡芳芳 流程编辑丁晓昀发行人霍泰稳 反馈feedback@geekbang.com 商务合作hezuo@geekbang.org 内容合作editors@geekbang.com 热点|Hot CONTENTS/目录 每个月在云上“狂烧”180万,RubyOnRails之父:我们要直接买硬件!用自研Pingora替代Nginx后,Cloudflare成为了最受欢迎Web服务器 44.7GB!遭前雇员“叛变”,俄版百度Yandex几乎所有源代码泄露 访谈文章|Interview 为降低“遗留技术成本”,CapitalOne裁掉了整个敏捷部门,可能涉及1100人GraalVMJava编译器将于2023年加入,与OpenJDK的发布节奏和流程保持一致React18:新玩具、新陷阱以及新可能性 指导了上百万程序员,《代码大全》之父和你聊聊软件开发素养|独家探访“编程圣经”背后故事 案例研究|CaseStudy DevOps缺少定义,平台工程需要指导性路线图 我用Rust改写了自己的C++项目:这两个语言都很折磨人!从ClickHouse到StarRocks,易点天下数仓平台建设 推荐文章|Article 漫谈钉钉单元化 一个科技新时代开启,硅谷五巨头将何去何从 为什么谷歌和苹果都要杀死移动Web?资深工程师揭秘大厂从吹捧到扼杀“内幕” CloudIDE是不是一个伪命题 特别专题|ChatGPT内幕故事 2023中国技术成熟度评估曲线发布,六大发展趋势将影响软件研发行业 全球爆红的ChatGPT是如何诞生的?(上)全球爆红的ChatGPT是如何诞生的?(中)全球爆红的ChatGPT是如何诞生的?(下) 卷首语 作者:蔡芳芳 最近在朋友圈和技术新闻里频频看到ChatGPT的身影,自11月30日发布之后,关于它的报道几乎从未断过。如今的ChatGPT和AIGC,有点像一年前的Web3,科技圈无人不知无人不晓。从绘画、写作到编程,延展至职业咨询、情感咨询,ChatGPT在应对超百万使用者的花式提问中展现出了相当令人惊艳的强大能力。 比如InfoQ最新这篇报道,在近期一项研究中,ChatGPT尝试查找示例代码中的bug并给出修复建议,整体表现优于现有同类程序,成功修复了40个bug中的31个。 面对编程能力越来越强大的AI,不少人再次忧心忡忡:“AI会取代程序员吗?”更有相当激进的声音认为,在人工智能驱动的未来,“编写程序的传统想法即将消失”。 人们常常倾向于高估短期变化,而低估长期变化。我们并不认为短期内ChatGPT会完全取代程序员,但长期来看,它确有可能颠覆一部分简单的编程工作。从2017年前端智能化兴起,到2021年GitHubCopilot火爆,再到现在的ChatGPT,AI毫无疑问正在改变编程工作流,这已经不是会不会的问题,而是改变的程度到底会有多大的问题。未来程序员们势必需要学习如何在工作中跟AI“协作”、如何基于AI更好更高效地完成自己的工作,所以程序现在最要紧的是让自己做好准备迎接可能到来的软件开发新范式,而不是焦虑恐慌或嗤之以鼻。 除了可能革新编程工作流,ChatGPT又会对科技行业格局带来什么样的影响?这也是近期科技创投圈的热议话题。不久前在一篇文章中看到一个挺有意思的观点,作者认为:OpenAI会颠覆亚马逊云在内的计算平台。可ChatGPT(以及OpenAI的其他产品)本 身跑在微软的Azure云平台上,怎么理解“OpenAI会颠覆亚马逊云在内的计算平台”呢?该文章作者认为,这取决于未来10-20年人们是否还会主要基于亚马逊云平台构建软件,他更倾向于会出现一个新的“智能平台层”。 业内还有另一个相对普遍的观点认为,微软(云服务)的未来会取决于OpenAI。国外知名科技圈投资机构a16z在1月19日发布的文章《WhoOwnstheGenerativeAIPlatform?》中表示,基础架构供应商(其实就是云厂商)可能是AIGC市场迄今为止的最大赢家,据他们猜测当下AIGC市场总收入的10-20%流向了云提供商。恰恰最近微软也宣布将把ChatGPT加入Azure云服务,未来云计算市场格局会如何变化?或许我们可以有更加大胆的想象。 每个月在云上“狂烧”180万,RubyOnRails 之父:我们要直接买硬件! 作者褚杏娟核子可乐 2022年10月,运营项目管理平台Basecamp背后的37Signals公司首席技术官兼RubyOnRails之父DavidHeinemeierHansson发文表示将要“下云”。近日,37Signals官博发文总结了自己在2022年的云支出情况。 这是一个得令人瞩目的云账单,该公司2022年在云上的支出费用大约为320.15万美元(约合人民币2170万元),即每月26.67万美元(约合180万元人民币)。其中大部分支出(75.99万美元)花在了AmazonWebServices的EC2和EKS服务。 “恐怖“的云账单 现在的37Signals主要经营两款产品:Basecamp和HEY,这也是他们的核心产品,对应的客户规模和收入水平也是最高的。另外,他们还运行着不少遗留服务,包括BasecampClassic、Basecamp2、Highrise、Backpack、Campfire、Writeboard,甚至是Ta-daList。这些服务已经不再继续出售,但仍有几万甚至几十万用户在用,利润贡献在数百万美元上下。对此,37Signals表示“打算永久提供支持,直到互联网不复存在。” 上述的不少应用程序并非运行在云端。以规模最大的应用程序Basecamp为例,它的最新版本和之前的Basecamp2几乎都运行在37Signals的自有服务器上,对应应用本体、数据库和缓存服务器。在这些服务上,只有搜索(OpenSearch)、文件存储(S3)和CDN服务(CloudFront)由云端提供。 HEY则基本完全依赖于云服务(除了某些电子邮件和图像处理服务,这部分由其自有硬件支持)。在HEY当中,37Signals通过AWSEKS在Kubernetes集群上运行完整的Rails应用程序,借助AuroraRDS建立MySQL数据库服务器,在Elasticache上运行Redis,还通过OpenSearch实现搜索服务。另外,37Signals的其他遗留应用程序也都运行在EKS上,数据库用的则是RDS。 “2022年全年,我们的所有云服务总开销为3,201,564美元,每月是266,797美元。吓不吓人!”37SignalsSRE工程师FernandoÁlvarez在博文里说道。 下面,我们看下37Signals的详细开销: •单看HEY,纯用于生产工作负载的全年开销为106.6万美元(合每月8.88万美元)。这一项服务的成本来源可参考下图: •至于其他各独立服务,37Signals2022全年为所有应用程序数据库在RDS上花费了约47.3万美元(合每月3.9万美元)。这还不包括最新的Basecamp和较早的Basecamp2版本,它们用的自有硬件。所以其中大部分还是来自HEY,全年数据 库支出为35.59万美元(合每月2.96万美元),其余部分就是支持其他遗留服务的开销了。 •至于OpenSearch,37Signals主要用来托管应用程序搜索集群和日志记录管道中的 索引存储,全年共花掉51.99万美元(合每月4.33万美元)。Basecamp和Basecamp2也在使用这项云服务,所以其中大部分成本就来自这两者,外加HEY和BasecampClassic。 •亚马逊云科技的Kubernetes服务EC2和EKS,在2022年内共花掉75.99万美元(合每 月6.33美元)。其中大部分用作HEY的生产和登台环境,总计27.23万美元(合每月2.26万美元),其余的用于其他遗留应用程序。但同样地,Basecamp和Basecamp2不在其中。 •37Signals在Elasticache身上花掉了12.38万美元(合每月1.03万美元)。其中最大 占比再次来自HEY,它要借助这项服务来获取Redis支持的缓存。 •最后,37Signals在S3上存储了约8PB的文件,2022年内总开销高达90.78万美元 (合每月7.56万美元)。Hansson透露,这是单笔花费最贵的项目。值得注意的是,37Signals使用了双区域副本策略来避免AWS整个区域及其中各可用区的突发 故障。为了交付这些文件和其他静态资产,其2022年在CloudFrontCDN服务身上花掉了66742美元(合每月5562美元)。 实际上,37Signals为了将巨额支出削减至320万美元,做出大量努力。运营团队开展一项审慎的成本核查计划,每月上报并跟踪。公司还通过预留实例和长期使用承诺等方式签订了长期协议,借此享受更低的定价优惠。“但即便如此,我们在2022年内还是花掉了如此恐怖的云服务支出!” 新的”省钱计划”:购买硬件 在新的一年,37Signals表示,计划把大量服务和依赖项从云端转移到内部硬件上,借此大幅削减这笔费用。但这个公司并不打算亲自运营数据中心,而是与Deft合作租赁其机架空间、带宽、供电和托管服务。 “虽然按我们的业务规模计算,这样的支出同样不低,但已经远优于公有云上的花费。”Álvarez说道。 虽然还没有详细的账单出来,但Hansson在推特上将这一成本与购买戴尔包含288个 vCPU的服务器所需的支出进行了对比: 第一组,R6525有256GB内存、3TBNVM、2x10G网络、2倍AMDEPYC7513。第二组除了是2xAMDEPYC7443之外,其他都相同。所以288vCPU、15TBNVM、1.3TBRAM,3年每个月只要1287美元! 37signals表示,新方案并不会给带来太多额外的运营负担,他们不需要在数据中心架设和部署硬件或者线缆。所有设备都可以从戴尔那边直接订购,发往Deft数据中心,等到服务器显示在线后即可直接使用。 可以看出,37signals在“下云”上表现出了非常大的决心。 正如Hansson当时所说,云计算在两种极端情况下大有裨益:其一是应用程序极其简单且流量很低的情况,这时选择完全托管服务能摆脱大部分复杂性要素;其二是负载波动几乎毫无规律可言、大家不知道该部署多少服务器的情况,这时上云是最好的选择。但如今37signals已经不适用于上述两种情况。“Basecamp多年的商业模式跟自有硬件都能良好协同,业务的增长轨迹也有很好的可预测性。” 事实上,虽然近年来云计算加速增长,但企业并没有放弃本地数据中心,很多企业继续依赖传统数据中心来处理其关键任务工作负载。 根据UptimeInstitute2022年的研究,只有36%的组织会将关键任务工作负载放入公共云中。虽然这一比例高于2019年的26%,但企业越来越担心公共云服务的可见性和弹性。2022年,超过四分之一(26%)的公司表示,出于此类担忧,他们不会将关键任务工作负载放到公有云上,这一比例高于2019年的22%。 企业在延长硬件的使用周期 那么,企业总是想要最新、最好的技术来为其数据中心提供动力吗?实际上并不是。 根据UptimeInstitute的研究,硬件更新周期在普遍延长而非缩短。在其2020年数据中心调查中,最常见的更新间隔时间为五年,而2015年时为三年。这表明在相对较短的时间内就发生了重大转变。根据Uptime的说法,五年或更长时间的硬件生命周期正在成为常态。 是什么推动了这种延长效应?UptimeInstitute表示,数据中心硬件的电源使用效率(PUE)的下降削弱了更频繁更新服务器的主要动力。平均PUE从2007年的2.5暴跌至2014年的1.67,但此后改善停滞不前,当前平均PUA为1.55。 注:PUE=数据中心总能耗/IT设备能耗,其中数据中心总能耗包括IT设备能