如果要追根溯源,无论是开发运维一体化(DevOps)或是精益软件开发(Lean Software Development)的思想都来自传统制造业的精益生产的实践。我们都知道在精益生产制造中,在生产车间首次引入看板等可视化方法,并引入精益思想的价值流图分析的实践来不断杜绝浪费,而DevOps把这种可视化和价值流图分析的具体实践做了很好的继承,并作为DevOps所倡导的主要原则实践。
看板不仅仅是一种可视化的信息源,看板在更多的精益生产过程中起到了一个及时的库存控制调度系统的作用。待生产的产品只有在收到来自其下游工序的工作获取信号时才转移到下一个工序,这就是所谓的“拉式管理”。用这种管理方式谨慎控制库存,确保没有机器生产多余或者无序的产品。而在某生产工序的机器只有在当时有能力执行额外生产时才发出向前一个工序获取更多工作的命令信号。库存因此不会成为瓶颈,这就引发了另一个精益的概念就是零库存(Just In Time)。敏捷开发方法把零库存的理论成功转化为限制在制品(WIP(Work In Progress))的概念,在软件开发过程中所谓的在制品就是已经着手开发方面的工作,但是代码还没有完全开发和验证完成,在这种状态下的未完成的软件开发工作都属于在制品。敏捷开发除了引用限制在制品的概念,还借鉴了精益价值流的概念,即软件产品的交付历经从需求、设计、开发、测试和发布部署各个活动阶段,共同组成软件产品交付的价值流,在价值流的末端即发布部署阶段才真正交付预期的价值。
其实精益思想的本质是为了实现产品的价值交付,DevOps的核心原则也是快速交付可工作的软件来实现预期的价值收益。这是为什么DevOps推崇敏捷开发的短迭代,以及极力打造持续交付的自动化部署能力。因为只有部署到生产环境的软件产品才真正体现预期的价值交付,即价值真正被用户感知或看得到。
精益思想的价值实现通常需要有三个支撑,它们是对人的尊重,即文化支撑;产品开发流,即应用单件流的思想;小而不间断的改进,即改善(Kaizen)支撑。以上的价值支撑模型在业界取了一个非常好听的名词,即精益思想之屋。以下为精益思想之屋的示例:
精益思想之屋
DevOps对精益思想之屋中提到的理念非常认同,并且高度借鉴和进一步诠释。比如DevOps强调多样化的团队,即团队来自多元的文化环境,在团队内部充分尊重个体的差异,差异的方面可能来自不同性别、性取向、宗教、种族、肤色、年龄、能力、教育程度和经验等。另外,DevOps同样强调单件流的工作方式,即大家在同一时间段共同关注一个项目或产品特性,在做完一个项目或产品特性后再做下一个。关于持续改善(Kaizen)的理念也是DevOps所提倡的,DevOps一直说自己在路上,企业或组织对DevOps的落地实施只有起点没有终点,DevOps和敏捷一样是一种实践科学,需要通过不断的探索与实践来超越以前的经验,在企业或组织层面做到不断迭代提升。
总之,DevOps继承了精益思想的文化理念,认同可视化和价值流图分析等具体工作方式来识别当下的工作阻塞和改进机会。我们可以认为精益思想是DevOps乃至敏捷开发的魂魄,没有精益思想落地的DevOps就像一个人只会低头干活,不会抬头看路一样。精益思想就是指引DevOps或敏捷开发落地的指路灯塔,使企业知道“曾经照亮来时的路,随时准备再次出发!”。
注意:本文最早由高级讲师刘通老师发表于讲师原创专区,转载请注明出处!
|