如果你正处于下列情形中 ,那这篇文章是为你准备的:

  • 你目前身处技术行业,你是产品经理,并且,你明白特性分支是什么,CD代表什么,DevOps文化是什么样子的。

  • 或者,你已经在实施敏捷,团队每周都会与您的产品人员会面,讨论故事和迭代。他们合作良好,他们此时构建的感觉比以往任何时候都要好。但是您的客户仍然不能更快地获取这些功能,你依旧要要等待版本发布后才能使用。你可能已经听说过像Etsy,Flickr和Google这样的公司,他们每天交付100次,但他们是如何做到的呢?

  • 又或者,你的开发团队想要实现CI/CD,并且你也听说了一些美好的事情,你依旧关心期间的一些变数。那么CD到底是什么呢?

让我们从一些定义和例子开始吧。

Continuous Integration (CI),持续集成

在传统的软件开发过程中,整合过程通常在每个人完成工作后,在项目结束时进行。 整合通常需要数周或数月时间,很可能也会非常痛苦。持续集成是将整合阶段提前到开发周期的一种做法,以便构建,测试和集成代码更经常地发生。

持续集成意味着在不同的团队成员间在不同的环境中分别为相同的产品编写软件,并将它们的更改集成在一个称为源码仓库库的地方。针各自编写的零碎代码构建组合成一个整体的软件,并按照他们期望的方式工作。

开发人员经常采用一个被称做持续集成服务器的工具为他们做构建和集成的工作。持续集成要求团队成员必须有可以自测的代码,这些代码可以验证代码如预期版的正常工作,这些测试被称做单元测试。当代码集成后所有的代码单元测试通过,团队将会得到一个成功的构建结果。这表明他们验证过了各自的变更被成功的集成到一起,同时代码如测试时预期的一样工作着。虽然集成后的代码成功的在一起正常工作,但它没有准备好上生产环境,因为它还没有在模拟生产环境中进行测试和验证。你可以在下面的连续交付部分中阅读更多关于持续集成之后发生的情况。

图1

为了保持正确的持续集成实践,团队成员的代码变更必须经常提交到主要的源代码库,并频繁地集成和测试他们的代码。通常是一小时多次,但至少每天一次。CI的好处是使整合成为非必要的事件。软件一直处于被编码和集成中。在CI之前,整合发生在创建过程的最后,只一次发生,并且花费了不确定的时间; 现在有了CI,每天都会发生,并且仅需要几分钟。

Continuous Delivery (CD),持续交付

我们回到我们的开发团队,持续交付意味着每次对代码进行更改时,都会集成和构建代码,以便在与生产非常相似的环境中自动测试此代码。通常,部署管道环境具有开发环境、测试环境和模拟生产环境,但这些阶段因团队、产品和组织而异。 例如,我们的Mingle团队有一个叫做“Cupcake”的阶段,它是一个模拟生产环境,而Etsy的模拟环境被称为“Princess”。

图2

在每个不同的环境中,编码写的代码测试结果不同。这个过程对业务来说是非常有力的。 这意味着,如果单元测试通过了所有的环境验证,那么你知道代码在生产环境时很可能也会正常工作。 一旦测试在所有环境中通过,您就可以立即决定您的最终用户是否获得最新的功能。而且,一旦您的开发人员完成构建,就可以随时为客户提供全新的、经过全面测试的工作软件。

Continuous Deployment(CD),持续部署

图3

从上图可以清晰的看出,要实现持续部署,首先需要持续交付。持续交付的前提在CI的基础之上,但最终是否应用到生产环境中去,还是通过手动的方式来进行,持续部署真正实现了全自动部署更新发布。

DevOps

“DevOps”一词来自“开发”和“操作”一词的组合。 DevOps是一种促进开发人员和其他技术专业人士之间的合作的文化,具体来说,在软件交付和部署过程中的沟通和协作,目标是更快速,更可靠地发布更好的质量软件。具有所谓DevOps文化的组织的共同特点是:自主多才技术团队,高水平的测试和发布自动化(持续交付)和共同目标多面手成员。

传统方式的软件交付过程如下:

图4

采用持续交付部署路线后,演变成以下的方式,见下图。

图5

DevOps文化通常与持续交付相关联,因为它们旨在增加开发人员和运营团队之间的协作,并且使用自动流程来更快速、频繁、可靠地构建、测试和发布软件。

题外话:此文是SUZIE PRINCE发布在mindtheproduct网站上的文章,第一次尝试着意译过来,便于大家初识敏捷开发、持续部署及Devops之道,第一次翻译难免有疏漏,还望各位见凉,点击原文即可英文原版文章。

产品经理人的持续交付和DevOps实践的更多相关文章

  1. [转载]持续交付和DevOps的前世今生

    作者/分享人:乔梁,20年IT老兵,腾讯公司高级管理顾问,敏捷和精益开发专家,持续交付领域先行者.曾就职于百度,国内多个知名互联网公司的企业教练. 历年QCon技术大会的讲师和专题出品人. 这是一个新 ...

  2. TOP100summit 2017:【案例分享】魅族持续交付平台建设实践

    本篇文章内容来自第10期魅族开放日魅族运维架构师林钟洪的现场分享.编辑:Cynthia 一.自动化建设历程1.1 魅族互联网发展的时间线 2003-2008年被称之为“互联网1.0时代”.2003年, ...

  3. [转]DevOps实战:百度持续交付体系与最佳实践大解密!

    本文转自:http://dbaplus.cn/news-21-471-1.html “互联网+”时代,软件产品要想满足快速增长的用户需求,高效.快速的迭代转型必不可少,面对时刻发生改变的互联网及业务模 ...

  4. [持续交付实践] 开篇:持续集成&持续交付综述

    前言 随着微服务架构与容器虚拟化技术的发展,持续集成与持续交付的概念又重新回到了大家的视野,越来越多的公司开始使用持续集成的系统来解决频繁发布带来的质量问题:使用持续交付的工具来实现代码在不同环境上的 ...

  5. 基于Jenkins的持续交付全流程设计与实践

    1 从理论开始 什么是DevOps? 近年来,随着DevOps理念的逐渐深入人心,企业逐渐意识到从看似重复的手工劳动中实现自动化流程处理,对于提高企业劳动生产力已经非常重要,尤其是面向互联网的开发者, ...

  6. 测试需要了解的技术之基础篇三__持续集成持续交付DevOps

    持续集成.持续交付.DevOps 1.容器技术Docker:容器技术介绍.Docker安装与加速配置.Docker基础命令.Docker搭建selenium.Docker搭建持续集成平台Jenkins ...

  7. 持续交付的Mesos与Docker导入篇

    变革这个词在当今的数字化时代司空见惯,IT技术每过一段时间就会有一起革新,从WEB2.0.虚拟化.云计算.大数据.微架构.DevOps再到今天的容器Docker与Mesos. Docker的出现方便了 ...

  8. 《DevOps实践:驭DevOps之力强化技术栈并优化IT运行》

    DevOps实践:驭DevOps之力强化技术栈并优化IT运行 主旨 这本书并非坐而论道,而是介绍了DevOps全流程中的许多实践,以及相应工具的运用.虽然随着时代的推移,工具将来可能会过时,但是这些实 ...

  9. DevOps-如何构建持续交付流水线

    引言 DevOps 是一套实践方法,在保证高质量的前提下缩短系统变更从提交到部署至生产环境的时间,其中持续集成和持续交付是 DevOps 里面非常重要的一环.本文讲述了达到自动化持续交付需要做的准备工 ...

随机推荐

  1. MQTT开源代理Mosquitto源码分析(访问控制篇)

    一.整体流程概览 从GitHub下载源码后,代理的源码在src中,同时还用到了lib库中的一些函数.对项目的工作流程有个大概理解是分析mosquitto的访问控制权限的基础,网络上已有很多中文博客在介 ...

  2. C#根据对象的指定字段去除重复值

    PersonInfo类: public class PersonInfo { public int Index; public string Name; public override string ...

  3. IT回忆录-1

    作为80后,差不多算是最开始一批接触互联网的人了.从用56K的猫拨号上网开始,不断地见证计算机和互联网的变化. 哥哥中考没考上,后来就去跟老师学计算机了.等他学完以后,我们家有了第一台电脑. 那个电脑 ...

  4. SignalR的简单实现(一)

    原文:SignalR的简单实现(一) ASP.NET SignalR是ASP.NET开发人员的一个新库,它使您的应用程序添加实时Web功能变得非常简单.什么是"实时网络"功能?能够 ...

  5. Tensorflow进阶

    第一章 图像领域,第\(i\)类图片提取到的特征: \[ feature_i=\sum_jw_{i,j}x_j+b_i \] 其中,\(j\)表示一张图片的第\(j\)个像素,\(b_i\)是偏置值( ...

  6. const char*和const char[]怎么识别?

    #include <iostream> using namespace std; template<typename T> class _ischararray_; templ ...

  7. Compile for Windows on Linux(交叉编译,在Linux下编译Windows程序),以OpenSSL为例

    OpenSSL for Windows In earlier articles, we have looked at how to create a gcc build environment on ...

  8. Delphi 与 VC 共享接口和对象

    我经常会用 Delphi 写一些工具和应用,为了扩展方便,大部分都会做成插件形式. 迫于某些原因,我的插件不得不用其他开发工具来完成,比如 VC. 于是有个大问题需要解决:如何让 D 和 VC 互相通 ...

  9. XML转义字符 如"&"

    解析数据 XML 解析器通常情况下会处理XML文档中的所有文本. 当XML元素被解析的时候,XML元素内部的文本也会被解析,例如: <message>Hello Word!</mes ...

  10. kubernetes使用http rest api访问集群之使用postman工具访问 apiserver

    系列目录 前面一节我们介绍了使用curl命令行工具访问apiserver,命令行工具快速高效,但是对于输出非常长的内容查看不是特别方便,尤其终端界面输入的东西非常多的时候,过长的内容不是特别容易通过滚 ...