第1章 从机房到云端:一场架构革命的起源故事 / Chapter 1 From Server Rooms to the Cloud: The Origin Story of an Architecture Revolution
2015年春天,北京中关村后场路的一间民宅里,26岁的林默攥着刚拿到手的200万天使轮融资,拉着技术合伙人张岩开了个会:“咱们不做外包,做自己的电商平台,卖进口零食,就叫闪购优选。”张岩当时是个刚从大厂出来的后端工程师,对技术的事门儿清,拍着胸脯说:“没问题,服务器的事我搞定,租个小机房,比云服务器便宜一半,咱们创业得省着点花。”
一周后,张岩在中关村附近找了一家小型IDC服务商,租了2U的机位,月租1500,配了10M独享带宽,月租800,又花了6万买了3台Dell的2U物理服务器:一台跑Nginx做反向代理,一台跑MySQL数据库,一台跑Java应用服务器。那时候闪购优选一天才几百单,3台服务器跑得稳稳的,CPU使用率常年不到30%,张岩跟林默炫耀:“你看我省了多少钱,云服务器一年光计算资源就要15万,我这硬件加机房一年才10万,省了三分之一。”林默也高兴,觉得张岩靠谱,公司刚起步,能省一点是一点。
转折点来得比所有人都快。2016年3月,闪购优选跟北大、清华的10个高校社团合作,推出了“宿舍拼团”活动:9块9包邮2斤进口巧克力,10盒起拼就能送到宿舍楼下。活动在高校的QQ群、朋友圈里疯传,第一天订单就破了10万,是之前日均订单的20倍。那天晚上张岩正在家睡觉,被监控告警的电话吵醒,打开电脑一看,监控面板上全是红色的告警:CPU使用率100%,内存使用率98%,数据库连接池占满,用户下单页面一直转圈,下单成功率不到10%。客服的电话一个接一个,全是投诉下单失败的,林默也火急火燎赶到了公司,站在张岩身后的时候,脸色铁青得像要滴出水。
两个人熬了一宿,最后得出结论:单台物理服务器的性能已经到了上限,数据库的连接池已经被打满,加配置也没用,唯一的解决办法是加服务器。他们紧急联系IDC服务商,对方说现成的服务器要等3天才能上架,带宽升级要审批,最少2天,等服务器到位,活动早就结束了。最后那场活动做了3天,因为系统故障,损失了大概50万的订单,还有3000多个用户申请了退款,其中2000多个用户之后再也没回来过。张岩后来回忆那天的时候说:“我当时蹲在机房的角落里,看着满屏的红色告警,手机里老板和客服的电话轮番响,心里想的是当初真不该省那点云服务的钱。”
活动结束后,张岩咬着牙花了10万买了5台新的物理服务器,加上原来的2台,总共7台,那时候订单量稳定在一天2万单,服务器利用率到了70%,看起来够用了。但张岩心里清楚,这不过是暴风雨前的平静:每次大促之前都要提前采购服务器,大促一过,服务器利用率就降到了20%,一年里有10个月的时间,一半的服务器都在空转;更麻烦的是运维,7台服务器加上数据库、缓存、中间件,张岩一个人管,天天加班到10点,2016年8月,其中一台服务器的硬盘突然坏了,数据丢了2个小时,恢复的时候损失了大概10万的订单,张岩蹲在机房门口抽了半包烟,第一次认真思考:自建机房这条路,是不是真的走不通?
转机出现在2017年2月的阿里云栖大会。本来张岩是去凑热闹的,结果听了一场电商解决方案的演讲,演讲嘉宾提到某生鲜电商当年双十一峰值的时候用了12万台服务器,大促结束后只留了1200台,按实际使用量付费,只花了大促期间10%的成本。张岩当时就站起来了,问:“你们是怎么做到1分钟扩容100台服务器的?”嘉宾笑了笑说:“因为我们用的是云计算,弹性伸缩是云原生的基础能力,你只要设好规则,系统会自动帮你扩容缩容,不用人工干预。”
张岩回去之后就跟林默提了迁云的想法,林默一开始不同意:“咱们刚买的服务器才用了一年,迁过去不是打水漂吗?”张岩给他算了一笔账:现在7台物理服务器,一年折旧加机房加带宽加运维,一年要20万,要是迁到云上,平时用3台4核8G的ECS,一个月才3000,大促的时候扩容到20台,一个月也就2万,一年下来才不到10万,省了一半,而且不用再担心硬件故障、机房停电、带宽不够这些问题,云厂商都给你兜底。林默算了半天,觉得有道理,就说先迁测试环境试试,要是效果不好再迁回来。
张岩花了1个星期,把测试环境迁到了阿里云的ECS上,然后做了压力测试:原来要10台物理服务器扛的10万QPS峰值,云上只要3台ECS就能扛,而且弹性扩容只要在控制台点一下,1分钟就能加1台服务器,缩容也是自动的,不用人工操作。张岩那时候第一次觉得,原来架构可以这么灵活。2017年4月,他们把生产环境正式迁到了阿里云,一开始只用了IaaS层的服务:ECS云服务器、RDS云数据库、Redis云缓存、OSS对象存储、CDN内容分发,刚好赶上五一的促销活动,订单量翻了3倍,他们提前在控制台设了扩容规则:CPU使用率到70%就自动加1台ECS,内存使用率到80%就自动加1台。那天峰值的时候自动扩容到了15台,五一过了之后自动缩容到了3台,那个月的云服务账单才8000多,比原来预估的3万省了三分之二。林默高兴得请全团队吃了顿火锅,说当初迁云的决定太对了。
云计算的三层服务模型:从租毛坯房到住酒店
迁云之后,张岩开始研究云计算的各类服务,发现云计算不是简单的“租服务器”,而是分成了三层服务模型,每一层解决不同的问题,就像租房一样,你可以选毛坯房、精装房,或者直接住酒店,根据自己的需求来选。
第一层是IaaS(Infrastructure as a Service,基础设施即服务),相当于租毛坯房:云厂商把服务器、存储、网络这些基础设施准备好租给你,你只要负责上面的操作系统、中间件、应用、数据就行,房子本身的维修、水电、物业都是房东(云厂商)的事。闪购优选一开始用的ECS、RDS、Redis、OSS这些就是IaaS层的服务,他们不用管物理服务器的采购、运维、故障,只要管自己的应用和数据就行,省了很多硬件运维的事。IaaS的核心价值是“基础设施托管”,你不用再租机房、买服务器、付电费网费,只要按需租用计算、存储、网络资源就行,适合需要完全控制底层环境的用户。
第二层是PaaS(Platform as a Service,平台即服务),相当于租精装房:云厂商把操作系统、中间件、开发环境、数据库引擎这些都给你配好,你只要负责自己的应用和数据就行,拎包就能入住。后来闪购优选用了阿里云的RDS(云数据库),不用自己装MySQL、不用管备份、扩容、故障恢复,只要管业务数据就行;还用了云效的DevOps平台,不用自己搭Jenkins、GitLab、测试环境,直接就能做代码托管、CI/CD、发布,上线速度快了一倍。这些都是PaaS层的服务,进一步降低了运维的复杂度,让你不用再管中间件的运维, focus 在业务开发上。PaaS的核心价值是“开发运维托管”,适合想要快速开发应用,不想花时间在中间件运维上的团队。
第三层是SaaS(Software as a Service,软件即服务),相当于住酒店:云厂商把完整的应用都给你做好了,你只要注册账号、付费就能用,不用开发,不用运维,连软件升级都是云厂商帮你做。闪购优选后来用了七鱼的客服系统、纷享销客的CRM、飞书的办公套件,这些都是SaaS层的服务,不用自己开发,注册就能
不用自己开发,注册就能用的SaaS服务,让张岩第一次觉得“技术还能这么省”。之前闪购优选打算自研客服系统,排了2个开发做了2个月,花了10万,结果上线之后bug一堆,转单、统计、用户标签这些核心功能都不全,后来换成了七鱼的SaaS客服系统,一个月才1000块,直接对接订单系统和用户系统,自动给用户发物流提醒、售后回访,还能生成客服的绩效报表,比自研的好用10倍。张岩那时候跟林默开玩笑说:“以后咱们除了写业务代码,别的啥都不用自己做了。”
这其实就是云计算三层服务模型最直观的体现:IaaS(Infrastructure as a Service,基础设施即服务) 是租毛坯房,云厂商把服务器、存储、网络这些基础设施准备好,你负责上面的操作系统、中间件、应用和数据,房子维修、水电物业都是房东的事;PaaS(Platform as a Service,平台即服务) 是租精装房,云厂商连操作系统、中间件、开发环境都给你配好,你拎包就能住,只管自己的应用和数据;SaaS(Software as a Service,软件即服务) 是住酒店,云厂商把完整的应用都做好了,你注册付费就能用,连打扫卫生、换床单都是酒店的事。三层模型的边界从来不是技术划分,而是“责任划分”:谁负责什么,谁不用管什么,越往上,用户要操心的事越少。
为了更直观地理解三层的差异,我们可以用下面的责任划分图来看:
```mermaid graph TD A[Physical Infrastructure<br/>(物理基础设施:服务器/存储/网络/机房)] --> B[IaaS<br/>(基础设施即服务)] B --> C[PaaS<br/>(平台即服务)] C --> D[SaaS<br/>(软件即服务)]
%% 责任划分 subgraph IaaS责任 B1[云厂商负责:物理设施/虚拟化/网络/存储] B2[用户负责:操作系统/中间件/应用/数据] end
subgraph PaaS责任 C1[云厂商负责:操作系统/中间件/运行环境/平台工具] C2[用户负责:应用代码/业务数据] end
subgraph SaaS责任 D1[云厂商负责:所有层级的开发/运维/升级] D2[用户负责:配置业务参数/使用功能] end
A --> B1 B1 --> C1 C1 --> D1 ```
<!-- 纸书注:此处可配彩色对比图,用不同颜色标注云厂商和用户的责任边界 --> <!-- 电子版侧边栏:IaaS vs 传统IDC的核心差异 --> > 📌 传统IDC模式下,你需要自己采购服务器、租机房、付电费网费、雇运维管硬件故障、做灾备,所有事都要自己扛;IaaS模式下,云厂商把所有这些事都包了,你只需要按需付费,用多少花多少,不用再为闲置的硬件买单。
闪购优选迁云之后,一开始只用IaaS层的服务:ECS云服务器、RDS云数据库、Redis云缓存、OSS对象存储、CDN内容分发,相当于租了毛坯房自己装修,虽然不用管硬件了,但还是得自己装MySQL、自己搭Redis集群、自己管数据库备份、自己写扩容缩容的规则。2017年五一促销的时候,张岩提前3天就盯着监控,生怕峰值来了服务器扛不住,大促一结束,又赶紧手动把多余的服务器关掉,不然要多花几千块。那时候他就想:“要是连中间件都不用我管就好了。”
这个想法后来通过PaaS服务实现了:闪购优选把自建的MySQL集群换成了阿里云的RDS云数据库,不用自己装数据库、不用管版本升级、不用手动做备份,云厂商自动每天备份,还能一键恢复到任意时间点,之前硬盘坏了丢2小时数据的事再也没发生过;后来又把自建的Jenkins、GitLab、测试环境换成了阿里云的云效DevOps平台,代码提交之后自动做单元测试、集成测试,测试通过自动部署到预发环境,确认没问题一键发布到生产,原来上线一次要半天,现在只要10分钟,2017年双十一的时候,他们一天发了5次版本修复bug,要是以前根本不可能。
如果说IaaS解决了“不用管硬件”的问题,PaaS解决了“不用管中间件”的问题,那SaaS就是连“不用开发通用功能”的问题都解决了。闪购优选后来用了七鱼的客服系统、纷享销客的CRM、飞书的办公套件,这些通用功能完全不用自己开发,注册账号就能用,连升级都是云厂商自动做的,你不用再花精力去维护这些和核心业务无关的系统。张岩后来算了一笔账:之前公司有3个开发花了一半的时间在维护客服、CRM、OA这些系统上,换成SaaS之后,这3个开发可以全部去做核心业务的功能,一年至少多做了20个需求,相当于省了2个开发的人力成本。
为什么企业都要上云?不是跟风,是真能省钱
闪购优选的迁云经历,其实是过去10年中国企业上云的一个缩影。根据中国信通院2023年发布的《云计算发展白皮书》,中国云计算市场规模已经突破5000亿元,年增速超过30%,企业上云率已经超过40%,预计2025年将达到60%以上。云计算不是互联网公司的专利,现在从制造业到金融业,从政府到教育,几乎所有行业都在上云,核心原因不是“云计算是热点”,而是它能实实在在解决企业IT的核心痛点。
我们可以把企业上云的核心动机分成5类,每一类都有闪购优选的真实案例支撑:
1. 成本优化:从“花大钱买闲置”到“按需付费”
传统IT模式下,企业买服务器、租机房、买硬件,都是一次性的大额资本支出(CAPEX,Capital Expenditure),而且必须按峰值需求采购:比如闪购优选一年只有618、双十一两个大促,峰值需要的服务器是平时的10倍,但平时90%的时间这些服务器都是闲置的,相当于花了10倍的钱,只用了10%的资源。而云计算是运营支出(OPEX,Operating Expenditure),按实际使用量付费,用多少花多少,不用一次性投入大额资金,现金流压力小很多。
张岩当年算过一笔账:自建机房的模式,3台物理服务器加机房加带宽加运维,一年要20万,迁云之后平时用3台ECS,一个月3000,大促的时候扩容到20台,一个月2万,一年下来才不到10万,直接省了一半。根据Gartner 2023年的报告,企业上云之后,IT基础设施成本平均降低30%-50%,对于创业公司和中小团队来说,这个成本差异甚至是生死攸关的。
2. 弹性伸缩:再也不用手动扛峰值
传统IT模式下,扩容要提前采购服务器、上架、装系统、部署应用,最少要3-7天,遇到突发的流量峰值,根本来不及反应。2015年闪购优选做高校拼团活动的时候,就是吃了这个亏:流量来了10倍,服务器扛不住,等新服务器到位,活动早就结束了,损失了50万订单。而云计算的弹性伸缩(Elastic Scaling)能力,可以让你根据CPU使用率、内存使用率、QPS(每秒请求数)等指标自动扩容缩容,峰值来了1分钟就能加服务器,峰值走了自动把多余的服务器关掉,完全不用人工干预。
2017年五一促销的时候,张岩在控制台设了规则:CPU使用率到70%自动加1台ECS,内存使用率到80%自动加1台,内存使用率到30%自动减1台。那天峰值的时候,系统自动扩容到了15台,五一结束之后,又自动缩容回了3台,张岩那天在家睡了一宿,没有接到任何告警电话,醒来一看账单,才8000多,比预估的3万省了三分之二。
3. 高可用性:不用自己扛故障
传统IDC模式下,硬件故障、机房停电、网络中断都是家常便饭,闪购优选2016年就遇到过硬盘坏了丢2小时数据的事,损失了10万订单,张岩那时候想搞灾备,一问价格,备份服务器加专线,一年要10万,创业公司根本舍不得。而云厂商的多可用区(AZ,Availability Zone)部署,可以把你的应用和数据同时部署在同一个城市的2-3个独立机房,一个机房出故障,另一个机房自动接管,用户完全感知不到,可用性从99%提升到99.9%甚至99.99%。
<!-- 电子版侧边栏:什么是可用性? --> > 📌 可用性是衡量系统正常运行时间的指标,99%的可用性意味着一年 downtime 是3.65天,99.9%是8.76小时,99.99%是52.56分钟,99.999%是5.26分钟。对于电商系统来说,每宕机1分钟,可能损失几十万甚至上百万的订单。
闪购优选迁到云上之后,再也没有遇到过硬件故障导致的停机,RDS数据库自动做跨可用区备份,就算整个机房出问题,数据也不会丢,可用性从之前的99%提升到了99.95%,2018年双十一的时候,其中一个可用区出了短暂的网络故障,流量自动切到了另一个可用区,用户完全没感知,订单没有损失一分。
4. 运维简化:不用再管基础设施
传统IT模式下,企业要雇专门的运维团队管服务器、网络、存储、中间件、灾备,对于创业公司来说,一个合格的运维月薪至少1万,一年就是12万,还不算硬件的成本。而IaaS和PaaS服务把大部分基础设施的运维工作都交给了云厂商,你只需要管应用层的运维就行,运维人力成本直接降了一半。
张岩之前一个人管7台物理服务器,天天加班到10点,周末还要去机房处理故障,迁云之后,硬件、网络、数据库、缓存这些都不用他管了,只需要管应用的发布和监控,工作量少了一半,有时间去研究架构优化,而不是天天救火。
5. 快速迭代:不用自己搭基础设施
传统IT模式下,要上线一个新业务,要先采购服务器、装系统、搭中间件、搭开发测试环境,最少要1-2周,而PaaS和SaaS服务把这些基础设施都准备好了,注册就能用,新业务上线的时间从几周缩短到了几天甚至几小时。
2018年闪购优选想做直播电商的业务,要是以前,要采购服务器、搭直播流媒体服务、搭即时通讯系统,最少要1个月,后来直接用云厂商的PaaS直播服务,2个开发3天就把直播功能做出来了,比竞争对手快了2周,抢到了第一批主播资源,那个季度直播业务的营收占了总营收的30%。
从“搬服务器”到“架构革命”:云计算的下一站
闪购优选2017年迁云的时候,其实只是做了“lift and shift(直接迁移)”:把原来跑在物理服务器上的应用直接搬到云服务器上,架构本身还是原来的单体架构,只是基础设施换了而已。这种模式虽然能省成本,但并没有发挥云的全部价值,业务快速迭代带来的架构痛点依然存在。
2018年618大促的时候,闪购优选的订单量翻了5倍,虽然提前扩容了服务器,但还是出现了服务雪崩:订单服务因为一个bug挂了,把商品服务、用户服务、支付服务都拖垮了,整个系统挂了10分钟,损失了100万的订单,2000多个用户投诉,林默那天把张岩叫到会议室,两个人抽了半包烟,张岩说:“咱们现在虽然不用管硬件了,但架构本身还是有问题,一个模块出问题整个系统都挂,下次大促肯定还要出事。”
那次故障之后,张岩开始研究微服务架构:把原来 monolithic 的单体应用拆成订单、商品、用户、支付、物流、优惠券多个独立的服务,每个服务独立部署、独立扩容、独立迭代,一个服务出问题不会影响其他服务。但拆完之后又遇到了新的问题:服务变多了,调用关系变复杂了,一个请求要经过5-6个服务,出问题排查起来特别麻烦,而且服务之间的同步调用太多,一个服务慢了,整个请求链都慢了,用户体验特别差。
就在张岩为这些问题头疼的时候,他在2018年的云栖大会上听到了“事件驱动架构”和“Serverless”的概念:事件驱动架构不是用同步调用来串起所有服务,而是用事件来触发服务,服务之间解耦,一个服务出问题不会影响整个链路;Serverless连服务器都不用你管,你只要写业务代码,上传到云平台,有请求来的时候自动运行,没请求的时候不收费,连扩容缩容都不用你管。
张岩那时候站在会场里,突然意识到:原来云计算的革命不只是“把服务器搬到云上”,而是整个架构逻辑的重构——从“管基础设施”到“只管业务逻辑”,从“同步调用”到“事件驱动”,