QCon 全球软件开发大会倒计时2个月!讲师已确认60%+ >>> 了解详情
写点什么

DevOps 实践 - 打造自服务持续交付 - 上

  • 2017-07-04
  • 本文字数:2726 字

    阅读完需:约 9 分钟

一. DevOps 转型的动机

我们的客户是一家海外本土最大的金融保险集团,他们在发展到一定规模以后,意识到自己就像一头笨重的大象,举步维艰,通过对整个交付流程的思考和分析,发现了以下一些严重影响交付速度的问题:

  1. 一些好的关于产品改善和创新的想法很难落地。设计到一些遗留系统的配合:调整、部署、扩展等,使团队对发布没有信心。新的服务或者应用的构建,很难快速上线,被卡在了生产环境部署阶段。

  2. 各种不同种类的应用、服务的部署方式和流程不一致。运维部门作为一个支持部门,很难为大量团队提供快速反应。运维人员也对起需要部署和运营环境之上的产品不够了解。

  3. 微服务壮行过程中,交付团队难以做到快速集成和部署。运维团队对微服务的部署运维方式不理解,依旧老瓶装新药,很难适配新架构下的交付模式。开发团队大多关注代码和架构,对于产品如何在能在生产环境稳定运行、需要考虑哪些安全性和可持续性的因素并不是很了解。

二. 问题分析和挑战

通过对这些问题和各个团队反馈的深入分析,发现其中最大的瓶颈在于交付团队与运维部门之间的各种依赖和沟通浪费,而这个瓶颈又是解决大多数问题的前提。

图 1

我们将瓶颈具象化后(如图 1),可以看到两种团队之间其实是存在一堵墙的,一是因为传统的部署流程非常繁琐和低效。二是因为两种角色关注点和目标的不一致。

如果在这样的情况下,想实现微服务架构转型,实现更快速和安全的交付,只会更快的暴露出这堵墙引起的各种问题。开发阶段,系统的架构和依赖环境都是 Developer 说了算,对生产环境的关注度不高。部署、发布阶段,Operations 会考虑如何构建一套稳定的基础设施,又如何去部署和运维开发的产物,但是往往对于产物的了解不充分,对于产物的周边生态和与它们关系的了解也不够。

那么引入 DevOps 文化,消除开发与运维之间的壁垒,逐步打造更高效的交付流程就成为我们破局的关键,那我们应该怎么做呢?

改革之初,我们发现并去尝试了 Bimodel(双模 IT), 我们看看它是否能解决我们的问题:

先简单介绍一下什么是双模 IT:

它将 IT 系统分成了两种模式:

  1. 一种是新型的数字化、高市场适应性的 IT,这部分业务聚焦企业新市场和业务的开拓,创新和发展,强调 IT 自身对于市场的高适应力。

  2. 另外一种模式下,我们则需要稳固发展,对于传统模式我们倾向于更加严谨和标准的流程去保护现有业务,稳定性比速度更加重要。

我们从采用这样一种模式的实践案例中发现:组织内部会出现连两种速度的交付流程,好的情况可能是采用敏捷开发流程的交付线,有着快速的交付能力,相反,对于继续采用传统开发流程和运维方式的团队,保持着稳定但低效的交付能力。 从业界很多公司的现状和发展趋势来看,双模 IT 确实是很多组织存在的现状或是必然经历的过程,但不是一个好的模式,从实际的交付过程来看,存在 4 点问题:

  1. 双模 IT 的划分方式更多是基于软件系统,而不是从业务活动出发进行的,所有软件系统的交付都应该是面向业务价值的。

  2. 双模 IT 会让我们误以为速度的提升会引起质量的下降,但是对于我们在 ThoughtWorks 的很多敏捷实践中学到的:随着交付的推进,质量内建是团队共同负责和持续改进的重点。交付速度的提升,往往都伴随着质量的保障,而不是忽视质量。

  3. 实际生产中,一个新的产品或者功能往往会依赖很多遗留系统提供的服务,如果它们仅仅只能达到稳定和低效的交付,对企业来说对市场整体的响应能力也会越来越低。

  4. 企业的创新不仅仅只是从零创造一个新的产品,很有很多机遇现有的资源。一个新的系统和功能往往不仅会既涉及到新服务、应用的创建,也会涉及到遗留系统的修改,调整和改造。

由此可见双模 IT 是在以一种试图掩盖问题的方式来逃避目前最重要的问题:开发和运维之间的壁垒。感觉像是一个病人先是放弃治疗,然后又努力的寻找延长寿命的方法,有些隐患终会爆发。

三. 打造自服务持续交付

紧接着,我们开始采用了一种看似不可行的方式开启了 DevOps 转型, 建立公有 DevOps 团队。有很多人可能会说这是一种反模式,怎么可能会建立一个团队专做 DevOps 相关的事情,那和以前的运维部门又有什么区别? DevOps 提倡的 Dev 与 Ops 高频度合作的文化是不是就无法大面积传播了?因此我们需要很明确的定义我们对这个团队的期望和它的职责是什么,它是怎样和交付团队合作,影响交付团队,最终能让 DevOps 的文化可以大面积传播。 这个团队的目标是要像杠杆一样,翘起更大面积的 DevOps 变革。所以我们认为公有 DevOps 团队应该与其它的端到端交付团队的人员构成是一样的。不同的只是目标和价值,主要体现在帮助更多的团队植入 DevOps 文化、优化持续交付流程。最终达到的目标是每个团队都可以自治,每个团队都可以进行端到端的开发、测试和部署,并可以自驱动的持续改进。与此同时,这个团队不仅仅只是为交付团队提供更多涉及基础设施、持续交付流水线、部署等活动所需要的自动化能力,还会支撑交付团队根据自身的上下文去定制和规划自己的持续交付流程和部署策略等。

现在,相比于 DevOps 团队的叫法,我们更愿意称呼这个团队为 Platform 团队,一个原因是我之前所说的避免被错误理解,另一个原因是随着各个交付团队逐步实现自服务持续交付,这个专有团队也有了更高的目标:持续打造和优化一个能够支持各交付团队快速交付的平台。

当时,首先我们为团队定义了新的工作方式:以自服务,自动化和协作 作为核心文化,希望团队通过提供便捷的基础服务,让交付团队拥有自动化的交付流水线,并通过更多的沟通协作,尽可能让每个交付团队都能够独立自主的设计、创建和更改自己的基础设施。然后再根据各个交付团队的实施情况和结果来对流程和服务持续改进。

所以第一件事,我们首先设计了一个高效的持续交付流水线,让 Platform 团队和交付团队建立触点:

如下图所示,蓝色的基因链为交付团队的持续交付环,红色的基因链为平台团队的持续交付环。两种团队以某种低耦合的弱连接进行全程协作,Platform 团队在整个端到端的交付过程中都要能尽量通过构建自动化能力来支撑交付团队能够快速、安全的进行持续集成、部署等活动。这样的合作方式也给我们提供了优化触点的可能性,也能够通过优化和改进,缩小这个持续交付周期,让交付更高效。

请原谅我在这片文章进入高潮时卖个关子,由于考虑到大家的阅读体验,所以文章分成了上、下两个部分,上半部分主要讲 DevOps 转型的动机、策略和方法,下半部分会讲我们如何实际应用基础设施即代码来建立 Platform 团队和交付团队的触点, 又怎样让遗留系统团队和微服务团队的交付速度成倍增加。敬请期待!


感谢张凯峰对本文的策划,木环对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-07-04 17:453987

评论

发布
暂无评论
发现更多内容

Spring 应用合并之路(一):摸石头过河 | 京东云技术团队

京东科技开发者

3 分钟为英语学习神器 Anki 部署一个专属同步服务器

米开朗基杨

基于大模型训练的编程助手

百度开发者中心

人工智能 大模型 智能代码助手

Design DaVinci Resolve Studio18中文破解版下载(达芬奇调色剪辑)

影影绰绰一往直前

教育场景数字化中音视频小程序的发展

Onegun

在线教育 教育 教育科技

Adobe Photoshop 2024直装版下载 (PS2024)

影影绰绰一往直前

iZotope RX 10 v10.4.2 汉化直装版下载(专业的音频降噪修复软件)

影影绰绰一往直前

DDD落地实践-架构师眼中的餐厅

EquatorCoco

架构 DDD 领域驱动

阿里巴巴中国站1688商品详情API实时数据获取:从零基础到精通的全程指南

Noah

如何下载和安装 Eclipse?

小魏写代码

用友签约新奥集团,共建智慧资产管理平台

用友BIP

资产管理

小程序如何帮助电商发力,寻找增长突破口

Geek_2305a8

Docker Linux快速安装及Nginx部署

这我可不懂

Docker Linux

医疗设备管理二维码:扫码查看使用说明、填写消毒记录

草料二维码

二维码 草料二维码 医疗设备 医疗设备管理

NeurIPS'23 Paper Digest | PromptTPP: Prompt Pool 与时序点过程模型的持续学习

机器智能社区

机器学习 持续学习 Prompt prompt learning 时序模型

软件测试开发/全日制丨Web端测试—JavaScript讲解 学习笔记

测试人

软件测试

六个提升SQL查询性能的核心技巧

高端章鱼哥

数据库 sql

一文详解 Java 限流接口实现

阿里技术

Java 分布式限流 限流算法 应用级限制 限流接口

Bartender 4 for Mac(菜单栏应用管理软件) v4.2.25完美激活版

mac

Bartender 苹果mac Windows软件 菜单栏图标

Adobe Acrobat Pro DC 2023中文直装版下载(PDF编辑软件)

影影绰绰一往直前

Adobe Photoshop 2023直装破解版下载(PS2023)

影影绰绰一往直前

JetBrains IntelliJ IDEA 2023 完美激活版下载

影影绰绰一往直前

BetterZip 5 for mac(专业解压缩软件) v5.3.4中文注册激活版

mac

苹果mac Windows软件 BetterZip 压缩和解压缩工具

中间件是开箱即用的吗?为什么要开发中间件adapter?

华为云开发者联盟

开发 华为云 华为云开发者联盟

代码出错了,IDE竟然不报错?太诡异了....

互联网工科生

ide 代码 ChatGPT

ICT行业“样品”相关业务挑战及解决方案介绍

用友BIP

ICT行业供应链

mac电池最大充电限制软件:AlDente Pro 激活中文版

mac大玩家j

Mac软件 电池管理工具 充电管理

如何实现APP安全加固?加固技术、方法和方案

Geek_66e2f3

Python工具初步认识

快乐非自愿限量之名

Python C语言 开发语言

大模型训练中断,断点续传助力快速恢复

百度开发者中心

人工智能 深度学习 大模型

Modbus Slave 注册版下载(调试工具)

影影绰绰一往直前

DevOps实践-打造自服务持续交付-上_语言 & 开发_钟健鑫_InfoQ精选文章