问题描述
在DevOps的背景下,”完成”的定义是什么?这个问题非常广泛,但据我理解,答案必须涵盖自动化构建和测试,以及持续集成、部署和交付。我正在寻找可以用来定义”完成”的一般原则和想法。
解决方案
请注意以下操作可能存在个人观点,仅供参考。
方案1
将DevOps中”完成”的定义理解为“全组织各级别的主动持续改进”,而不仅仅是持续集成和持续交付。尽管自动化构建、CI/CD等是里程碑,但绝不是组织在DevOps努力中的终极目标。
当你拥有一个具有持续集成的自动化系统时,看起来似乎已经”完成了所有的DevOps”。但实际上,即使你达到了这个阶段,仍然会有很多事情要做。
在组织中使大多数人不断寻求持续改进的状态非常困难。惯性常常阻碍前进,无论是现有的惯性,还是在某些改进完成后产生的新惯性。
在这方面,Lean和约束理论都有很多值得借鉴的地方。这两个知识体系都专注于持续/持续改进的过程以及如何在组织中建立这个过程。
方案2
从DevOps的角度来看,一个常见的说法是“完成意味着部署” – 相应的故事或功能在实际部署到生产环境之前不会被放入”完成”列。
在DevOps之前,敏捷团队对”完成”的定义通常是指在迭代期内”完成”(并在迭代期结束前或之前被产品负责人接受)。实际上,在实际发布和部署之前,可能还会有后续的测试、交付和发布工程层面的工作。
方案3
DevOps是在交付周期中不断改进,以满足客户需求,提供高质量、较短的时间和安全性,同时不妥协成本和性能。当然,还需要从客户那里获得反馈,并反复进行循环。
在DevOps中,并没有”完成”的概念。这个问题有点棘手,因为类似于问”何时完成软件的开发或销售”,就好比问在软件公司何时完成开发或销售一样。
类似地,在DevOps文化中没有所谓的”完成”。当然,还有一些需要完成的交付物和里程碑,比如自动化重复的琐碎任务,CICD流水线等等。
你可以从IBM DevOps主管的一段解释中了解更多关于DevOps的信息:IBM DevOps 视频。
方案4
在Scrum团队中,”完成”的定义用于评估产品增量的工作是否完成。
根据Scrum指南,当产品待办项或增量被描述为”完成”时,每个人都必须理解”完成”的含义。尽管这在不同的Scrum团队中存在很大差异,但团队成员必须共享对工作何时完成的理解,以确保透明度。
根据Apple Brook Consulting的创始人兼首席顾问、认证Scrum教练和认证Scrum培训师Daniel Gullo的看法,可以在不同的上下文中应用”完成”的不同含义,如故事级别、史诗级别、发布级别、产品级别等等。
根据Daniel的说法,有不同的”完成”角度。”完成”这个词通常被用来表示”完整”,就像开发团队说:”我们完成了这个故事。”它还被用来表示”接受”,就像产品负责人说:”这个故事完成了。”我通常这样教导和指导:不要说”完成”。相反,使用”完整”和”已接受”来更具体地表示状态。
总结
在DevOps中,”完成”并不是一个静态的状态,而是一个动态的过程。它强调持续改进、持续交付以及组织在各个层面不断努力的文化。无论是自动化构建、持续集成、部署还是交付,都是实现”完成”的里程碑,但真正的目标是在整个组织中实现持续改进。
以上是对于在DevOps语境下”完成”的一些不同观点和解释,希望能够帮助您更好地理解这个概念。DevOps的本质在于持续地追求优化和提高交付效率,而”完成”只是这个追求过程中的一个重要里程碑。