写点什么

杀死“DevOps 团队”

  • 2020-01-13
  • 本文字数:2283 字

    阅读完需:约 7 分钟

杀死“DevOps团队”

DevOps 团队的持续存在为那些懒惰、不诚实且被误导的人在 IT 流行词的庇护下假装做出积极的改变提供了机会。


在一个充斥着流行语的企业里,人们通常会说:


  • 我们有敏捷吗?看,我们计划好了后三个月的 sprint!

  • 我们有 Kubernetes 策略吗?看,只要再给我们一个月,就可以让它上生产。

  • 我们有 DevOps 吗?看,我们招了很多 DevOps 工程师,他们在各自的团队里负责编写 YAML 文件、运行 Ansible 脚本。


DevOps 团队是一个非常常见的反模式,为了让高层相信他们正处在流行技术的最前沿,采用了一些让人迷惑的术语,但实际上,这些角色的职责和文化与几十年前并没有什么两样。


如果你的公司里有“DevOps”团队,那么可以肯定的是,你们所做的并不是 DevOps,甚至很可能完全相反。

真正的 DevOps

现在,我可以告诉大家,我的一些非常好的朋友就是 DevOps 工程师,真的!


我们先来定义一下真正的 DevOps:


你来开发,让它跑起来,然后它在凌晨 4 点把你吵醒。


所以,当 HR 把没有做过开发的“DevOps 工程师”的简历塞给我时,我会觉得很荒谬。朋友,不要再这么做了。



有关 DevOps 更准确的定义或许是:


DevOps 是指让一个跨功能团队负责应用程序或服务的整个生命周期,从创建到运维和支持。


我们先来看一下 DevOps 都有哪些好处。

DevOps 会让哪些东西变得更好

真正的 DevOps 会带来更高的效率,缩短产品的上市时间,并提升产品的质量,原因如下。


开发软件和负责软件运行的人是同一波人,他们对软件的质量和可维护性要求得更为严格,因为在软件发生故障时,他们有可能在凌晨 4 点被叫醒。


除此之外,他们就像是一种“共同体”,关注彼此的问题。


他们之间不存在沟通边界,降低了变更成本。沟通边界会带来延迟(比如出现问题了要提 ticket,等待另一个团队来修复问题),而他们之间的沟通却是同步且及时的。


在写这篇文章的时候,一位工程师向我抱怨说,一个客户的 REST 应用程序要求使用加密数据才能执行操作,否则就报错。为了生成这些加密数据,需要先运行其他应用程序,并调用一个特殊的端点。因此,需要有人负责部署这个应用程序,并监控它的运行情况,在发生问题时调用端点,用加密的数据重新配置应用程序,然后重启。12 Factors 并没有明确指出这个用例,但我非常确定的是,如果应用程序开发人员就是部署应用程序的人,那么他们可能已经找到了一个更加自动化的解决方案。

NotDevOps

在你们所处的组织里,是否看到过以下这些 NotDevOps 迹象?


  • 有一个叫作“DevOps”的团队;

  • 有一个叫作“DevOps 工程师”的岗位;

  • “DevOps”团队不负责开发应用程序;

  • 就算软件系统在凌晨 4 点出了问题,开发团队也不需要做什么;

  • 开发团队需要通过“DevOps”团队来帮他们处理问题。


如果你们的组织里有以上这些迹象,那么不好意思:你们做的是 NotDevOps!不过好在不是只有你们在这么做,因为还有很多公司也在招聘“DevOps 工程师”。


在以前,我们管这些人叫系统管理员或配置管理员。他们懂 Linux,负责把开发人员的代码部署到生产环境。而在今天,如果你是一个懂 Puppet/Chef/Salt/Ansible/kubectl 的系统管理员,那么恭喜,你就是一个 DevOps 工程师,而且你的薪水会涨个 50%。


正如之前所说的,开发人员不需要让其他人帮他们做这些事情:


  • 创建 CI 管道/Jenkins 作业;

  • 创建 Git 仓库;

  • 把代码打包成 Docker 镜像;

  • 把代码部署到某个运行环境中;

  • 从运行的实例里获取日志。


如果开发人员需要让其他人帮他们做这些事情,那就是 NotDevOps!


如果是这样的话,你的雇主就无法从中获得任何好处。他们认为你们在做很酷的事情,但实际上你们在对他们“说谎”。


NotDevOps 比没有 DevOps 更糟糕——你给雇主制造了盲点,用各种好听的术语毁坏了那些做对了事情的人的声誉。


经常有企业向我们咨询如何能够更快地交付价值。交付价值的一个最常见的障碍是低下的流动效率,也就是说,更多的时间会被浪费在等待上,而开发活动和运维活动相分离是造成这种等待的最主要原因。

那么,DevOps 团队必须死吗?

当然不是。


我们要做的是把“DevOps”团队这个名字去掉,不要再管他们叫“DevOps”团队了。


我们不要再假装在做一些很酷的事情,而应该让人们真打实干。


如果这个做不到,最起码不要自欺欺人,或者“欺骗”那些付你薪水的人。

如果已经有了这样的团队,该怎么办?

那就让这样的团队通过构建自动化工具的方式为开发人员提供自助服务。


DevOps 团队不应该参与事务性的业务工作,但可以构建内部工具,为开发人员提供自助服务。通过这种方式,DevOps 团队为开发人员实现了真正的 DevOps,为他们提供了运维应用程序所需的工具:日志、指标、生命周期控制,等等。



DevOps 团队不应该只是为开发人员做一次性的工作,他们需要持续不断地收集开发人员的需求,把它们加入到产品待办列表中,然后逐个完成这些事项,为开发人员提供自动化的可重用解决方案,帮助开发人员更好地完成任务。他们要做的是长期的产品,而不只是满足临时性的需求。


我们把这样的 DevOps 团队叫作平台团队。尽管我也知道,在我们的行业,像“平台”、“服务”之类的术语所表达的意义正在被淡化。


如果你有一个 DevOps 团队,他们所做的事情都是正确的,那为什么要管他们叫“DevOps”团队,而不是根据他们所做的产品来命名呢?

做正确的事

让我们避开嘈杂的流行语世界,静下心来仔细理解这些术语的真正含义。如果企业不想办法减少浪费在等待上的时间和降低产品的上市时间,那么再昂贵的 DevOps 工程师也无法改进他们的价值交付过程。


与此同时,我们是不是应该叫停滥用术语的“恶习”?是不是不要再自欺欺人,总认为自己在做有意义的事情,但实际上并没有?


原文链接


https://www.engineerbetter.com/blog/kill-the-devops-team/


2020-01-13 16:543273

评论

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

算力新话题,畅聊算力之新民生

鲸品堂

算力网络 企业号 2 月 PK 榜

关于小程序游戏变现方式你还知道哪些?

没有用户名丶

前端开发 小程序游戏

嘉为蓝鲸携手麒麟软件共建国产化一站式DevOps解决方案

嘉为蓝鲸

DevOps 自动化运维 嘉为蓝鲸

兴业证券打造更“自然”的数字人,火山语音提供技术支持

科技热闻

架构实战营 10 期 - 作业 6

炮仗

支付对接常用的加密方式介绍以及java代码实现

京东科技开发者

Java 安全 哈希算法 加密算法 非对称加密算法

小游戏内测|小游戏脱离微信运行在其它 App

Onegun

微信小程序 小游戏 小游戏开发 微信小程序-游戏

我的快速调优线上服务器CPU利用率通用办法,震惊面试官

KINDLING

Java cpu 服务器 性能调优 ebpf

极客时间运维进阶训练营第十三周作业

9527

Java高手速成 | 单例模式实现方式——枚举

TiAmo

单例模式 枚举 Java 开发

前端图片最优化压缩方案

凉城

前端 图片处理 图片压缩 前端图片压缩

MASA Stack 1.0 发布会讲稿 —— 产品篇

MASA技术团队

.net 云原生 MASA MASA Blazor

Sugar BI 增强分析能力全场景解析

XxinQi

数据分析 可视化 BI 商务智能 预测模型

第六周作业-拆分电商系统为微服务

不爱学习的程序猿

十年老程序员:再见了Navicat,以后多数据库管理就看这款SQL工具

雨果

sql navicat 数据库管理工具

Portraiture4最新简体中文li磨皮滤镜插件

茶色酒

Portraiture Portraiture4

Boom 3D免费电脑环绕音乐软件2023最新版下载

茶色酒

Boom 3D

全新视觉,升维体验!全栈可观测中心嘉为鲸眼产品全新体验升级

嘉为蓝鲸

可观测 自动化运维 嘉为蓝鲸

高校数据库/SQL教学用什么样的SQL工具?管理更方便,学习更轻松

雨果

数据库管理工具 :MySQL 数据库 SQL开发工具

ChatGPT集成之前,让我们复习一下即将过时的知识

newbe36524

搜索引擎; ChatGPT

【Rust学习】内存安全探秘:变量的所有权、引用与借用

京东科技开发者

spring rust slice 企业号 2 月 PK 榜 可变引用

状态机的概念与设计

timerring

FPGA

《数字经济全景白皮书》出海篇:选对路径下好棋,热点出海行业如何实现增长?

易观分析

数字化 经济 出海

对线面试官:浅聊一下 Java 虚拟机栈?

王磊

java面试

嘉为科技蝉联信创工委会“卓越贡献成员”荣誉称号

嘉为蓝鲸

自动化运维 嘉为蓝鲸

关于Zebec生态的改进提案,以及即将上线的 Nautilus 链

BlockChain先知

重识Flutter 用于解决复杂滑动视窗问题的Slivers - part1

编程的平行世界

flutter 前端 an'droid

100 行 shell 写个 Docker

vivo互联网技术

Docker Shell

有关TCP协议,这是我看过讲的最清楚的一篇文章了!

程序员小毕

程序员 TCP 程序人生 计算机网络 架构师

成熟的自动化运维平台是怎样练成的?

嘉为蓝鲸

自动化运维 嘉为蓝鲸

杀死“DevOps团队”_服务革新_Daniel Jones_InfoQ精选文章