知识卡片
企业产品与互联网产品引入新技术的不同策略:渐进替换 vs 快速全量切换
内容
两个真实案例展示了同一个”用OpenResty替换旧技术架构”的目标,因为产品性质不同,实施策略完全不同。在某企业安全公司,产品面向部署到用户处、更新周期很慢的企业客户,稳定性要求极高,替换过程必须是渐进的:先在一个新开的实验性产品线(原本无人关注、包袱小)里直接采用开源组件做验证,等到这条产品线和老产品合并后,先容忍新老两套架构并存(老功能用老架构、新功能用新架构),再通过对比测试、内部培训、多次帮工程师排查用户性能问题等方式,逐步让开发者自己认识到新技术的优势,最终因为工程师们不堪加班重负、自发选择用新框架开发新功能和迁移旧功能,才真正完成了架构的整体替换——全程没有采用强制手段,因为企业产品需要绝对稳定,贸然强推风险太高。而在某门户网站,情况完全不同:突发新闻(如重大新闻事件)会带来剧烈的流量脉冲,把原有的Apache同步多进程架构反复压垮,这种场景下”稳定性”恰恰要求快速响应,所以先用Nginx的fast_cgi_cache把QPS提升一个数量级救急,再在权衡了Node.js(回调地狱)、Golang(当时调试不便)等候选方案后,直接选定OpenResty作为新的后端技术,并且为了照顾团队最熟悉PHP的现实,专门基于OpenResty开源了模仿Yaf使用习惯的Vanilla框架来降低迁移门槛。这两个案例共同说明:引入新技术没有一套放之四海而皆准的推进节奏,替换策略必须服从产品本身对稳定性和响应速度的真实要求——面向慢速更新、高稳定性要求的企业客户,渐进说服比强制切换更可靠;面向流量剧烈波动、必须快速响应突发的场景,直接果断切换反而是更合理的选择。
参考来源
- 位置:《高可用架构(第1卷)》第2章《高可用架构原理与分布式实践》"2.11 OpenResty的现在和未来"节,"2.11.3 如何在项目中引入新技术"(源文件:_epub-src/OEBPS/Text/Chapter2_11_4.xhtml)
- 结论依据:原文分别叙述某企业安全公司"在新技术的引入过程中,我们没有采用强制的举措,因为企业产品需要稳定,用户处部署的版本更新很慢"的渐进替换过程,以及某门户网站因突发流量压垮系统而"花几个月时间,先用……换了Apache"再直接选定OpenResty的快速切换过程,共同支撑本卡片结论。
- 原始内容:在新技术的引入过程中,我们没有采用强制的举措,因为企业产品需要稳定,用户处部署的版本更新很慢……但是总是会有突发新闻……突发的高流量把后台压垮了几次……他们最后选择了OpenResty,而且基于OpenResty开源了一个Web框架Vanilla。