凌晨两点,Maria盯着董事会邮件。对方问:10亿TPS怎么办?她回了一句让投资人沉默的话——"到时候我们会有200个工程师和几千万收入"。
这不是杠。这是37signals用单台MySQL扛下百万用户、AWS用单元格架构接受"可控泄漏"、Stripe从单体起步三个月上线的同一套逻辑。
本文用一张图拆解:为什么"会输"比"想赢"更重要。
一、架构师的职业病:假装能预测未来
我们被训练成解决问题的人。干净的图表、优雅的分层、漂亮的权衡——行业奖励这种能力。
典型场景:"我们需要支撑1000万用户。"问题是,这个数字常常是编的。
后果很标准:过度设计、分析瘫痪、理论上完美但没法用的系统。你画完架构图,业务已经换方向了。
成熟架构师的咒语是另一套:「我会错。我的工作是错得能挽回。」
二、"输得起"的四个现场
案例1:Basecamp的单机神话
37signals的Basecamp用一台MySQL服务器扛了多年,服务百万级用户。分片(sharding)被故意推迟——直到痛苦真实发生。
关键区别:当他们最终分片时,手上有清晰的数据告诉该按什么边界切。不是猜的,是痛的。
案例2:银行ESB vs AWS单元格
某银行的ESB(企业服务总线)试图隔离一切,结果造出个单点故障。AWS的单元格架构(Cells)走相反路线——直接接受跨单元格操作不可能,这叫"可控泄漏"。
不是堵住所有漏洞,是让泄漏发生在设计好的地方。
案例3:Skype的三年并行
微软重写Skype后端,从点对点单体迁到云原生。花了三年,两套系统并行跑,用户逐步迁移。
老系统直到新系统100%功能对等才下线。没有大爆炸,没有"切流之夜"的祈祷。
案例4:那家该坚持单体的小公司
第三篇文章提到的创业公司,本该守住模块化单体。够用的架构是:一个代码库、一个数据库、边界清晰的模块、每天部署10次的持续交付。
他们没选这条路,所以进了坑。
三、Maria的董事会攻防战
PayFlow,20人金融科技团队,做支付网关。CTO Maria读完了整个架构悖论系列,然后真用了。
董事会成员问:10亿TPS怎么办?
Maria:「那时候我们会有几千万收入和200个工程师。届时再拆分,我们会有资源做对。」
这句话的潜台词:现在为假想的规模预付费,是拿当下的交付速度换幻觉的保险。真到了那个规模,你今天的架构决策大概率全是错的——因为那时候你才知道问题长什么样。
四、两个加速决策的脏办法
Stripe:需求驱动复杂度
第一版是简单单体,几个端点。复杂度只在客户真的需要时才加。结果:几个月上线,不是几年。
金融科技团队:让数据吵架
团队在Kafka和SQS之间纠结。没开两周会,而是建了薄薄的消息队列接口,两个都实现,跑负载测试,用数据拍板。
不是更聪明的决策,是更快拿到决策依据。
五、S3 outage的反面教材
2017年S3挂了。AWS的复盘没点名打错命令的工程师,而是解释系统怎么允许一条命令搞垮这么多服务。
然后他们把元数据层重构成单元格感知——不是找替罪羊,是修系统的容错设计。
这是同一套逻辑:接受人会犯错,设计让错不扩散的机制。
六、一张图总结:架构实用主义的禅
http://dingyue.ws.126.net/2026/0428/4f2cb20fj00te6q4f001yd000m800etp.jpg
这张图的核心就一句:「没有完美架构。只有失败方式最不疼、能演进出来、团队真能干完的架构。」
拆解三层:
第一层,接受不完美。不是妥协,是承认预测未来的成本高于应对当下的成本。
第二层,设计可恢复性。每个决策都要问:如果错了,回滚要多久?
第三层,交付优先于设计。画图的快感是延迟的,上线的压力是即时的——后者才是真的。
七、为什么现在更重要
云原生、微服务、事件驱动——工具越来越复杂,"正确"的诱惑越来越大。但Basecamp的单机、Stripe的单体、AWS的单元格都在说同一件事:复杂度是负债,不是资产。
Maria的董事会回复之所以有力,是因为它把架构决策还原成商业决策。不是"能不能支撑10亿TPS",是"到需要10亿TPS时,我们还在不在牌桌上"。
活下来才能迭代。迭代才能找到对的架构。而不是反过来。
最后说个冷笑话:那个问10亿TPS的董事会成员,可能连自家产品的日活都记不清。但Maria得认真回答——这就是架构师的日常,用工程师的严谨,接业务的玄学。
热门跟贴