对一个快速发展的互联网产品来说,有2个目标很重要:
1.发展。 互联网公司头部效应明显,没有人会记住行业内第3个公司。所以,如何以最快的速度不断进行产品迭代是非常重要的
2.稳定。如果产品的稳定性不行,用户则很容易放弃转向其他产品。没有用户喜欢使用不稳定的产品,即使你这个产品功能上可能很好
发展和稳定是一个矛盾体。要快速发展,必然不可能太稳定;要稳定,必然会限制发展速度
在很多互联网公司,存在2个团队。开发团队负责发展,即持续开发新功能; 运维团队负责稳定,即保证线上的稳定性、高可用性等。
开发团队时常抱怨,说运维团队给了太多限制,束手束脚,经常会干扰开发团队的正常发布产品进度
运维团队时常抱怨,说开发团队的产品功能稳定性不行,bug太多,对非功能性需求(稳定性、可靠性、可运维性等)重视程度不够
在google内部,解决这两个团队矛盾的办法是错误预算
错误预算的观点认为,放弃追求100%的可靠(事实上不可能达到),当达到一定程度的稳定性(例如:可用性99.99%)之后,把注意力转移到发展(开发新功能)上
具体要点如下:
1.开发团队和运维团队达成一致的错误预算,即一个月或一个季度的错误率(不可靠性)
2.开发团队在错误预算内,可以任意发布产品的新版本,运维团队不再干预
3.运维团队提供错误率数据,当产品的错误预算耗尽,通知开发团队暂停新版本发布
4.开发团队暂停新版本发布后做什么?其实就会关注到非功能性需求(提高产品稳定性等)上
通过这个方法,就是把2个团队的目标统一起来了。兼顾了发展和稳定的需求。