什么是DevOps及为什么需要 DevOps

近些年来,DevOps这个词汇出现的频率越来越高,各种大会上经常出现 DevOps 专场,并随着分布式架构在业界的广泛实施,DevOps 和运维再一次成为社区的关注焦点。有人说,DevOps 是软件工程发展至今的第三次革命,可见它带给整个行业的影响是很深远的。

最近公司内部也开始向DevOps转型,开始设计和开发 DevOps 平台。虽然说DevOps在业界上已经有不少成功的案例,但是由于公司内部团队的文化和流程千差万别,可以说几乎找不到一个标准实施路线图,可以按部就班的在公司内部去落地和推行DevOps。就如DevOps它的“定义”到底是什么,好像从来没有人能说清楚。

现在,我们先来看看维基百科对 DevOps 的定义:

DevOps(开发 Development 与运维 Operations 的组合词)是一种文化、一场运动或实践,强调在自动化软件交付流程及基础设施变更过程中,软件开发人员与其他信息技术(IT)专业人员彼此之间的协作与沟通。它旨在建立一种文化与环境,使构建、测试、软件发布得以快速、频繁以及更加稳定地进行。

看完DevOps的定义,我估计也没谁能看懂这到底是在说什么。于是乎,每当提及 DevOps 是什么的时候,最常出现的比喻就是“盲人摸象”。毕竟每个人的视角都不相同,看到的 DevOps 自然也是千差万别。客观来说,从 DevOps 运动诞生开始,那些先行者们就从来没有试图给 DevOps 下一个官方的定义。当然,这样做的好处很明显,由于不限定人群和范围,每个人都能从自己的立场来为 DevOps 做贡献,从而使 DevOps 所涵盖的范围越发宽广。但是,坏处也是显而易见的。随着 DevOps 的不断发展,刚开始接触 DevOps 的人往往不得要领,只见树木不见森林,认知的偏差使得 DevOps 越发地神秘起来。

与其纠结于 DevOps 的定义,不如让我们一起回到起点,来看看什么是DevOps及为什么需要 DevOps 。

什么是DevOps

在介绍DevOps之前,我们先来看下传统的业务研发流程:开发人员开发完业务代码后,把自测通过的代码打包交给测试人员,然后测试人员把代码部署在测试环境中进行测试,如果测试不通过,就反馈 bug 给开发人员进行修复;如果通过,开发就把测试通过的代码交给运维人员打包,然后运维人员再发布到线上环境中去。由上可见,在传统的开发模式下,开发人员、测试人员和运维人员的职责划分十分明确,他们往往分属于不同的职能部门,一次业务上线流程需要三者之间进行多次沟通,整个周期基本上是以天为单位。如果我们能够把开发、测试和发布流程串联起来,就像生产流水线上那样,每个步骤完成后,就自动执行下一个步骤,无须过多的人为干预,那业务的迭代效率不就会提高很多吗?

是的,DevOps的思想就是如此。DevOps 是通过平台(Platform)、流程(Process)和人(People)的有机整合,以 C(协作)A(自动化)L(精益)M(度量)S(共享)文化为指引,旨在建立一种可以快速交付价值并且具有持续改进能力的现代化 IT 组织。DevOps 是一种新型的业务研发流程,也可以理解为一种新的技术思维,它摒弃了传统的开发、测试和运维严格区分的观念,把三者的角色融为一体,让服务的开发者负责从开发、测试到发布的整个生命周期,真正的承担起服务负责人的角色。

DevOps 作为软件工程的第三次革命,在数字化转型的大潮之下,几乎成了所有通过交付软件来提供服务的企业的必选项。因为,DevOps 不仅可以改善企业的软件交付过程,实现高质量和高效率兼得,同时也可以持续改善企业内部的工程师文化,提升员工信心,激发员工的活力和价值创造,从而帮助企业在 VUCA 时代占得先机,获得更大的成功。

为什么需要 DevOps

近些年随着微服务、容器化等技术的兴起,越来越多的企业将原有的单体应用架构项目逐渐进行微服务化,方便服务可以独立进行开发、测试和运维。但随着原有项目的不断拆分,微服务的数量越来越多时,却又仿佛陷入一个新的泥沼,无论是业务代码的开发还是测试和运维,工作量都比之前提升了很多。

因为在采用单体应用架构时,一个业务需求只需要修改单体应用的代码,然后针对这个单体应用进行测试,测试通过后再把单体应用的代码发布到线上即可。而拆分为微服务之后,一个大的系统被拆分为多个小的系统,一个业务需求可能要同时修改多个微服务的代码,这样的话多个微服务都需要进行测试,测试通过了都需要把代码发布到线上,显然工作量成倍增加。这时候我们迫切需要一种新的开发、测试和运维模式来解决这个问题,这也就是需要DevOps的原因。

DevOps通过将开发、测试和运维流程自动化,以减轻微服务拆分后带来的测试和运维复杂度的提升,同时还提高了业务研发的效率。当然DevOps 除了包括流程的自动化处理,还包括智能监控决策、在线自动扩缩容等等内容,甚至还引入了人工智能技术走向另外一个新方向 AIOps。

总结

今天梳理了什么是DevOps及我们为什么需要DevOps,希望大家可以在我的文章中得到一些启发。以上是我近段时间对于DevOps学习内容的梳理,如有错误敬请指正。

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

你可能感兴趣的:(什么是DevOps及为什么需要 DevOps)