持续交付的 What、Why 及 How

Kohsuke Kawaguchi创建的Jenkins作为软件交付的核心工具,推动了千万企业的持续交付与DevOps进程。本文分析了持续交付框架、敏捷/持续交付/DevOps成熟度现状、DevOps转型策略等内容。

Kohsuke Kawaguchi(KK)于2004年开发了 Jenkins 项目的前身(Hudson),一开始就是为了解决他自己的关于自动化的需求。他自己也没想到13年后,Jenkins 成了软件交付过程中的核心工具,驱动着千万企业的持续交付与 DevOps 过程。

这次主题演讲KK系统的分析了持续交付与 DevOps 的体系、现状、路线图和模式,和 Patrick 在 DevOpsDays · 北京站的演讲一样,大神为我们点亮了命星!

整理的重点内容:
1. 持续交付框架分析
2. 敏捷/持续交付/DevOps成熟度现状、级别划定、改进四象限与路线图等
3. DevOps转型策略
4. 工程实践简介
5. 持续交付的黄金思维圈

1、流程线已经改变过一次世界

福特在引入流水线生产之后,Model-T 的组装时间缩短了8倍。1.3万名员工生产了30万量汽车,超过了300家竞争对手的总和,这就是效率的神话。

不过后来丰田超越了福特,在不确定性越来越突出的现在,单纯的效率已经不能满足企业的竞争,所以精益、敏捷、DevOps 才会出现,继续探索软件开发新模式、拓展效率和质量的新边疆。

持续交付的 What、Why 及 How持续交付的 What、Why 及 How

2、软件正在吞噬世界

这个是共识,这是全人类的挑战和机遇,对我们从事工程效率和过程改进的人来说,不断改进软件交付的方式和效率,没有止境。

持续交付的 What、Why 及 How持续交付的 What、Why 及 How

3、头号需求:业务连续性(不停机)

各大权威机构对 IT、DevOps、Continuous Delivery 的预测和评估。

持续交付的 What、Why 及 How持续交付的 What、Why 及 How

我认为业务连续性也只是其中一项需求而已,整体上来讲,我们要解决的两个问题是:Build the things right and Build the right things。

从 KK 的 PPT 里获取的信息是,他认为,持续交付和自动化是我们需要的答案之一。

持续交付的 What、Why 及 How持续交付的 What、Why 及 How

4、持续交付框架分析

持续交付的 What、Why 及 How持续交付的 What、Why 及 How

KK 的持续交付相关内容梳理的很清晰。这张图也可以说是 DevOps 的管理与工程实践框架。KK 也强调了 DevOps 是一组文化方法和技术实践。

维度:

  1. 阶段:产品定义、计划、编码、编译、构建、单元测试、分析、集成、集成测试、打包、Place、压力测试、验收测试、发布、部署、监控
    其中的构建和编译、单元测试并列,不清楚这里的构建表示什么?我理解的构建时编译、打包、或者在加上单元测试、代码分析的整体。自动化构建的目标就是要输出(高质量)可以部署和测试的软件包。
    另外,关于Place也没有找到对应的解释,有点像部署或者分发
  2. 环境
  3. 开发环境
  4. 预发布环境(类生产环境)
  5. 生产环境
    关键中缺少独立的测试环境,从图上的分布看,应该是包含在Development中的
  6. 方法
  7. 敏捷
    「对特性进行识别、排序、调整的增量开发方法」。不太理解,敏捷的具体方法框架有很多,包括Scrum,XP,Kanban(准确的说属于精益方法)。还有 SAFe,Less 等规模化框架。
  8. 持续集成
    持续集成是持续交付的基础,持续交付是 DevOps 的核心工程实践。非常重要。
  9. 持续交付
  10. 持续部署另外,红色框的逻辑没有理解明白,有高手请指点。
5、生存还是毁灭,你可以选择

每年的 State of DevOps Report 都会公布四个关键指标的数据:部署频率、周期时间、部署失败率、故障修复时间。高效能IT组织和低效能IT组织的差异非常大。KK的这两张图也非常形象的说明了这个问题。

持续交付的 What、Why 及 How持续交付的 What、Why 及 How

6、现状和方向
6.1 敏捷团队占比

现状是上游敏捷(管理过程,比如Scrum)的团队占比33%,下游敏捷(持续交付)的团队占比13%。

这也符合国内的情况,很多团队刚开始做敏捷的时候都是从管理过程开始敏捷,大多从 Scrum 入手,但是效果一般都不尽如人意。

我认为持续集成和自动化测试是敏捷的两条腿,想要敏捷跑起来,此二者必须同时建设才能让敏捷体现其快速响应变化的价值。

持续交付的 What、Why 及 How持续交付的 What、Why 及 How

6.2 非敏捷团队占比

根据 KK 的数据,目前有87%的团队,依然没有实现下游的敏捷,即持续交付和持续部署的实施较少或者不成熟。这会导致价值的交付依然长达数月之久。

持续交付的 What、Why 及 How持续交付的 What、Why 及 How

6.3 成熟度级别

KK 将敏捷(CD、DevOps)的级别划分为团队级,跨团队级,企业级。这个和 DevOps 之父 Patrick 的 DevOps 5个精进级别颇为相似。

持续交付的 What、Why 及 How持续交付的 What、Why 及 How

企业级的敏捷和 DevOps 还有很长的路要走。企业级的改进需要组织、文化都要共同变化。

编者:之前在参加敏捷培训时,老师提到诺西在敏捷方面做的很早也很深入,摩托做 CMMI 和 6 Sigma 也做的很好,但是这些企业现在都不在了。组织、战略、文化的敏捷至关重要。下边的人玩儿的很嗨,只是用正确的方法在做错误的事情而已。颇有感触!

6.4改进四象限

KK 基于团队级、跨团队级、企业级以及上下游阶段,将改进方向划分为四个象限。

持续交付的 What、Why 及 How持续交付的 What、Why 及 How

1. 团队级的敏捷 2. 团队级的CD 3. 企业级的敏捷 4. 企业级的DevOps(我相信2017和2018年,国内企业一定会迈进企业级的DevOps转型和落地)

6.5改进路径与模式

KK 基于四象限将改进划分为2条路径和2种模式
路径一:
从团队敏捷到企业级(组织级)敏捷,再到企业级 DevOps
持续交付的 What、Why 及 How持续交付的 What、Why 及 How
路径二:
团队级敏捷—>团队级持续交付—>企业级敏捷—>企业级 DevOps
持续交付的 What、Why 及 How持续交付的 What、Why 及 How

我所了解的企业,偏向于类似第二种的路径,一开始都在团队级别进行敏捷和持续交付的尝试,逐渐成熟推广复用,规模化

持续交付的 What、Why 及 How持续交付的 What、Why 及 How

7、工程实践

持续交付的 What、Why 及 How持续交付的 What、Why 及 How

关于持续交付,KK重点强调了:A straightforward and repeatable deployment process is important for continuous delivery.

7.1 架构与实现技术
  1. 特性开关
  2. 灰度发布
  3. 微服务
  4. 蓝绿部署
  5. 金丝雀发布
  6. 凤凰环境
  7. 不可变基础设施

以上技术对发布和部署都有很大的提升,特性开关可以调整应用的运用时状态,灰度发布逐步的切换流量,微服务可以做到单个服务的独立发布和部署。

7.2 基于Jenkins的CD/DevOps生态系统

持续交付的 What、Why 及 How持续交付的 What、Why 及 How

Jenkins是驱动整个持续交付和DevOps的核心组件。

8、DevOps 黄金思维圈

以上就是我在研读 KK 的 PPT 过程中的思考和记录,没到现场,所以感觉很零散。恰好最近刚接触一个概念:黄金思维圈,如下图所示:
持续交付的 What、Why 及 How持续交付的 What、Why 及 How

本文地址:https://www.linuxprobe.com/what-why-how.html


Using Continuous Delivery, you can bring software into production more rapidly, with greater reliability. A Practical Guide to Continuous Delivery is a 100% practical guide to building Continuous Delivery pipelines that automate rollouts, improve reproducibility, and dramatically reduce risk. Eberhard Wolff introduces a proven Continuous Delivery technology stack, including Docker, Chef, Vagrant, Jenkins, Graphite, the ELK stack, JBehave, and Gatling. He guides you through applying these technologies throughout build, continuous integration, load testing, acceptance testing, and monitoring. Wolff’s start-to-finish example projects offer the basis for your own experimentation, pilot programs, and full-fledged deployments. A Practical Guide to Continuous Delivery is for everyone who wants to introduce Continuous Delivery, with or without DevOps. For managers, it introduces core processes, requirements, benefits, and technical consequences. Developers, administrators, and architects will gain essential skills for implementing and managing pipelines, and for integrating Continuous Delivery smoothly into software architectures and IT organizations. Understand the problems that Continuous Delivery solves, and how it solves them Establish an infrastructure for maximum software automation Leverage virtualization and Platform as a Service (PAAS) cloud solutions Implement build automation and continuous integration with Gradle, Maven, and Jenkins Perform static code reviews with SonarQube and repositories to store build artifacts Establish automated GUI and textual acceptance testing with behavior-driven design Ensure appropriate performance via capacity testing Check new features and problems with exploratory testing Minimize risk throughout automated production software rollouts Gather and analyze metrics and logs with Elasticsearch, Logstash, Kibana (ELK), and Graphite Manage the introduction of Continuous Delivery into your enterprise Architect software to facilitate Continuous Delivery of new capabilities Table of Contents Part I: Foundations Chapter 1: Continuous Delivery: What and How? Chapter 2: Providing Infrastructure Part II: The Continuous Delivery Pipeline Chapter 3: Build Automation and Continuous Integration Chapter 4: Acceptance Tests Chapter 5: Capacity Tests Chapter 6: Exploratory Testing Chapter 7: Deploy—The Rollout in Production Chapter 8: Operations Part III: Management, Organization, and Architecture for Continuous Delivery Chapter 9: Introducing Continuous Delivery into Your Enterprise Chapter 10: Continuous Delivery and DevOps Chapter 11: Continuous Delivery, DevOps, and Software Architecture Chapter 12: Conclusion: What Are the Benefits?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值