DevOps 思路转变重于技术提升

“程序员本应是信息时代流水线上的工人,但现在还是手工艺者,复杂系统甚至需要软件“艺术家”(架构师)。工业化消灭了手工业者,但信息化又催生了程序员一一这个世上仅存的最大的手工业群体。

—《风向》

作为世上仅存的最大的手工业群体,很认同上边这段话。

好在有了DevOps,它代表了开发和运营团队合作方式的变革,以一系列自动化实现安全的、可靠的、快速的部署和升级,把我们从复杂而重复的工作中解脱出来。

什么是DevOps

近年来,DevOps这个概念频繁地出现在各IT媒体和技术社区,也备受大厂青睐,腾讯、华为、阿里、百度等公司内部都在做DevOps。

那么,DevOps是什么?

为什么业内都对它推崇备至、趋之若鹜呢?

ChatGPT这么说

DevOps是一种软件开发方法,旨在缩短软件开发周期,提高软件质量和可靠性。在DevOps中,开发和运维团队协作,实现快速的软件交付。

我对DevOps的看法非常积极,因为它帮助团队更快地交付软件,并使软件更可靠。DevOps还加速了软件的迭代周期,使团队能够更快地响应市场变化和客户需求。

在DevOps中,运维和开发的关系应该是平衡的。开发团队负责设计和开发软件,运维团队负责部署和维护软件。这种协作有助于确保软件在生产环境中运行正常,并且更容易诊断和解决问题。

总的来说,DevOps是一种非常有效的软件开发方法,可以帮助团队加速软件交付,提高软件质量和可靠性。DevOps中运维和开发的关系应该是平衡的,以确保软件在生产环境中正常运行。



DevOps这个词,是Development和Operations两个词的组合。

从字面意思上来说, DevOps指“开发运维一体化”,即通过工具辅助开发完成运维的部分工作,减少成本。

深入理解之后,你会发现 DevOps 是一种软件研发管理的思想,方法论。

理想的DevOps涉及到的角色有开发、测试、产品、项目管理、运维等,整个过程追求没有交流障碍的理想的研发运维和协作。

Google 提出了 5 个 DevOps 原则:

精简组织架构;

愿意承担一部分试错带来的损失;

分阶段地一小步一小步地进行转型;

最大化地利用工具和自动化流程;

对所有的过程和结果进行记录和分析

这套原则中依赖于工具辅助的只有后两点,更多团队的改变。

DevOps 不是简单的开发运维一体化,而是团队通过学习使用新的工具、方法,优化组织架构和流程,不断地进行创新并在过程中提升的方式,是一个系统工程。

DevOps解决什么问题

在传统的瀑布开发模式下,软件开发流程是需求、代码、交付、测试、发布、部署及后续维护。

在互联网时代,开发周期越来越短,原来的瀑布式开发已不适应市场需要,“敏捷开发”应运而生。

敏捷开发采用小步快跑的方式,目标是通过尽早且持续地交付有价值的软件来满足客户,在敏捷开发模式下,项目的时间点由大变小,采用持续集成Continuous Integration)与持续交付/新部署(Continuous Delivery/Deployment),小步快跑,及时响应需求,发现并修复问题。

敏捷开发模式无疑提高了开发测试团队的效率,但对运维的帮助并不是很大,甚至增加了运维的工作量,与开发人员仅仅关心代码功能实现不同,工程运维人员更关注生产环境的稳定性,对运维而言,从某种意义上说:稳定压倒一切!

因此,运维对升级的态度常常是:如非必要,绝不升级!

DevOps 和敏捷中,都有软件开发、测试和部署的阶段。

敏捷流程在这三个阶段之后会终止。而DevOps 包括后续持续的运维。DevOps 会持续的监控软件运行情况和进行持续的开发。

DevOps将部署维护自动化,减少人为错误,部署更可靠,反应更快,成本更小。DevOps流程中,运维在项目开发期间就介入到开发过程中,了解系统架构和技术路线,制定对应的运维方案。而开发也会在运维的初期参与到系统部署中,并提供系统部署的优化建议。

DevOps 是通过平台(Platform)、流程(Process)和人(People)的有机整合,以 C(协作)A(自动化)L(精益)M(度量)S(共享)文化为指引,旨在建立一种可以快速交付价值并且具有持续改进能力的现代化 IT 组织。

DevOps,思路的转变重于技术提升

DevOps整个流程中,有大量工具可以选择,不同环节有各种不同工具可以选择。

不管用什么技术,思路转变重于技术提升。

当前,KOCA(Kingdom Open Cloud-native Architecture)云原生技术平台开发在领导支持下,产生多个DevOps相关最佳实践。

也经过探索试用,选择了一些适合我司情况的工具。

后续将进行DevOps落地分享、KOCA的DevOps工具链分享,敬请关注!