写点什么

我们实施 DevOps 的挑战之三 —— 先流水线?还是工具化?

  • 2020-04-15
  • 本文字数:1937 字

    阅读完需:约 6 分钟

我们实施DevOps的挑战之三 —— 先流水线?还是工具化?

从去年 11 月以来,基本上都在写一些成长心得与技术管理类的文章,也有不少朋友问我:“你之前写的 DevOps 系列的连载呢?晃点我们喽?” 如果说这是晃点,还不如说是纠结更合适,因为 DevOps 这东西并不是一天两天的体力活,它更类似 ‘搭积木’ 这样的细致活,在这个过程中充满不确定,节奏中有前进、有倒退。


这种纠结,会导致原本顺理成章的事情在短时间内中断,作为一直倡导落地总结性原创输出的我,与其急急忙忙,还不如 “让采坑多一点” 再写出来。


本系列的两个月轮空,请允许我啰嗦一下,下面继续唠 DevOps。


前两篇,我谈到在「敏捷文化」与「配置中心」的实施过程中所遇到的挑战,并基于实际场景与背景的前提下是如何应对的。其实,自好买提出持续集成、持续交付、持续部署以来,以上两个问题就从来不是核心问题,原因很简单:


文化:慢慢培养,培养不到想要的境界,就坦然面对去接受;

配置:纯技术问题,更容易解决,狠一狠心就行了;


那么,核心问题是什么呢?


对于应用研发来说,如果有一个平台,能够提供项目协作和持续交付两大功能,并将交付形成从需求到反馈的完整闭环,最终提供流水线式的一站式平台,那该是件多么美好的事情。


可是,梦想终究是梦想,现实终究是现实,如果平台提供者每天都在憧憬着梦想,那么当下的痛点又有谁来解决呢?

01 为什么流水线的落地如此困难?


好,先看下我们最初设想的美好蓝图:利用自动化手段,将标准化落地。


这张图展示的是一个常见的新增应用研发过程,我们先在版本管理系统中注册完相关信息,再从「配管系统」中将 master 拉出开发分支进行开发,通过「配置系统」提交相关应用配置信息,然后在「测试系统」中利用自动化测试手段完成测试,最终合并成 release 分支,提交至「部署系统」完成发布。


为了规范操作,提高协作效率,避免错误,我们需要一套平台话流水线来承载这一切。


以上这个看似没毛病的故事,在落地的过程中却遇到了一些困难,主要表现为 “平台使用者” 的出发点与 “平台提供者” 不一致:


1.收益周期:有限的资源必须优先保障业务实现,有多余的资源满足技术改进,每次投入都应该立即有收益,如果连续投入都看不到效果,那我不干;

2.效率优先:用一堆工具就能搞定,界不界面,流不流程不重要,无法容忍建设性等待,能用就行。

3.资源成本:用了这个平台如何才能让我人肉化变为自动化?如果用了你的平台,我还需额外支出更多成本,那我情愿自己来。

4.依赖路径:随着测试与运维进入 FeatureTeam 之后,平台化逐渐失去原有的需求来源,而 FeatureTeam 更愿意自己当即解决痛点,而不依赖于其他团队。


对于大部分金融类企业,「效率至上,结果导向」都是基本原则,在遇到这么多困难时,我们开始思考,在推动流水线一站式平台之前,我们还能做什么?

02 用工具化提升效率,再来谈流水线

其实,如果可以用一堆工具就能解决的事情,非要搞个平台,整一堆界面才能实现的东西,在落地过程中先天就具有劣势。


好吧,我们暂时忘记那张美好的蓝图,通过某个系统的试点,通过工具化的方式,先把持续集成玩透,让使用者快速获得收益。


  • 某系统的痛点与需求(持续集成)

  • 1.测试活动各环节是独立运行的,无法充分利用夜间空闲时间,不便于为研发提供快速反馈的服务。

  • 2.因系统依赖性强,测试环境需部署多系统,但部署耗时长,部署环境容易出现遗漏,造数据难度高。

  • 3.接口测试需手工替换环境上的 dubbo 包,增加测试环境准备时长,上线包不等于测试包。



(第一阶段)


  • 第一阶段:某系统的工具化解决方案(持续集成):

  • 直接使用 Jenkins 组装 CI 场景

  • 通过 Jenkins 脚本,实现数据初始化、构建、部署、调用自动化测试脚本(Python)

  • 在核心接口中,手工编写两套 APP,一套用于 Mock,一套用于正式;

  • 配置更新继续停留在手工阶段;



(第二阶段)


  • 第二阶段:某系统的流水线解决方案(持续集成):

  • 提供 CI 流水线,并支持 Mock 功能:


1.通过 Jenkins 脚本,数据初始化;

2.部署系统(自研): 构建、部署;

3.自动化测试与流程(自研): CI 流水线,mock 测试;

4.服务治理功能(自研): 基于 Dubbo 支持动态路由功能,满足 Mock 场景服务;

5.资源系统(自研):?(暂时没想透)

6.配置系统(自研):?(暂时没想透)


当然,无论从哪个视角来看,这个方案已不像 DevOps 了,只是简单的用「Jenkins+自动化脚本+自研工具」解决一些人肉化的工作罢了。不过这个没关系,至少通过这样的方式,我们可以在一个月内提升效率,释放资源。


用未来的视角展望一下,最终是否完成那张美好的蓝图,又有谁关心呢?毕竟,系统也好,平台也罢,是给人用的,不是用来装 B 的。


今天咱就唠到这吧,下回咱们来谈谈 —— 在 DevOps 中,那些高度集中的基础服务。


本文转载自头哥侃码公众号。


原文链接:https://mp.weixin.qq.com/s/VhiuYIG9DBTLq6oekKF7cg


2020-04-15 16:43619

评论

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

【TcaplusDB知识库】什么是TcaplusDB数据库?

tcaplus

【TcaplusDB知识库】GO快速上手TDR表的增删查改操作

tcaplus

【TcaplusDB知识库】如何在windows上部署 TcaplusDB Local版

tcaplus

【TcaplusDB知识库】TcaplusDB本地索引介绍

tcaplus

【高并发】通过源码深度分析线程池中Worker线程的执行流程

冰河

Java 并发编程 多线程 高并发 异步编程

【TcaplusDB知识库】TDR表是什么?有什么属性?

tcaplus

干货分享:细说双 11 直播背后的压测保障技术

阿里巴巴中间件

阿里云 云原生 中间件 全链路 PTS

林昊:开发者如何提升写代码的硬实力丨Go+ 1.0 发布会干货分享

七牛云

Go 语言

许式伟:Go+ v1.x 的设计与实现丨Go+ 公开课 • 第一期

七牛云

Go 语言 goplus

网易云信发布虚拟形象实时互动融合 SDK ,元宇宙大幕即将开启

网易云信

人工智能 数字化 元宇宙

【TcaplusDB知识库】Java快速上手TDR表的增删查改操作

tcaplus

【TcaplusDB知识库】C++快速上手PB表的增删查改操作

tcaplus

参会指南 | 2021MongoDB南京技术沙龙

MongoDB中文社区

mongodb

黄东旭:写给后端程序员看的认知心理学丨Go+ 1.0 发布会干货分享

七牛云

Go 语言

vue3 学习笔记 (一)——mixin 混入

码仔

Vue3 mixin

【TcaplusDB知识库】快速上手TDR表的增删查改操作

tcaplus

【TcaplusDB知识库】如何部署TcaplusDB Local 版

tcaplus

程序员的硬核浪漫 — 女友专属语聊房(内附源码)

ZEGO即构

音视频 语聊房 demo源码 即构科技

【TcaplusDB知识库】GO快速上手PB表的增删查改操作

tcaplus

【体验有礼】Serverless 极速搭建 Hexo 博客

阿里巴巴中间件

阿里云 Serverless 云原生 Hexo 中间件

【TcaplusDB知识库】条件过滤说明与更新

tcaplus

【TcaplusDB知识库】PB表定义示例

tcaplus

【TcaplusDB知识库】TDR 表中Tcaplus的相关属性

tcaplus

HarmonyOS 3.0.0开发者预览版全新发布

HarmonyOS开发者

HarmonyOS ArKUI 3.0 ArkCompiler 3.0

【TcaplusDB知识库】预设Schema表类型介绍

tcaplus

【TcaplusDB知识库】如何对数组进行操作

tcaplus

【TcaplusDB知识库】PB表数据类型介绍

tcaplus

明道云商业化成果巡礼|2021年11月

明道云

【TcaplusDB知识库】TcaplusDB全局索引介绍

tcaplus

【TcaplusDB知识库】Client工具的功能介绍

tcaplus

【TcaplusDB知识库】TDR表数据类型有哪些

tcaplus

我们实施DevOps的挑战之三 —— 先流水线?还是工具化?_语言 & 开发_头哥侃码_InfoQ精选文章