我为什么觉得DevOps好

写在前面

最近疫情严重,正好利用这个时间,把自己之前的Blog和印象笔记的东西搬搬家,整理整理,希望在疫情过去后,自己也能坚持把自己平时工作的关于技术和管理的实践多写写,一起交流。

产品研发得码多少人

首先打算写一个自己平时在工作中,对于日常的工作流程和工具进行一个整理,也就是DevOps。本人一直在创业公司,有很多人觉得创业公司不需要技术管理和流程,就不到10个人,为什么需要这么多乱七八糟的。在讲这个问题之前,我们想想,现在当下互联网或者物联网相关的产品,需要的角色有多少呢?

角色 职责 备注
RD 研发 各种客户端、云端、大数据等
QA 测试 点点点测试、自动化测试等
PM 产品经理 和程序猿相爱相杀的家伙
OP 运营 数据运营、内容运营、PR推广等
OPS 运维 最苦逼的技术人员
UI 设计 GUI、视觉设计等
BD 商务 负责吹牛逼的
硬件设计 PCB、原理图设计 如果涉及硬件产品
嵌入式 嵌入式驱动开发 如果涉及硬件产品
系统驱动 系统驱动开发 如果涉及硬件产品
结构设计 结构设计开发 如果涉及硬件产品
ID设计 外观设计 如果涉及硬件产品

我整理了下,我们需要的上面这么多角色,当然,在很多创业公司,都是一人兼多职(工资就一份)。但是和我们需要的产品发布和迭代节奏完全相反的是,老板肯定需要快速稳定的发布产品,1周恨不得更新一次feature list。

产品研发流程有多复杂

软件研发项目管理流程.jpg

上面的流程,基本是软件研发的基本流程,为了保证各种质量,涉及到各种角色和阶段,需要整体项目负责人有很强的管理和协调能力,才能保证项目的预期发布和质量管控。纯靠人去跟踪,基本管不好。

迭代速度 快!快 ! 快!

下面的桥段,大家肯定遇到过:

老板说:我们先做一个DEMO,BD需要这周末去个客户演示拿单子。演示完了,然后。。。。

老板再说:客户那边演示的不错,要求1-2周内上线(程序猿懵逼,下面就是产品和程序猿的互撕了)

我们有多少产品和项目是从DEMO改起来的,软件质量、架构体系、产品价值和前景,是否符合公司核心价值,这些都不是考虑范畴了,基本属于,后续全是坑。

任何公司的核心价值都是产品质量的优秀,优秀的产品,我们这里不谈什么是好产品,我们这里聚焦的点是,产品技术怎么保证稳定快速发布新产品。答案就是DevOps。

DevOps的核心价值

DevOps由开发(developments)和运维(operations)组成,字面意义就是鼓励跨部门协作。DevOps的出现其实是敏捷软件开发的产物,下面是敏捷宣言的经典摘录:

个体和互动 高于 流程和工具,
工作的软件 高于 详尽的文档,
客户合作 高于 合同谈判,
响应变化 高于 遵循计划,
也就是说,尽快右项有其价值,我们更重视左项的价值。

DevOps想要强调的是:个体和互动是非常重要的,用自动化代替重复人工工作,把更多的时间留给大家的沟通和交流,产生真实的价值。

举个简单例子,PM想尽快了解开发的进度(眼见为实,其实UI更需要眼见为实),那就要求RD和QA,需要在测试环境进行快速的增量交付,并且交付的内容可以让PM和UI等利益相关方,尽快看到,并且可以第一个吃狗粮。如果是跨部门的传统合作,试想下,难度是不言而喻的。但是DevOps可以通过一系列自动化和持续交付的工具,以及统一产品目标的理念,让部门壁垒消失,工具提醒人员,去做这个阶段需要做的事情,大家都在管道内,进行有条理的工作,管道的终点就是产品稳定快速发布。

DevOps的流程和工具

  • 流程:DevOps是为了产品交付服务的,交付肯定是有流程的,所以我们先需要明确流程
  • 工具:根据语言、技术人员素质、产品特点,选择合适的工具拓扑,其实最主要的工具包含以下几类:需求管理工具、代码库、构建工具、工件库、测试工具、部署工具、监控工具、问题跟踪

后面几篇文章,会陆续分享下,我在创业公司,是怎么搭建的这套DevOps体系和如何使用的。

谢谢阅读。

推荐阅读更多精彩内容