TDD is dead, again

发表于:2017-03-06来源:知乎作者:陶文点击数: 标签:tdd
以下通篇为无脑神论,没有半点事实支撑。以互联网服务为代表的后台软件开发有了巨大的变化。传统的软件开发的理论已经越来越无法适应新常态的需求了。比如以下几点

以下通篇为无脑神论,没有半点事实支撑。

以互联网服务为代表的后台软件开发有了巨大的变化。传统的软件开发的理论已经越来越无法适应新常态的需求了。比如以下几点
  • 系统的微服务拆分,大量地使用 RPC 组织业务逻辑。一个节点自身的逻辑越来越少,给一线工程师的自由度也越来越少
  • 快速迭代。一天数次上线。严重依赖小流量和在线特性开关的形式来做质量的校验。
  • 线下测试的成本越来越高,迭代速度快,线下搭环境都跟不上。

同时相配套的设施也在跟上

  • 机器越来越便宜。性能优化对于普通的业务系统来说微不足道(除非你的业务是安全或者CDN这些)。
  • 大量的代理被广泛使用,从nginx到haproxy,从mysql代理到codis
  • Dapper 的论文,导致各家都在实现在线的rpc日志,搜集与存储
  • 影子表等技术使得在线压测成为可能

一个总体的形势是,线下的验证已经被在线验证全面压制了。各个大厂都在在线监控与质量验证方面投入巨大。线下测试通过了不说明任何问题,只有在线上跑过了,才算是久经考验的。在线上的基础设施可以保证

  • 问题被及时发现,通过监控
  • 问题被及时定位,通过日志
  • 问题被及时控制,通过切流量

以前经常嘲笑的一个做法是“在线修改PHP文件”。但是现在越来越发现,在线改PHP文件是获得反馈地最有效的方式。因为线下没有真实的流量,没有真实的环境,没法低成本地复制一套出来。

但是目前的基础设施还有三个问题没有解决:

原文转自:https://zhuanlan.zhihu.com/p/25518867