DevOps落地实践点滴和踩坑记录-(2) -聊聊平台建设
很久没有写文章记录了,上一篇文章像流水账一样,把所见所闻一个个记录下来。这次专门聊聊DevOps平台的建设吧,有些新的体会和思考,希望给正在做这个事情的同学们一些启发吧。
DevOps落地实践点滴和踩坑记录-(1)
企业落地DevOps该买商用还是自己研发呢?
很多团队刚开始都会问这个问题,我的回答如下
- 如果团队人数少,技术栈或者技术债务不是很多,历史包袱不重,领导急于看到成果,可以使用devops商业产品。前提还是看商业产品是否满足你们目前场景。
- 自建工具链,分成简单工具搭建 和 更上一层的二次开发做平台,看你们需要哪种。
- 前者相对容易点,比如常见的gitlab+jenkins+harbor/nexus+kubernetes等这样的组合
- 后者 前期需要投入成本,还是看 你们目标是什么,解决什么问题。
以终为始,看目标,找合适的方案,是比较合适的。平台可大可小,功能也可大可小,解决的问题也可大可小,看看目前的问题是什么?
有哪些好用的DevOps价值流交付平台推荐?
国外
- Azure DevOps
国内
- Coding
- 蓝鲸
- JD行云
- 阿里云效
- 简单云ezone
- 华为DevCloud
国内很多,以上这些都算是整合各个环节比较综合的,其他像禅道、Ones等这些项目管理类平台虽然号称DevOps平台,但是他们更擅长垂直领域,不是综合性平台。
有哪些好用的DevOps VSDP(DevOps价值流交付平台)推荐? - 知乎
自研DevOps平台面临的问题
上面说的平台都很好,但是面对上千规模的研发团队,往往会有“心有余力不足”,“杀鸡用牛刀,但是还杀不了鸡”的感觉。说白了,就是买了还是做二次开发,并且往往还不是简单二次开发这么简单。听我细细道来
1. 企业内部各平台鱼龙混杂
对于中小型企业,你可以通过采购外部DevOps平台服务的方式,快速形成战斗力。但是对于一定规模的企业,并不是一穷二白,而是各种平台已经存在了。
这是一个企业的案例,很明显管需求的在OA, 管工单在一个系统,项目管理在另外一个系统。那我买了外面的平台(一般都是全家桶的解决方案),到底和我内部系统怎么融合呢?
- 举个例子,如果公司已经用了JIRA, 外面大部分DevOps平台都自带同类功能的模块,你让我把JIRA干掉,买你的产品,尽管JIRA国内有点水土不服,但是这需要管理者做出抉择,哪怕是数据迁移也是需要成本和时间的。
2. 自研平台本质还是“企业的数字化转型”
对于传统软件企业,他们要的平台不仅仅是一个跑CI/CD,做部署的平台,更重要的是能够度量内部变革成果的平台。提到度量,就意味着你要打通整个研发过程所有环节,从外部客户需求,到内部研发环节,到对外发布,再到产品反馈,形成闭环。
可以想象,变革过程会遇到多少不同的角色,不同的平台,所以研发打造自己平台的过程也是企业内部自我变革的过程,这个过程会很漫长,也会很痛。
- 对于互联网企业,他们必须拥抱变化,快速抢占市场,所以从基础设施到人员素质,一定程度上比传统软件企业会好很多,数字化程度会好很多,他们关注更多其实是线上的快速发布,回滚,试错,监控告警。技术栈上,相对容易统一,个性化定制会很少,一般都是主干开发主干发布,或者主干开发分支发布。
- 可是,对于传统企业,他们的特点是产品线丰富,客户定制化需求多,重产品定制(轻运维),他们更需要规范化的管理和规则限制。但是往往他们的技术设施(容器化,环境快速生成)比较落后,研发人员不太重视工程化手段解决问题,技术栈没有很好统一,工具各个团队各自为政,因此整合工具链条就变得更艰难。
所以自研平台本质还是企业自我的变革和决心,如果把传统软件企业比作工厂,通过自研平台进行功能和数据的整合,就是希望构建一个真正的“数字化“工厂,让信息流动和共享。
3. 自研平台建设离不开部门间的拉通对齐
如下图所示,DevOps涉及诸多研发阶段和领域
- 项目管理
- 需求/缺陷跟踪
- 代码管理
- 构建/部署/测试
- 发布
- 日志监控
在企业内部刚起步阶段,可能缺乏专业的DevOps专家和人员,以为只是通过建设不同领域的工具平台,不知道如何拉通,为什么拉通,甚至可能不同的部门团队负责不同领域的工具。
缺乏最终目标的对齐和部门间拉通,可能导致如下问题
- 影响整体技术架构设计,可能导致很多返工
- 部门间配合缺失,各自为政,不仅无法形成合力,还可能相互掣肘,相互可能在做重复工作
- 无法制定长远平台演进规划
- 数据拉通遥遥无期
- 最终可能导致DevOps变革的失败,团队士气低沉,领导层看不到预期效果
解决思路-组织结构
- 成立虚拟的过程改进团队,包含组织级研效管理团队,平台工具建设团队,效能/工程教练团队,对业务研发团队进行支撑
- 业务研发团队对效能提高负主要责任,每个月业务技术leader 汇报进展;业务研发团队需要证明自己技术架构改进,解决成员的抱怨;需要对自己团队负责;
- 杜绝“工具平台团队”对效能结果负责的局面,工具团队一般提供的是通用的功能,对于“北极星”指标(ps:产品成功的关键指标)影响有限; 对技术负责,打包更快,上线工作流更好
- 效能/工程教练团队要走进一线,和团队成员面谈,深刻了解团队“痛点”,进行辅导
- 组织级研效管理团队(一般是PMO组织),建立组织级规范进行发布;(PS: 实际情况中,该部门可能需要DevOps工具/教练团队的支撑,特别是工程技术方面,避免规范无法落地)
- 需要一位德高望重,技术能力威望都还可以的领导统领过程改进团队 (PS: 解决拉通过程的困难,帮助协调资源,敢于拍板)
4. 围绕“版本”和“关联”做文章,构建研发领域模型
- **”版本“ **记录了整个研发过程的演进,通过“版本”作为纽带,串联起来真个研发过程的元数据,再合适不过。
- ”版本“的规范化,也是流程规范化的重要体现,只有“版本”规范化,过程才可能规范化。试想,如果你的组织连规范的版本号以及发布规范都没有,其他自动化手段就根本不用提
- “版本”关联元数据 - 在笔者看来,是整个DevOps平台的重要目标之一,如果没有做到这一点,必然影响价值流打通
构建研发过程领域模型,可以帮助平台建设者理清业务实体之间的关系,指导平台的技术演进,串联起领域实体也是整个DevOps平台的重要目标一致
5. 围绕组织内真实业务场景,避免照虎画猫
在我们自己建设DevOps平台过程中,往往会参考一些商用的平台,这个无可厚非,但是要避免“机械模仿”。任何一家公司的DevOps演进都不是一蹴而就,或多或少都有历史原因,模仿的同时要思考他们为什么要这样做,是不是真的适合自己的场景,借鉴可以,但是要弄清楚为什么需要。
举例说明
- 大部分公有云的DevOps平台基因里都或多或少都有互联网的基因,它们的对于持续部署发布(灰度,蓝绿)会格外重视,那么作为传统软件企业,你是否真的需要?
- 再比如,这些平台的流水线编排都很灵活,但是在你的企业过度的灵活是否真的有用? 也许开发团队只需要傻瓜式的,甚至无脑,严格控制的流程呢?
熟悉组织的软件研发活动,通过和业务研发团队座谈的方式,收集真实的痛点,在“灵活模式”和“死板模式”中需求平衡。功能做的再酷炫,不能解决实际问题,也是没有任何价值的。
如图所示,可以通过绘制业务流程图的方式,将平台的业务流程和实际的业务场景结合,指导平台分阶段建设,业务与技术演进相结合。
总结
上面我分享的几个问题,相信你都会遇到,这里仅供参考。每个组织想要的DevOps平台是完全不一样的,别人的场景功能未必就适合自己,主要还是以解决问题为目的。
DevOps实践过程是漫长和艰难的,平台能力是整个组织一起努力的结果,不要试图你的团队单枪匹马搞成这个事情,离不开你的“客户”(需求),离不开上层领导的支持(自上而下推动),离不开组织运营规范的牵引(流程规范)。
DevOps落地实践点滴和踩坑记录-(2) -聊聊平台建设的更多相关文章
- DevOps落地实践点滴和踩坑记录-(1)
记录初衷 本人一直在从事企业内DevOps落地实践的工作,走了不少弯路,也努力在想办法解决面临的问题,期间也经历过不少人和事情,最近突然有想法把经历过的,不管好的不好的都记录下来,分享给和我一样的一线 ...
- ABP框架踩坑记录
ABP框架踩坑记录 ASP.NET Boilerplate是一个专用于现代Web应用程序的通用应用程序框架. 它使用了你已经熟悉的工具,并根据它们实现最佳实践. 文章目录 使用MySQL 配置User ...
- python发布包到pypi的踩坑记录
前言 突然想玩玩python了^_^ 这篇博文记录了我打算发布包到pypi的踩坑经历.python更新太快了,甚至连这种发布上传机制都在不断的更新,这导致网上的一些关于python发布上传到pypi的 ...
- 互联网研发效能之去哪儿网(Qunar)核心领域DevOps落地实践
本文从业务目标角度出发,确定了开源+自建模式搭建 Qunar 研发工具链整体生态:通过 APPCODE 打通工具链,流程规范化自动化:多种手段+发布门禁助力质量提升:建立应用画像确定运维最小单元,可发 ...
- unionId突然不能获取的踩坑记录
昨天(2016-2-2日),突然发现系统的一个微信接口使用不了了.后来经查发现,是在网页授权获取用户基本信息的时候,unionid获取失败导致的. 在网页授权获取用户基本信息的介绍中(http://m ...
- CentOS7.4安装MySQL踩坑记录
CentOS7.4安装MySQL踩坑记录 time: 2018.3.19 CentOS7.4安装MySQL时网上的文档虽然多但是不靠谱的也多, 可能因为版本与时间的问题, 所以记录下自己踩坑的过程, ...
- ubuntu 下安装docker 踩坑记录
ubuntu 下安装docker 踩坑记录 # Setp : 移除旧版本Docker sudo apt-get remove docker docker-engine docker.io # Step ...
- SpringBoot + Shiro + shiro.ini 的踩坑记录
0.写在前面的话 好久没写博客了,诶,好多时候偷懒直接就抓网上的资料丢笔记里了,也就没有自己提炼,偷懒偷懒.然后最近参加了一个网络课程,要交作业的那种,为了能方便看下其他同学的作业,就写了个爬虫把作业 ...
- DEVOPS落地实践分享
DEVOPS落地实践分享 转载本文需注明出处:微信公众号EAWorld,违者必究. 引言: DevOps的理念已经说了很多年,其带来的价值逐渐被接受,很多企业也逐渐引入了DevOps.目前普元DevO ...
随机推荐
- 十二张图:从0开始理解对称/非对称加密、CA认证、以及K8S各组件颁发证书原由
目录 一.对称加密 二.对称加密-不安全 三.非对称加密 四.非对称加密-不安全 五.对称加密和非对称加密结合 六.对称加密和非对称加密结合-不安全 七.Https的做法-引入CA机构 八.乘胜追击理 ...
- 【Java面试】@Resource 和 @Autowired 的区别
Hi,大家好,我是Mic. 一个工作2年的粉丝,问我一个Spring里面的问题. 希望我能从不同的视角去分析,然后碾压面试官. 这个问题是: "@Resource和@Autowired&qu ...
- pyenv安装及使用教程
pyenv安装及使用教程 pyenv 安装 git clone https://github.com/pyenv/pyenv.git ~/.pyenv # 编辑 bashrc vim ~/.bashr ...
- sort基本用法
sort 选项 -u --去除重复行 -r --降序排列,默认是升序 -o --由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > n ...
- oracle-安装与访问、卸载
安装oracle 官网(http://oracle.com/ )下载oracle -->Oracle Database -->点击接受Accept --> 下载11g(Downloa ...
- Turtle绘图——python简单上手小案例
Turtle绘图 Turtle模块提供了在二维平面上移动的环境. Turtle可以实现位置.航向和各种可能的状态和动作. import turtle as tu roo = tu.Turtle() # ...
- 我不就是吃点肉,应该没事吧——爬取一座城市里的烤肉店数据(附完整Python爬虫代码)
写在前面的一点屁话: 对于肉食主义者,吃肉简直幸福感爆棚!特别是烤肉,看着一块块肉慢慢变熟,听着烤盘上"滋滋"的声响,这种期待感是任何其他食物都无法带来的.如果说甜点是" ...
- Python爬取某短视频热点
写在前面的一些话: 随着短视频的大火,不仅可以给人们带来娱乐,还有热点新闻时事以及各种知识,刷短视频也逐渐成为了日常生活的一部分.本文以一个简单的小例子,简述如何通过Pyhton依托Selenium来 ...
- Linux for CentOS 下的 keepalived 安装与卸载以及相关命令操作之详细教程
百度百科解释: keepalived 是一个类似于 layer3, 4 & 7 交换机制的软件,也就是我们平时说的第 3 层.第 4 层和第 7 层交换.Keepalived 的作用是检测 w ...
- Linux系列之查找命令
前言 Linux 有四个常用的查找命令:locate.whereis.which 和 find.本文介绍它们的区别和简单用法. locate命令 这个命令将检查你的整个文件系统,并找到该关键词的每一次 ...