QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:454319

评论

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

DEX领域第一个运用整合思维的DeFi协议 SumSwwap潜力巨大

币圈资讯

In-depth Java synchronized

0xABC

Java并发 并发编程 Monitor

《几何代数计算入门(计算机视觉)》

计算机与AI

计算机视觉 计算机图形学

OpenHarmony 1.1.0 LTS 版本正式发布

开放原子开源基金会

开源 开放原子开源基金会 OpenHarmony

HBase三个重要机制

五分钟学大数据

HBase 4月日更

使用FFmpeg开发的那些事

Bob

音视频 ffmpeg 开源文化

深圳龙华携手腾讯云 加快推进区块链先行试验区建设

CECBC

和老大的相爱相杀中,让我终于搞懂了函数式接口

麦洛

Java 函数式接口 Lambda java8

framework源码,Android学习路线指南,已整理成文档

欢喜学安卓

android 程序员 面试 移动开发

火爆火爆!最新分享给大家:Boss直聘转发超80W次的一套超全面试题总结

比伯

Java 架构 面试 程序人生 计算机

「开源免费」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之动态表单设计器(五)

crudapi

Vue crud 动态表单 quasar cruapi

一篇文章告诉你什么是EGG Network(阿凡提)以及什么是EFTalk

币圈那点事

你看起来很美味?独家揭露视频推荐系统AI秘方

白洞计划

【资深猎头分享】程序员面试如何避坑?

Java架构师迁哥

flutter开发环境搭建,京东面试真题解析,分享PDF高清版

欢喜学安卓

android 程序员 面试 移动开发

redis Redis缓存穿透解决方案

Sakura

4月日更

聊聊云厂商的指标监控组件

耳东@Erdong

Prometheus 4月日更 #Grafana

spring的IOC使用以及原理

邱学喆

spring ioc 对象创建 属性注入

如何从Telegram下载一整套可爱的猫猫表情包?

彭宏豪95

GitHub 效率 社交 4月日更

Linux mkdir 命令

一个大红包

4月日更

NA(Nirvana)Chain“以应用而生”如何强势突围

区块链第一资讯

线上PHP服务故障排查之路

风翱

PHP-FPM 线上事故 4月日更

MapReduce优化

大数据技术指南

hadoop 4月日更

Boss直聘转发超120W次Java全栈面试题!已帮我拿下5个Offer!

Java架构追梦

Java 面试 架构师 阿里巴巴面经总结

使用Composition API在Vue3中创建防抖搜索输入框

devpoint

vite Vue3 防抖

用OpenCV制作庆祝武汉重启一周年短视频

老猿Python

Python OpenCV 音视频 图形图像处理 引航计划

读《非暴力沟通》

箭上有毒

读书笔记 4月日更

别当工具人了,手摸手教会你 Jenkins ! 码农很低调

比伯

Java 程序员 架构 计算机 技术宅

如何引入TDD实践

顿晓

TDD 4月日更

区块链技术驱动商业银行开展供应链金融业务的创新路径

CECBC

Dubbo 学习笔记(一) Hello,Dubbo

U2647

dubbo 4月日更

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