原话是“Continuous Deployment is the holy grail”。在听到的这句话的时候,我的灯泡突然被点亮了。说得实在是太对了。有一句老话是“纲举目张”。意思是提起渔网上总绳,一个个网眼就会被张开。我们的很多实践,就像这渔网上的网眼,琳琅满目。我们缺乏的就是这样一个总绳来把所有的实践联系起来。No,No,No,你错了。你可能要说,我们有这样的一个总绳,它的名字叫Agile。那是昨天的名字了,今天的名字叫Lean,天晓得明天的名字会是啥。这个总绳,还叫Pragmatic,还叫Value Driven。这些确实是可以起到概括一切的作用,但是你怎么知道你做的是不是
Agile呢?是不是Lean呢?是不是Pragmatic呢?是不是Value Driven呢?这些都缺乏一个实际的可测性。Continuous Deployment,强大之处就在于,他很直白,甚至是缺乏内涵的。所以很容易知道,你到底做到了没有。这就是我们所需要的总绳,能够时刻时刻地把我们所有的实践团结在一起,纲举目张。
那么持续部署为什么就是王道了?这里有两个可以产生歧义的地方,持续部署与王道。什么是持续部署?而王道又是什么?Holy grail,王道其实就是说this thing is good。我们经常在口头上对某件事物表示赞叹,常用的词汇就是“好”。王道就是特别好。好是主观的,我认为软件开发这个领域中,好就意味能够从投入产生出持续的真金实银的回报。好也不在于界面如何友好,不在于code有多优美,所有这些指标都是间接的。唯一的指标就是到底产生了多少金钱上的回报。如果我们假设,软件开发产生回报的唯一手段就是把软件部署到产品环境,去提供服务(另外一个方面,如果不用部署就能产生回报,也许就不是一个软件开发项目,也许是某些政府部门的政治项目)。可以得出一个结论就是,要持续的产生回报就必须持续地进行部署。这看似是一个很浅显的道理,但是浅显的问题的可怕之处就在于,不是所有的人都意识到了这一点。
持续部署又是什么?持续意味着一直在部署,相对的就是偶尔部署。持续与偶尔部署的区别就在于,你把部署看做一种常态,还是一种偶然发生的事情。如果部署在所有的开发行为中,所在占到了10%而不是1%,那么就不再是偶尔才做的事情了。要想朝着持续部署的方向前进,意味着以前开发向前10步做一次部署,就得朝着5步一次部署,2步一次部署前进。持续并不是很难理解的问题,难度在于How?前面说了持续部署只是一个总绳,而渔网上的那么多的网眼就是How的答案。我们有SOA的架构,有高耦合低内聚的设计,有Domain Driven Design。有在线的Migration。给持续部署找出具体于你的Context的解决方案,就是整个Team需要努力的事情,它只是一个方向,而不是一个具体的solution。
最容易在实践中被混淆的就是“部署”。这似乎是另外一个很浅显的问题,但同样你会惊讶于到底有多少次我们做到了真正的部署。部署不仅仅是把软件包安装到某台机器上 ,让人可以来用。部署意味着,确实给业务提供服务。最容易检测的方法就是,把你部署好的软件反部署之后,会有多少业务无法运行,有多少比例的用户受到影响。根据这样的定义,部署到Staging环境不是部署,部署成为一个只有1%用户使用的Pilot版本也不是部署,部署到服务器上,但是所有用户仍然再用旧的系统,只是出于好奇才来用一两下的情况也不是部署。只有部署到产品环境上,给绝大部分用户使用,提供别的系统无法提供的服务时,才算是真正的部署。不要拿什么用户体验改进来搪塞了,不要再喊什么这只是一个Pilot了。只要不是真正地提供无可替代的服务,就根本不可能产生一个子的价值。“部署”成一个测试环境,只不过是给将来真正的部署,去赚那真真的一个子的钱,做准备而已。在此之前,都是投入,而不是产出。在产出真正实现之前,都是浪费。
你有没有问过你自己,你过去一年写的代码,有现在是部署了的。你过去三个月写的代码,现在是部署了的。你过去一个月写的代码,现在是部署了的。你过去两个星期的代码,现在是部署了的?不在于代码的多少,以及功能是否强大,只要是部署了,起码就有提供价值的可能。我们需要的就是,每天都问自己一遍这个问题。不但要个人的reflection,整个团队都要问这个问题。最重要的是,product owner,也就是我们乙方所谓的甲方,是不是也在问自己这个问题?如果是,那么很好,那么我们在追求卓越软件的道路上了,至少已经开始上路了。之前,只不过是在泥沼中爬行而已。
分享到:
相关推荐
同时,定期的代码审查和持续集成/持续部署(CI/CD)流程有助于保持代码的质量,并尽早发现和修复错误。 总结来说,“联盟程序-无错才是王道”意味着在多人协作的项目中,保持代码无错是成功的关键。这需要开发者...
**2.10 SAP ERP部署启动会** - **活动内容**:召开启动大会,明确项目目标和期望。 - **关键文档**:启动会议纪要。 #### 三、业务蓝图阶段 **3.1 基于业务流程和关键解决方案的蓝图设计** - **活动内容**:根据...
这种模式旨在简化用户的工作流程,使他们能够快速部署测试系统,无需花费大量时间进行系统集成和配置。然而,随着技术的发展和市场需求的变化,模块化测试系统正成为一种趋势,尤其是对于基础电子测试来说。 是德...
AI越来越“变态”了,本地部署才是王道!AI声音克隆又进化了,1分钟训练模型,一键启动包发布!AI声音克隆又进化了,10分钟学会声音克隆!一键启动包发布!AI写“鲁迅体”2023全国高考作文AI“鲁迅”,入驻B站啦!...
在网页设计中,内容始终是王道,一个好的模板应该能够突出并优化文本的呈现,确保用户可以快速、轻松地获取信息。此模板通过合理的字体选择、行高、字间距以及适当的留白,实现了这一目标,使得文章内容在视觉上更...
《javaBook: Java面试汇总与知识体系结构》 在Java编程的世界里,深入理解和掌握Java知识体系结构对于每一个开发者来说都是至关重要...记得,理论结合实践才是王道,不断地编码、调试、反思,才能真正成为Java的高手。
在此过程中,不仅面临着系统架构的持续优化和技术挑战,还需要应对日益复杂的网络安全威胁。 #### 二、唱与听的盛宴:更好的流媒体服务 为了提供更高质量的音频流媒体服务,全民K歌进行了多方面的技术改进。例如,...