的Product Managers’ Guide to 持续交付 and 开发运维 “产品人员-产品经理,产品设计师,UX设计人员,UX研究人员,业务分析师,开发人员,制造商和企业家 May 05 2020 真正 持续交付,持续集成,开发,编辑精选,反馈循环,技术产品经理, 注意产品 介意产品有限公司 2399 持续集成图 产品管理 9.596

的Product Managers’ Guide to 持续交付 and 开发运维

通过 ON

在本指南中,我旨在揭开神秘面纱 持续交付和开发运维. I’将说明这些做法,告诉您“在业务方面”它们对您有多重要,并帮助您参与其中。没那么复杂,我们有图片和所有内容。

本指南适合您…

  • 你在技术上,你’re a product manager or an MBA. Your team A/B tests, feature toggles, and you have a dog in the office! Of course you understand what feature branches are, what CD is and what a 开发运维 culture looks like. Right? Uh … sure.
  • 您已经敏捷了。现在,工程团队每周与您的产品人员见面,讨论故事和迭代。他们合作得很好,正在建设的东西比以往任何时候都感觉更好。但是您的客户仍然无法更快地获得这些功能。您仍然必须等待释放火车离开车站。您听说过像Etsy,Flickr和Google这样的公司每天交付100次。他们是如何做到的呢?
  • Your 发展 team wants to “do CD”. You’ve heard some good things but you’re 也 concerned about changes going to production 与out them being properly tested or not being able to market the changes properly. What is this CD thing?

让’s start 与 some definitions and examples:

持续集成(CI)

In traditional software 发展, the process of 积分 通常在每个人完成工作后,在项目结束时进行。整合通常需要数周或数月的时间,可能会非常痛苦。 持续集成 is a practice that puts the 积分 phase earlier in the 发展 cycle so that building, testing and integrating code happens on a more regular basis.

CI表示,一个开发人员(嗨,史蒂夫!)在家里用笔记本电脑编写代码,另一个开发人员(嗨,安妮!)在办公室的台式机上编写代码,他们既可以为同一产品编写软件,又可以将他们的更改集成到一起。一个叫做 源库。然后,他们可以根据各自编写的内容来构建组合软件,并测试其按预期方式工作。

持续集成 puts the 积分 phase earlier in the 发展 cycle

开发人员通常使用一种称为 CI服务器 为他们做建筑和整合。 CI要求Steve和Annie具有自检代码。这是用于自我测试以确保其按预期工作的代码,这些测试通常称为 单元测试。 集成代码后,当所有单元测试均通过时,史蒂夫·安妮将获得 绿色建筑。这表明他们已经验证了自己的更改已成功集成到一起,并且代码正在按测试的预期运行。但是,尽管集成代码可以成功地协同工作,但是由于尚未经过测试和验证,因此尚未投入生产。 类似生产的环境。您可以在中阅读更多有关CI后发生的情况的信息。 持续交付 下面的部分。

要被视为练习CI,史蒂夫和安妮必须 报到 到主要的源存储库,频繁并频繁地集成和测试其代码。通常每小时一次,但每天至少一次。

CI的好处是集成成为非事件。一直在编写和集成软件。在CI之前,集成是在创建过程的最后一次完成的,并且花费的时间未知。现在有了CI,它每天都会发生,只需要几分钟,这仅仅是“我们的工作方式”。

您的团队很可能正在执行CI(或至少他们认为这样做)。您可以询问他们是否每天集成代码来进行确认–CI是首先需要做的练习 持续交付。实际上,如果您曾经签入过帮助文本,文档或图像,那么您可能一直在进行整合!您还可以看到 ‘7 signs you’re 主ing continuous 积分’ 以获得更多确认。

连续交付(CD)

让’回到我们的两个开发人员,史蒂夫和安妮。 持续交付 意味着每次Steve或Annie更改代码,集成并构建代码时, 在与生产非常相似的环境中自动测试此代码。我们称这种部署为– and testing on –不同的环境 部署管道. Often the 部署管道 has a 发展 environment, a test environment, and a staging environment, but these stages vary by the team, product and organisation. For example, 我们的Mingle团队 有一个称为“ Cupcake”的阶段,这是一个过渡环境,并且 Etsy的暂存环境称为“公主”.
持续交付 is a software 发展 discipline

在每个不同的环境中,Annie或Steve编写的代码都经过不同的测试。这使他们和您越来越有信心,当代码在生产环境中部署时,它们将在生产环境中运行。至关重要的是,代码仅会升级到部署管道中的下一个环境(在此环境下进行测试) 如果  通过了先前环境的测试。这样,Annie和Steve可以从每个环境中的测试中获得新的反馈,并且如果出现故障,他们可以更轻松地了解问题的根源,并在代码进入生产环境之前将其解决。

持续学习

这个过程对我们这个行业的人来说非常强大。这意味着,如果Annie的测试在所有环境中都通过了,您就会知道她的代码在投入生产时可能会按预期工作。一旦测试在所有环境中通过,您就可以立即确定最终用户是否通过测试。我们现在要在生产中使用这种绿色产品吗?是!因此,一旦开发人员完成构建,就可以立即为客户提供经过全面测试的全新工作软件。 !

持续部署

这是史蒂夫(Steve)或安妮(Annie)进行的每项更改都经过所有测试阶段的一种做法, 自动地 投入生产。 蒂姆·菲茨(Tim Fitz)对它的最初解释很深刻。一些公司这样做,而另一些则没有。要实现连续部署,您首先需要进行连续交付,因此,在开始练习连续部署之前,先决定哪个对您更有利。无论哪种方式,我认为持续交付都是关于赋权 整个业务,因此至少应该参与确定是否应该使用连续部署。毕竟,如果你’重新阅读这篇文章,那么您可能正在“business side”.

持续部署是软件发布的策略

开发运维

这个单词‘DevOps’来自单词的组合‘development’ and ‘operations’. 开发运维 is a culture that promotes collaboration between developers (hey Steve and Annie, you’re back) and other technology professionals, often called 运作 or just ops (high-five ops star Joey!). Specifically, communication and collaboration during the software delivery and deployment process, 与 the goal of releasing better quality software more quickly and more reliably.
Common traits of organisations who have a so-called 开发运维 culture are: autonomous poly-skilled teams (Steve, Annie and Joey are 所有 on the same team), high levels of test and release automation (a la continuous delivery) and common goals between the poly-skilled members.

“ 开发运维”是“发展”和“运营”两个词的组合

您可能会看到此方法在您的组织中起作用的一种方式是,我们的开发人员朋友Steve和Annie将工作 像乔伊(Joey)这样的人将软件交付生产,而不仅仅是“hand off”将他们的代码发布给Joey’完成它。同样,史蒂夫,安妮和乔伊都将担任 共同的产品或服务团队 所有人都将负责产品的支持和维护,而不是仅由运维团队负责。

You will 也 see automation of activities becoming increasingly important to an organisation doing CD and 开发运维. This is because, in order to achieve the repeatable, regular and successful process of releasing software that we expect from CD and 开发运维, organizations 必须 转到自动化流程。手动流程太容易出错并且效率低下。

开发运维 promotes collaboration between developers and other technology professionals

开发运维 culture is commonly associated 与 持续交付 because they both aim to increase collaboration between developers and 运作 teams, and both use automatic processes to build, test and release software more quickly, frequently and reliably. These are 所有 things that people like us want.
While 发展 teams often see the most immediate benefits of process improvements, there are lots of benefits of CI, CD and 开发运维 to the rest of us. Put simply, I believe that organisations practising CD and embracing a 开发运维 culture will deliver more valuable, reliable software to their customers, more often. That’一定要很好,对吗?特别是如果你’re on “the 商业方面.”

下次我会更多地谈论 为什么 您应该关心这些概念。一世’将解决它可能对您的业务产生影响以及如何参与其中。如有任何疑问,请在评论中与我联系。这些文章的全部目的是赋予您权力并告知您与业务相关的技术实践。问题很棒!


 

有用的术语

签到

的process of pushing local 发展 code changes to the common source repository.

CI服务器

用于构建和测试源代码的工具。 CI服务器将告知开发人员最新的代码构建是否成功以及是否继续通过测试。

开发环境

开发人员在哪里创建,集成,构建和测试代码。

部署管道/管道

这是史蒂夫和安妮的一组阶段’代码更改需要先完成,然后才能交付生产。通常,这些将是“构建”,“单元测试”,“功能测试”,“性能测试”和“部署”。不同的自动化测试将在不同的阶段运行。仅当代码通过整个部署管道后,才能将软件交付生产。

绿色建筑

Green is an indication of success. A green version or build is one where it has passed the tests for that particular stage of the 发展 and delivery process. Generally, a build or version of the software will not be promoted to the next stage of the 部署管道 unless it is “green”. 的opposite of a 绿色建筑 is a red build (see below).

Incremental 发展

不要与 iterative 发展 (见下文)。增量开发是一次构建一点产品直到全部完成的过程。每增加一个小块,这些小块可以大也可以小。您可以将CI与增量开发结合使用,但是通过增量开发很难实现持续交付或连续部署,因为您必须等待所有增量完成才能交付价值。一个很好的例子说明了增量开发和迭代开发之间的区别: 杰夫·帕顿’s Mona Lisa.

积分

个人或团队编写的所有代码都需要合并。我们称这种集成。在持续集成中,我们通常意味着需要定期整合个人的软件。在连续交付中,我们通常意味着将来自不同团队的软件集成在一起以创建整个产品。

Iterative 发展

不要与 incremental 发展 (see above). Iterative 发展 is where a little bit of the product gets built at a time and is refined until it is complete. 的product is built iteratively where the same pieces are reworked each iteration. Change is expected and planned between features in different iterations. You can use CI, 持续交付 or 持续部署 与 iterative 发展. A great illustration of the difference between incremental and iterative 发展 is 杰夫·帕顿’s Mona Lisa.

主/干线/主线

的“master”, “trunk” or “mainline”分支是源存储库的主要分支。大多数人都这样做 树干-based 发展, meaning that they will always integrate their changes to 主线. Others do 基于分支 发展 when individually developers will have their own branches, or teams will have branches for different features.

生产环境

这是部署或发布软件的地方。使用您的产品或网站的客户最有可能使用此环境。也称为“生产中”,“生产中”或“实时”。

红色打造

Red is an indication of failure. A red version or build is one where it has not passed the tests for that particular stage of the 发展 and delivery process. Generally, a build or version of the software will not be promoted to the next stage of the 部署管道 如果 it is “red”. 的opposite of a red build is a 绿色建筑 (see above).

源库

这就是源代码所在的地方。史蒂夫(Steve)和安妮(Annie)拥有自己正在处理的代码的本地版本(意味着在自己的计算机上),但是源存储库将包含 所有 开发人员签入更改后的代码。

测试自动化

需要高质量的测试自动化来进行持续集成和持续交付。测试是检查软件是否可以正常运行的方法。自动化测试是经过编码的测试,一旦将代码检入公共源存储库中,它们便会自动运行。

在CI领域,每次集成和构建软件时都运行单元测试。如果测试未通过,则该软件的版本将被确定为“不起作用”,“红色”或“损坏”。在某些工作场所中,发生这种情况时会出现“红灯”或悲伤的声音。

如果构建损坏,则Steve或Annie(无论谁犯了故障代码)都需要“修复”,“使其绿色”或“使其正常工作”。他们可以通过对代码进行更改来修复它或删除破坏它的先前更改来实现。

单元测试

单元测试是代码中的自动化测试,用于测试低级的单个代码段,以确保它们可用并按预期工作。单元测试被认为是实践CI和CD的前提条件。

更多资源

您还可以阅读本文的后续内容–  Why 持续交付 and 开发运维 are Product Managers’ Best Friends.