Boss:「项目经常延期」「做东西太慢」
产品:
-
「老板的想法总变」
-
「事情太多,忙成狗」
-
「开发说这个实现不了」
开发:
-
「需求总变」
-
「UI 方案给的太晚」
-
「活儿太多」
测试:
-
「需求变了没提前通知」
-
「测试时间总被压缩,还要背锅」
-
「重复测试太多遍」
运维:
-
「每天这么多版本上线,活干不完,出事儿第一个背锅。」
上面的这些问题在做互联网应用时,我们都深有体会。为什么说是互联网应用,而不是传统的IT软件?传统IT软件在研发时,更多的是项目型或者产品型的,其发布频率或者需求变化的频率是相对较慢的,软件版本的变化基本上可以按部就班的进行,这也是传统的研发模式普遍应用的根本原因。
传统的研发模式,测试介入时间晚,自动化程序要求低,是允许有较多的试错空间,正适合发布过程缓慢的传统软件。
而互联网企业与传统的软件公司之间存在非常好大的差异。首先,互联网公司对外提供的是服务,不是软件产品。整个系统的生命周期是自己可控的,特别是系统发布上线后,可以根据应用情况快速修正方案,最大限度的提升服务质量和用户体验。其他,互联网服务的竞争压力很大,需要更短的时间把新点子、新想法落地,与竞争对手拉开差距。这些问题都会推动,互联网服务的开发要更敏捷、更迅速。但敏捷迅速,不能以降低质量为代价。所以,对系统的交付速度、交付质量有了非常好高的要求。这也是DevOps中CI、CD所要解决的问题。
在DevOps末实现,系统发布频率高,测试频率高,自动化程序要求高,试错空间有限。全面的自动化测试,是实践持续集成的基础。其目的就是为了按时、高质量的交付软件产品和服务。