Files
devops/devops.md
2025-09-17 16:08:16 +08:00

69 lines
9.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# [正确理解DevOps开发运维一体化](https://www.aisoutu.com/a/67821)
发布于 2020-12-25 00:20
我们一直说DevOps是“谁开发谁运维、开发运维一体化”但具体怎么做并没有几个人说的清楚的。特别是“谁开发谁运维”这明显是不符合实际情况的。试想一下一个开发人员开发的应用服务都由他自己来运维他能运维几个应用服务然后又有多少时间能继续做开发到最后岂不是所有开发人员都成了运维人员。有点极端但是也正说明了我们对DevOps的认识存在很大的误解。
DevOps提倡“开发运维一体化”但不是“谁开发谁运维”。但怎么开发运维一体化往往也都没有说清楚也没有很好的实践案例。**Google SRE更多的其实是运维阶段的工作虽然Google SRE很多工作是运维工具和运维服务的开发工作但其本质上是做运维。但是它给我们的一个很好的启示是把“运维开发”和“运维维护”一体化了也就是运维人员不再是简单的系统管理和维护而是通过运维工具的研发使运维流程自动化和智能化将一些日常重复性的运维工作通过自研工具自动化和智能化了这就大大减轻了运维人员的维护工作量提升了运维效率。**这些工作不再靠“研发人员”,而是“运维自身”的能力来实现的。
CG:
*运维&开发不是一个工种门类如何一体如何粘合不是说开发既做开发有做运维这样无法专注开发也无法专注运维不是说运维和开发是一个人或一个团队而是开发和运维能无缝衔接形成反馈合力。那么如何做到这点一是运维过程必须向前看加速反馈和处理过程二是必须依靠自动化工具人的协作毕竟是非常重要的但人存在效率偏差和技能偏差单依靠人的协作必然会在两者之间形成Gap自动化工具形成管道正式弥合这个gap把两者粘合起来。*
**优化原则:减少大量的人工沟通协同,而是应该通过工具链协同。**
- 流水线增加启动检查节点2个小时内有代码check in 则触发。
- 是否需要人工验证可以按commit desc 确认。
- 需求和缺陷的管理
- 需求和缺陷状态的变化
- 变更驱动的版本开发和流水线设计
DevOps开发运维一体化并不是让开发去做运维而是使开发和运维通过一些机制有机结合、高效统一成为一个整体从而消除开发团队和运维团队之间的gap有效提升应用服务的研发和运维运营效率。
那么通过什么样的机制如何来消除开发和运维之间的利益冲突如何提升效率是我们在实施DevOps之前或者实施过程中需要认真思考的问题。
Google SRE实践给我们了很好的运维阶段的DevOps实施启示。**运维还是需要专职做运维,而且比传统运维做的更多。**运维人员需要对自己运维的环境、工具、流程、资源等有深入的理解和认识,能独立开发运维工具,独立实现运维的自动化、智能化、高可用、稳定性、安全性等要求。支撑应用的运维和运营。这就使运维成为了一个有机的小闭环,包括了运维工具、流程等的需求、设计、开发、测试、部署、运营、反馈、改进等完整生命周期过程。这和业务应用的开发和运维运营是不同层次的。**SRE的工作在提升运维效率的同时也很好的支撑了业务应用的运维运营效率。**
SRE侧重于DevOps的Ops运维阶段。DevOps的Dev开发阶段包括需求、设计、编码、测试、部署等过程。开发阶段则强调持续开发、持续部署或持续开发、持续交付强调敏捷开发。目的还在于提高效率。环境的敏捷准备、环境的一致性是Dev阶段高效的重要基础。
**传统开发、测试、UAT等环境都是由开发人员自己来维护。这也导致了往往和生产环境不一致所以在生产部署时可能会存在很多意向不到的问题。因此在DevOps实践中环境的运维一定要交由运维人员统一来维护开发人员只是使用环境而不运维环境。**
**谁有权限使用环境谁没有权限使用环境这又涉及到了DevOps中的统一权限管理和统一认证管理部分。**统一权限和认证管理可以作为企业的技术中台服务由技术中台运维团队来统一运维运营。为企业内外用户提供认证和权限服务。各个环境使用技术中台的统一认证权限平台的服务来完成认证和权限管控也避免了重复的投入和建设。开发人员只需要用自己的账号随时登录不同的环境来完成自己的工作。这其实就是PaaS的理念。当然你也可以在企业内部实现单点登录一次登录可以在拥有权限的不同环境之间切换来完成工作。这些是DevOps的基础工作。看似没有关系却带来完全不同的效果。
*CG: 开发、运维的权限边界在哪里?*
**环境一致性可以简单的通过容器化来实现。**但容器环境只能达到相对一致性,并不能实现完全一致性。容器运行在不同配置的宿主机或虚拟化节点上,都会带来一定的差异。所以你也可能经常会遇到在某个节点性能很高,而某个时刻迁移到另外一个节点性能却不如预期。
环境的敏捷准备则是一个相对不容易的工作。传统研发过程中通常很多时间都是花在环境准备上。不管是否采用容器化,这块的效率都是需要考虑提升的。在开发阶段涉及的流程和工作也比较多。比如开发环境准备、测试环境的准备、测试数据的准备、测试用例的自动构建、测试缺陷的自动记录等。而且这部分工作可以通过相应的工具实现敏捷能力,尽可能使工具和流程标准化,这样就可以实现自动化,就能更快的提升效率。
*CG: alpha/beta 测试环境的准备谁负责?*
而软件编码的标准化程度也相对就比较低,往往依赖于开发人员的个人能力和态度。软件研发其实质是智力投资,不同的人带来的效果完全是不一样的。**所以很多想以外包的方式实现自有软件的自主可控基本上是不现实的。**
开发阶段最终需要交付标准化交付件不管是容器镜像、或是jar、war、exe文件等这些文件需要统一管理起来镜像可以用镜像仓库jar等可以通过配置管理工具等统一来管理而部署则可以实现自动化不管使用自动化脚本或者自动化工具以减少部署问题和提升效率支持**持续部署**的能力。
我们在《容器云平台运维架构设计》也清楚地解释了开发和运维之间的标准化交付环节。这是减少开发和运维之间沟通成本和提升效率的重要机制。如果使用容器镜像和镜像仓库将充当这样的一个标准化交付件和标准化交付管理媒介。它可以很好的划分和有效连接开发、测试、UAT、生产运维等应用生命周期阶段。
另外我们知道DevOps很重要的是要形成闭环。运维运营对开发的反馈是非常重要的不仅仅是bug和缺陷的反馈修复包括用户体验等都是很重要的内容。这就需要合理合适的反馈机制和流程。既包括技术的也包括非技术的因素。
所以横向上我们可以简单的看作是开发、标准化交付和运维的划分,标准化交付就像是人的关节,起到润滑和弹性伸张的作用,使开发和运维成为一体并充分发挥各自的专业优势。而纵向上,可以通过分层来实现高度专业化运维。最下层是基础设施资源的运维,之上是平台、工具、环境的运维,在这些平台、工具、环境之上是业务应用的运维。所有这些工作都是为了保证业务运营的可用与安全。通过业务运营才能有收益、有利润。
![1_16088294734824786.png](https://i.loli.net/2021/10/25/ujbVGPR71TpBqMO.png)
从应用整个生命周期管理过程看80%的基本工作可能是在运维阶段运维的事项也比较多从效率上讲使各运维事项专业化、自动化甚至智能化则容易提升效率。开发运维一体化重点在于提升运维的效率包括应用、环境、平台、工具、基础设施资源等。有高效、高可用的运维环节能力则能保证业务应用的高可用与稳定性也就是Google SRE的Site Reliabilities。而对于应用开发人员即便是出现意外情况运维也有应对措施开发人员则有充足的时间进行细致的设计和问题处理追求更稳定、可靠、高效的能力从而使运维更容易和便利。
开发运维一体化追求开发和运维的利益一致而不是一个人既做开发也做运维。这需要通过一定的机制和借助相应的工具等来保证使开发和运维之间能够有活动关节、有润滑剂。这应该是我们在构建DevOps的时候需要认真考虑实现的核心内容。
## references
- [猪八戒网DevOps容器云与流水线](http://dockone.io/article/8384)
- [万达网络科技的DevOps平台架构解析](https://cloud.tencent.com/developer/article/1080141)
- [DevOps之平台架构](https://www.cnblogs.com/cdani/p/7642386.html)
- [流水线2.0驱动 CD/DevOps](https://cloud.tencent.com/developer/article/1035432)
- [度量驱动的DevOps转型 ](https://www.sohu.com/a/124936190_468741)
- [保障pipeline脚本在devops中成功应用的四大核心点](https://blog.csdn.net/liwenxiang629/article/details/120762790)
- [DevOps能为倍增计划做点啥?](https://www.aisoutu.com/a/18920)
- [高通量低延迟的云环境大数据流水线架构](https://www.infoq.cn/article/myKdXcvOtTTLtOmZTe3s?utm_source=rss&utm_medium=article)
- [Devops 落地的核心和13条经验总结](http://info.dns110.com/321101.html)
- []()