本期分享内容为《平台化 DevOps—云计算与云原生模式下 DevOps 的建设实践》。目前,DevOps 越来越成为大家当前建设的热点,伴随着基础设施的转型和应用框架的转型,更多的业务偏向云端和 C 端的场景,促进了 DevOps 的发展。在本次沙龙上,腾讯云 CODING DevOps 资深架构师余朋飞为大家介绍了在云计算和云原生两种模式下,如何推进 DevOps 的建设和实践。
企业 IT 架构演变历程在 2007 年之前,企业还未产生 DevOps 的概念,大多还是基于物理机的模式。2012-2014 年是第一波上云的热潮,企业纷纷将传统的物理硬件转换到虚拟机的结构上。之后,容器的发展推动了应用的转型,微服务越来越被大家所提及,对应 DevOps 这个概念也越来越被大家所推崇。所以第二波上云是业务从底层迁移到云上。第三波是云原生,整个 IT 基础设施,无论是从硬件端、中间件以及所依赖的数据库等资源全部能够在云上提供服务。 基于这个模式,更应该被关注的是整个软件开发本身业务需求的梳理,到整个业务的运营,这个阶段从开发态,从运营态和服务调度的模式都有新的改善。
DevOps 一直致力于怎么更好地维护应用的生命周期。在 DevOps 1.0 时代,这个时代是将基础资源做标准化,更多的是针对应用架构采取单体或服务总线的架构,对应的模式还是以虚拟化为主。 然而在整个业务发展过程中,更应该面向的是 DevOps 2.0 服务管理,整个应用架构和基础设施的架构随之也会变化。接下来就具体看一看在这两种不同的管理模式下,整个 DevOps 的建设到底是什么样的方式去推动和落地它的。
云计算模式下的 DevOps业务上云给大家带来了什么?我们需要解决哪些问题?以下总结了几方面目前业界比较关心的点。首先因为基础设施的爆炸式增长,导致环境配置管理和维护愈发困难,持续部署层面需要发布的节点越来越复杂;在业务推向虚拟化基础设施的时代下,业务架构变得更加复杂,对应部署成功率,相应的系统稳定性也会下降;另外由于底层云资源带来的便利,在流量冲击的情况下需要做好资源和应用的弹性;最后,随着业务对 IT 的诉求越来越频繁,需要更快速反馈整个业务的诉求。
因此, DevOps 的建设迫在眉睫,从需求到最终上线运营的全生命周期里需要进行全方位改进——比如需要更好更标准的需求管理工具,需要通过自动化手段快速管理对应的环境,能够通过自动化测试把质量建立起来,最后能够更好地处理在运营阶段的事故。在这个阶段,大家更聚焦的核心是自动化,怎么通过 DevOps 的手段来强化自动化流程。在自动化效果基础上伴随的是标准化和版本化,在自动化的同时也要做好相应的质量内建以及 DevOps 过程度量,因为只有将过程度量好之后才能评估 DevOps 建设的效果,质量内建也是保证 DevOps 建设过程中软件的质量能够得到很好的控制。
从这几个目标来看,核心指标包括生产效率、软件研发效率,生产控制中的产品质量,对应的成本节省。在软件研发过程中,通过可靠、可重复的流水线可以帮助我们更快速、更高效地生产 IT 软件或对应的服务。
CODING DevOps 流水线实践下图为当前 CODING 面向客户所推的 DevOps 流水线实践。
基于 CODING 平台,从代码拉取开始,基于内置的代码静态扫描模块来保证代码静态检查,包含代码规范、缺陷、重复率等不同的维度,另外,云端的构建环境能够保证各种不同的构建编译,结合基础设施的管理能够将自动化部署到对应的测试环境,帮助在整个流水线过程中做到测试质量管理,让质量在整个流水线过程中有比较好的保障。最后,单一的制品来源能够保证独立存储制品。到了生产阶段,我们更多关注基于业务运营的过程怎么做灰度和 A/B Test 的部署模式。
研发规范在建立流水线时,需要遵循一系列的研发规范。
流水线建设过程中需要将这些规范囊括起来,流水线并不只是打包工具,不是通过流水线将代码构建成制品就结束了,而是能够在流水线过程中标准化整个研发过程。