知识卡片
淘宝技术演进案例:从"买"到"重构"再到"自研"的原则转换逻辑
内容
[[合适原则:合适优于业界领先,及其三个失败根源]]和[[演化原则:软件架构的主题是变化而非建筑式的永恒]]并不只是抽象口号,淘宝的技术发展历程给出了一条清晰的具体验证轨迹:从2003年一个月内上线的”个人网站”阶段开始,早期两次架构升级(先买轻量网站快速上线,MySQL撑不住后换成Oracle+NAS存储)走的都是”买”这条路——不是因为淘宝不懂技术优化,而是因为业务处在”快速验证、快速上线”阶段,此时衡量方案好坏的唯一标准就是”够不够快、够不够省事”,”买”恰恰是当时约束条件下最合适、最简单的选择,这正是合适原则与简单原则的具体体现,而不是技术水平低的表现。转折点出现在从PHP切到Java这一步:这次不再靠”买”解决问题(连接池代理频繁死锁重启,已经直接影响用户体验,属于技术问题倒逼业务的情形),而是通过重构语言栈来解决,标志着架构选择从”合适优先”转向了”演化优先”。再往后的Java 2.0阶段(分库、放弃EJB、引入Spring、加缓存、加CDN),触发原因也不再是”能不能用”,而是业务量变引发的质变——数据量和用户规模涨到了单纯靠采购硬件性能已经无法覆盖的量级,且规模一旦扩大,采购成本本身也从无关紧要变成了关键考虑因素,这时候”买”已经不管用了,必须靠架构层面的调整来应对。这条轨迹说明一个可迁移的判断框架:判断该”买”还是该”重构/自研”,关键不在于团队技术能力强弱,而在于当前是否已经出现”原有方案存在固有缺陷、量变已经引发质变”这个明确信号——信号未出现前强行重构是过度设计,信号已出现却继续硬扛用”买”来拖延,则是对演化原则的违背。
参考来源
- 位置:《从零开始学架构》第09讲《架构设计原则案例》"淘宝"(源文件:_epub-src/OEBPS/text00000.html,内容摘自《淘宝技术发展》)
- 结论依据:原文说明淘宝初创阶段"业务决定技术,这里架构设计和选择主要遵循的是'合适原则'和'简单原则'",切换Java阶段"这次架构的变化没有再简单通过'买'来解决,而是通过重构来解决,架构设计和选择遵循了'演化原则'",Java 2.0阶段"原有的方案存在固有缺陷,随着业务的发展,已经不是靠'买'就能够解决问题了……这就是'量变带来质变'的一个典型案例……架构设计遵循'演化原则'的思想,需要再一次重构甚至重写",直接支撑本卡片结论。
- 原始内容:业务决定技术,这里架构设计和选择主要遵循的是"合适原则"和"简单原则"……这次架构的变化没有再简单通过"买"来解决,而是通过重构来解决,架构设计和选择遵循了"演化原则"……这就是"量变带来质变"的一个典型案例,业务和系统发生质变后,架构设计遵循"演化原则"的思想,需要再一次重构甚至重写。