过去一年多,本人所在公司发生了很大变化,随着敏捷开发的实施,DevOps的应用,明显感觉到开发效率的提升,人员积极性的增加。作为主动拥抱变化的一员,在这里谈谈我对敏捷开发和DevOps的理解。
敏捷开发
敏捷开发起源于2001年美国犹他州的雪鸟会议,会上Martin Fowler,Jim Highsmith等17位著名的软件开发专家共同起草了敏捷软件开发宣言:
个体及交互比流程与工具更有价值;
可用的软件比冗余的文档更有价值;
与客户的协同比合同谈判更有价值;
对变化的响应比遵循计划更有价值;
尽管右项有其价值,但我们更重视左项的价值。
敏捷开发强调人与人的交互,无论是开发人员和客户,还是开发人员与开发人员之间的交互;强调重视拥抱变化、响应变化,在复杂多变的市场中,客户可能自己也不清楚自己的真正需求,所以需要开发人员接受需求的变化,业务的变化,进行小版本交付,持续改进。
其以用户的需求为导向,采用迭代开发,增量开发的方式进行软件开发。将原本庞大的需求拆分为多个相对独立的子项目,迭代交付。据统计,2018年90%的软件开发采用敏捷开发。
敏捷开发解决了客户与IT之间的矛盾。客户总是希望提出的功能能马上实现,对交付的产品总存在这样或那样的不满意。采用敏捷的方式后,每次迭代优先实现客户觉得最重要的功能(MVP),交付给客户,根据客户的反馈迭代改进,降低交付成本的同时,提高了客户的满意度,使产品更贴近市场,降低了产品产品不适应的风险。
DevOps
DevOps是当前的一个新兴领域。
DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
DevOps包含一套工具,通过这一系列工具,打通了需求管理、代码管理、构建、自动化测试、自动部署等多个环节。如图。开发人员提交代码后,直接可以部署到测试环境进行验证或者生产环境,发布给用户。加快了IT部门内部客户需求到生产成品的流通速度。
DevOps不仅仅是一套工具,更是一套方法论,是一系列可以帮助开发者和运维人员在实现各自目标(Goal)的前提下,向自己的客户或用户交付最大化价值及最高质量成果的基本原则和实践。工具链是对这一原则的实践。
DevOps解决了IT部门内部开发人员与IT运维人员之间的矛盾,是敏捷软件开发思想在IT部门内部的延伸,使IT内部也敏捷起来。
敏捷的再敏捷
DevOps与敏捷存在着千丝万缕的联系,2008年的Agile Conference(敏捷大会)给DevOps埋下了种子,之后开始快速成长,到今年来的火热,DevOps与敏捷息息相关。
DevOps与敏捷从来都不是对立的,取代的关系,DevOps是敏捷的重要补充。敏捷解决了客户和IT部门之间的矛盾,降低了开发的成本和风险;DevOps解决了IT部门内部开发与运维之间的矛盾,是敏捷思想在IT部门内部的延续,提高了软件开发的效率,放大了反馈回路,缩短了反馈时间。让敏捷开发更加敏捷。