比如 Google 提出的 5 个 DevOps 原则,这套原则中必须依赖于工具辅助的部分只有后两点,更多的则是对于开发组织形式的内省:
精简组织架构;
愿意承担一部分试错带来的损失;
分阶段地一小步一小步地进行转型;
最大化地利用工具和自动化流程;
对所有的过程和结果进行记录和分析。
所以 DevOps 不是简单的开发软件化,而是企业的学习能力不断提升的结果,将企业改造成敏捷应对的学习型组织,运用新的工具,优化组织架构和流程,不断地进行自我革命和创新的方式。工具是辅助,而非基础。
在弄清楚了 DevOps 的宏观定义之后,我们再来观察一下 DevOps 目前在国内的实践现状。根据南京大学 «DevOps 中国•2018 年度调研» 的调研报告,目前设有 DevOps 实践团队的公司中,科技和互联网行业占比接近 70%。其他行业的从业者对 DevOps 的认知还存在一定的不足。
这与我们的调研走访体验一致:大多数企业都愿意尝试运用 DevOps ,但是在实践 DevOps 中,普遍碰到了比较大的困难。主要是以下三个原因:
部分团队为了做 DevOps 而做 DevOps,并没有真正的从业务的角度出发来考虑。
如前文所说,DevOps 不是银弹,高水平的研发团队在 DevOps 实践中将快速找到研发质量与业务增长的平衡点。但对于许多仍然在使用中心化的研发组织形式的团队来说,DevOps 的尝试无法立即获得肉眼可见的增长数据,思索与尝试带来的对团队的训练可能会是第一份收获。
新生代互联网公司诞生于 DevOps 理念已经相对成熟的年代,且互联网公司天生地将迭代速度作为追求目标之一,使得这些公司能够在发展的初期,就将 DevOps 的理念融入到公司的架构设计中。
上图是 Netflix 的整个系统架构。如此复杂的系统架构同时还能每天迭代几十个版本,无法通过传统的研发管理模式来维护,只有通过实践 DevOps 的理念,来优化组织的分工、资源和能效,才能得以实现。在这样的组织里,已经不需要有人了解所有模块是做什么,每个人只需要对自己的模块负责。
而很多企业,为了巩固和提高自己的市场竞争力,非常急于达成上述高效的状态,并且希望能一步到位。国内其实大部分团队都没到大规模实践 DevOps 的时间点,有些团队甚至连分支开发、并行开发的方式都没有。我给这类的企业建议是:不要想着一口气吃成个胖子,一步一步来,先理解 DevOps 的理念和对业务的实际意义,然后搭建一只小的 DevOps 团队来承接一项新业务,旧的业务仍然使用旧系统,双轨并行,等待小团队适应了 DevOps 的管理节奏之后再向其他团队进行推广。
之前出过一篇关于 DevOps 的专题报告《四周年 · 专题报告:双速 IT》,也可以作为参考。
实践 DevOps 的原则中很重要的一点就是对工具的运用及依赖工具搭建合适企业的自动化流程。但是目前市面上缺乏成熟的 DevOps 工具链,各个服务商的细分工具层出不穷,企业为了搭建整套 DevOps 流程,需要研究几十种工具,并选取其中的 7-8 种进行落地实践。非常依赖于管理者的项目经验,没有 DevOps 经验的团队起步将会比较困难。
以 CODING 为例。2018 年之前 CODING 产品仅有任务及代码管理模块。我们是这样进行工作的:产品经理在 CODING 上撰写文档创建任务,研发 Leader 将任务分配给开发,开发完成后提交代码,并创建 MR,我们在本地部署了 Jenkins 进行持续集成进行构建和测试,再由其他工程师进行人工评审,通过后并到发布分支,进行预发布,再通过持续集成进行构建,自建 Docker registry 进行构建物管理。构建出的 Docker 镜像在测试环境和预发布环境上依次进行自动化测试及人工测试,测试通过后,使用我们运维自己搭建的工具进行部署管理。
目前 CODING 每天都进行产品迭代,可以快速响应用户需求并保证服务质量,但搭建这一整套的流程高度依赖于团队能力,门槛非常高。
既然 DevOps 这么难,坑这么多,为什么还要做呢?因为这是企业未来的长期诉求。
从大趋势上分析,未来所有企业都将是软件企业,制造软件、服务软件、构建于软件。比如全世界最大的出行公司 Uber,其实是一个软件公司,而非出租车公司。从企业自身诉求出发,中国的中大型企业已经逐步进入了创新驱动的阶段。无论是供给侧改革还是智能制造 2025 都要求企业修炼内功,提高效率促进创新。过去几年中在塑造前沿行业的 DevOps 理念将在 2019 年左右成为主流,成为企业能否在行业内脱颖而出的关键性因素。
在 Statsia 2018 年的报告中,有超过 72% 的企业或多或少地开始践行 DevOps 的理念,其中完整采用 DevOps 的比例高达 17% ,而在 2017 年这个数字仅有 10%。
真正能够实践 DevOps 的团队也会为自身的业务带来巨大的提升。根据 Puppt 的2017 DevOps State Report,DevOps 型团队将部署频率提高46倍,交付速度提高 440 倍。
可见,在国际上来说,DevOps 已经处于企业爆发性需求的前夜。而在国内公司中,新兴企业的成功实践也在为中国企业的 DevOps 输送方法论与有经验的专家。
字节跳动可以说是 DevOps 最佳践行者之一。在其创始人张一鸣看来:
公司的业务越复杂,人越多,组织就越大。这导致信息失效、(下属)向上管理和业务变大。他把类似组织的负规模效应称为“自嗨”,这是他所不能接受的。
故而字节跳动在组织架构上,总共只有 3 个核心部门:技术、Growth 和商业化,分别负责研发、推广和收入。
今日头条、抖音、西瓜视频……字节跳动的每款 App 都基于这三个部门来发展。在项目开始时,公司会为每个项目设置虚拟项目组,由三个核心部门抽调人员组成,试水成功后直接推广。所有产品共用一条技术线,快速试错。针对 App 类产品的快速迭代的业务特性,字节跳动依据 DevOps 理念对组织架构进行调整和优化,从结构上保证了技术支持业务创新的能力。
DevOps 的理念和优势被说了很多年,但一直都只在少量公司有能力实践。 软件的工程化历史还比较短暂,业务需求与技术理念都日新月异,前两年大量的团队还在为了研发新的业务疲于奔命,没有精力关注研发效能升级的问题。许多团队的研发管理还停留在靠微信喊话和 Excel 管理的阶段。
而如今,在市场遇冷和企业数字化转型的契机下,更多的公司开始将目光放在企业内部的效率提升和研发成本的控制上。
在 Netflix、Google 这样发展比较久的的巨型公司可以耗费大量的内部资源从底层服务开始从零搭建 DevOps 流程。而像字节跳动这样的新型公司可以如此快速实现敏捷,也得益于云服务的逐步成熟。
尤其是在当前环境下,运维业务逐步多样化和复杂化,很多传统的运维技术和解决方案已经不能满足当前运维所需,越来越多的团队选择使用 Docker kubernetes 等技术提升运维能力。同时,云厂商的 SaaS、IaaS 和 PaaS 服务相对于传统的运维业务帮助企业节省大量硬件维护的成本和时间,让企业能专注于业务的发展与创新。
孙子兵法有云,凡兵法韬略,在道不在术。面对日新月异的的市场,企业必须逼迫自己不断的进行革新来应对市场变化。就像马化腾在互联网大会上提到的,现在互联网已经发展到了深水区,甚至是无人区。只有不断的迭代,迅速反应,才能应对未来的变化,而这也正是 DevOps 所强调的。