从决策者的角度理解 DevOps
在上两篇的文章中,我们分别从【员工】和【Leader】的角度去理解了 DevOps。
如果是一个决策者,应该如何理解 DevOps?
回顾
角色 | 理解 |
---|---|
员工 | 根据一个规则,拿着一系列工具,按照某个流程来完成工作。大部分的员工是不会去【感知】或者【质疑】流程或者工具。 |
Leader | 规则的制定者,实施者,需要根据团队情况,指定,改变,评估规矩。Leader 需要根据 CAMS 以及团队实际情况,构建团队文化,自动化,评估体系,共享体系。 |
Agile,DevOps 只是一种方式
不要有这种误区:
不做 DevOps 没有竞争力,做了 DevOps 就一定有竞争力。
举个例子,如果是一个3~5人的初创团队,DevOps 对于他们,不会有直接的帮助,更应该把重点放在拓展业务,打磨产品。
之前的文章中,我们一直在讨论 Agile,DevOps 这些概念,决策者视角下,这些只是提升【企业竞争力】的一种方式而已。
任何企业都可以有符合自身情况的更好方式,提升【企业竞争力】。
DevOps 能给企业带来什么?
身为决策者,需要了解 DevOps 能为企业带来什么,不能带来什么。
Puppet 将 DevOps 的获益归纳为了如下4类,我们再把这4类联系到企业核心要素中。
由此看出,DevOps 本身不会【直接提升】某个业务或者某个产品的价值,DevOps 提升的是企业的生产效率,从而提升企业竞争力。
DevOps 好比是欧洲先进【足球青训体系】,引入这个体系,无法让我们【立刻】进入世界杯,然而,这是变成【足球强国】的必要条件。
若想引入,如何去做?
如果想要通过 DevOps 提升【企业竞争力】,推荐决策者根据如下的顺序进行决策。
- 判断时机
- 找出问题点,选择实施顺序
- 自上而下推广
- 提供资源,调整架构
- 评估结果,给予肯定
判断时机 - 时候到了吗?
判断目前是否应该引入 DevOps,可以从【外部】和【内部】两个方面考量。
外部环境
DevOps 的生态发展即为外部环境,先来看看 DevOps 外部状况。
目前的调研结果,DevOps 的外部环境已经颇为成熟。
总体来看,人口,政策,成熟度等都有利于 DevOps 的推广。在我们看来,人口驱动是重点。
说白一点,人才的竞争会越发激烈。
1. 人口驱动 - 从人口红利到工程师红力
软件行业人口持续增长,国内人口逐渐呈现下降趋势,软件行业的人口红利逐渐消失。
截止2030年,全世界开发者,将有望突破4500万。
截止2025年,国内软件行业人口将有望突破 900万。
来自:关键软件领域人才白皮书
根据国家人口统计局的统计,国内现在面临着人口老龄化的趋势。
来自:中国人口报告2020
2. 行业驱动 - 软件行业持续增长
软件行业将持续增长,将会带动 DevOps 一同增长。
3. 技术驱动 – 云原生,容器技术推广
随着容器和云普及,DevOps 发展也得到了逐步发展。
4. 政策驱动 – 国内行业标准建立
2018年4月, DevOps标准项目“研发运营一体化能力成熟度模型”在中国通信标准化协会立项成功。
5. 生态驱动 – 开源社区
开源生态的不断充实和发展为开发和运维工程师提供了多样化的工具选择,构筑起DevOps丰富的资源池。
内部环境
内部环境的判断,决策者可以通过如下几个方面考量,如果企业内部已经出现了 1/3 以上的情况,决策者应该开始考虑 DevOps 了。
人员
- [x] 招聘效果不佳。
- [x] 员工离职频繁,新老员工能力停滞不前。
- [x] 员工加班情况频繁,且业务进度不佳。
- [x] 团队间出现内卷,相互竞争,浪费人力资源。
- [x] 内部骨干提拔比例低下。
产品
- [x] 产品创新停滞,业务扩展缓慢。
- [x] 产品自动化流水线缺失,频繁出现事故。
- [x] 出现内部产品同质化。
- [x] 产品成本居高不下。
评估
- [x] 企业内部技术/业务共享机制缺失。
- [x] 企业内部评估机制混乱。
文化
- [x] 企业文化无法落实到工作中。
找出问题点,选择实施顺序
有了内部环境的判断,也就有了问题点,不过,解决单点问题从来不是决策者希望看到的。
并且,先解决哪个问题,看起来都是【正确】的,很难作出判断。
我们可以从企业/产品的核心出发,选择实施顺序。 比如,企业需要的是提升产品迭代效率,那么首选的顺序应该是【自动化】,【评估】体系建设。
自上而下推广 - 决定 DevOps 的成败
我们确定了问题点,实施顺序,接下来一定要自上而下【强力】推广。这种项目,员工是很难体会其价值所在的。
导致的结果会是【敷衍了事】。因为,员工认为很难从中得到【提拔】的机会。
推进过程中,也会遇到各种阻力,只有一道明确的【圣旨】才可以让推广顺利进行。
Amazon 在 2002 年强制推行微服务架构,就是由 CEO Jeff Bezos 给全员发了一封邮件。
最核心的一句:Anyone who doesn’t do this will be fired.
The Bezos API Mandate: Amazon’s Manifesto For Externalization
提供资源,调整架构
提供资源
有了计划,提供资源肯定是必不可少的。目前,国内外有很多开源&付费的 Agile,DevOps 的相关产品和解决方案。我们会在后面的文章中介绍。
这里,我们只给出选型建议(当然,如果是出于拉投资等目的去引入 DevOps 产品,就另说了)。
- 不要一口气买下一站式平台所有功能,用不上。
- 选择云原生,K8S 原生的产品。
- 尽量选择有开源基础的产品。
- 不要让引入的 DevOps 产品卡住技术升级的脖子。
- 产品 + 说明书 + 培训是必备。
- 听听员工体验和口碑再决定。
调整架构
接下来的工作就是相应的架构调整了。对于不熟悉 DevOps 的团队来说,公司里一定要有这么几个角色。
如果企业里没有如下的角色,几乎无法推广 DevOps,只依赖第三方公司的产品【一定达不到】目的。
- DevOps 传播者团队:需要有一个团队或者个人不断针对业务进行革新,打出标杆,才可能会被模仿。
- 自动化架构师: 根据业务属性,可以对流程,测试等进行自动化架构设计的人/团队。
- 研发+测试工程师:每一个研发/测试都要逐渐转型。
- 质量+安全评估团队:最好由研发人员组成。
- 实用工具评估团队:新技术,新工具的评估者。
评估结果,给予肯定
根据 Atlassian 的评估,海外企业接纳 DevOps 的周期为1年,所以,决策者要对时间周期有心理预期。
各个团队的 Leader 需要根据实际数据来汇报 DevOps 的进程。举几个例子:
- 部署构建自动化百分比
- 测试自动化百分比
- 时间成本(Blocking time & Waiting time)百分比
- 产品的用户反馈
此外,很重要的一点,要给【做 DevOps】的团队/员工给予认可,否则,没有人会愿意去做【老板不认可】的事情。
总结
我们从宏观的角度分析了决策者在 DevOps 推广中的角色。
回顾我们之前的两篇文章,员工,Leader,决策者应该在 DevOps 上共同投入,否则,只会是一个面子工程。
角色 | 理解 |
---|---|
决策者 | 方向的掌舵人,要根据企业情况,确定实施顺序,提供资源,调整架构,给予评估及肯定。 |
Leader | 规则的制定者,实施者,需要根据团队情况,指定,改变,评估规矩。Leader 需要根据 CAMS 以及团队实际情况,构建团队文化,自动化,评估体系,共享体系。 |
员工 | 根据一个规则,拿着一系列工具,按照某个流程来完成工作,要积极接受变化,提升个人能力。 |
我们会在后续的文章中,深入介绍 DevOps 中的细节。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
优化技术专题-性能优化系列-针对Java对象压缩及序列化技术的探索之路
序列化和反序列化 序列化就是指把对象转换为字节码; 对象传递和保存时,保证对象的完整性和可传递性。把对象转换为有字节码,以便在网络上传输或保存在本地文件中; 反序列化就是指把字节码恢复为对象; 根据字节流中保存的对象状态及描述信息,通过反序列化重建对象; 一般情况下要求实现Serializable接口,该接口中没有定义任何成员,只是起到标记对象是否可以被序列化的作用。 对象在进行序列化和反序列化的时候,必须实现Serializable接口,但并不强制声明唯一的serialVersionUID,是否声明serialVersionUID对于对象序列化的向上向下的兼容性有很大的影响。 为何需要有序列化呢? 一方面是为了存储在磁盘中, 另一方面为了网络远程传输的内容。 Java实现序列化的方式 二进制格式 + 指定语言层级 JavaBuiltIn(java原生)、JavaManual(根据成员变量类型,手工写)、FstSerliazation、Kryo 二进制格式 + 跨语言层级 Protobuf(Google)、Thrift(Facebook)、 AvroGeneric、Hessian JS...
- 下一篇
聊聊如何实现一个支持键值对的SPI
前言 如果用过JDK提供的SPI机制的朋友,大概就会知道它无法按需加载。之前写过一篇文章聊聊基于jdk实现的spi如何与spring整合实现依赖注入。利用spring的依赖注入来实现spi按需加载,这种方案就是要借用spring。今天我们在聊聊另外一种实现方式,就是我们自己手写一个 实现思路 整体思路和jdk实现spi差不多,如果对jdk实现的spi不了解,可以查看我之前写的文章java之spi机制简介。差别就是我们在配置文件是以key-value的形式存在,形如 springMysql=com.github.lybgeek.dialect.mysql.SpringMysqlDialect 实现逻辑 1、约定好要进行解析的目录,比如META-INF/services/ private static final String SERVICE_DIRECTORY = "META-INF/services/"; 2、约定好要解析的文件名命名,比如 com.github.lybgeek.dialect.SpringSqlDialect 3、约定好文件内容格式,比如 springMysql=co...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Linux系统CentOS6、CentOS7手动修改IP地址
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2全家桶,快速入门学习开发网站教程
- 2048小游戏-低调大师作品
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境