DevOps文化
Author:zhoulujun Date:
DevOps一词的来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。
这个概念2009年在欧洲升温,填补开发端和运维端之间的信息鸿沟,改善团队之间的协作关系。
如Puppet、Chef、Ansible、Jenkins、Docker等发展,越来越多的组织开始采用DevOps,将其视为提高软件质量和效率的关键手段。
Kubernetes、Istio等容器编排和微服务管理技术的出现,进一步推动了DevOps的发展。同时,DevOps的理念也逐渐渗透到了各个领域,如AI、大数据、物联网等。
DevOps工具链的核心
代码编辑和版本控制工具:如 Visual Studio Code,Sublime Text 等,它们允许开发人员编写代码并跟踪更改。
通过版本控制,开发人员可以安全地回滚到以前的版本,也可以方便地查看和比较不同版本之间的差异。
自动化构建工具:如 Jenkins,Travis CI 等,它们帮助开发人员自动化构建,测试和部署代码。
持续集成和持续部署工具:如 GitHub Actions,Jenkins X,GitLab CI/CD 等,它们帮助开发人员自动触发构建,测试和部署流程。
持续集成工具如Jenkins和Travis CI等,用于自动化构建、测试和部署应用程序的过程。这些工具可以帮助开发人员频繁地向主分支提交代码,并自动执行构建、测试和部署步骤,从而降低错误和提高代码质量。
容器编排工具:如 Kubernetes,Docker Swarm 等,它们允许开发人员部署和管理容器化应用程序。这些工具可以自动部署、扩展和管理容器集群,使开发人员可以更轻松地管理和维护应用程序。
自动化测试工具:如Selenium和JMeter等用于对应用程序进行功能和性能测试。这些工具可以模拟用户行为,以发现和修复潜在的问题。自动化测试可以显著提高测试效率和覆盖率,并确保应用程序的稳定性和可靠性。
持续监控工具:如 Prometheus,Grafana,InfluxDB 等,它们帮助开发人员监控应用程序的运行状态和性能。
服务配置管理工具:如 Ansible,Chef,Puppet 等,它们帮助开发人员自动化配置和管理应用程序和服务。
日志管理工具:日志管理工具如ELK Stack和Graylog等,用于收集、分析和可视化应用程序的日志。这些工具可以帮助开发人员快速诊断和解决问题,以及优化应用程序的性能和可靠性。
配置管理工具:如Ansible和Chef等,用于管理应用程序的配置文件。这些工具可以自动化地管理应用程序的配置,并确保其一致性和安全性。
应用性能管理工具:如New Relic和Datadog等,用于监控和分析应用程序的性能。这些工具可以收集和分析实时数据,帮助开发人员快速发现和解决性能问题。
DevOps工具链强调的是自动化和端到端的流程,从需求分析到代码开发,从测试到部署,再到运维监控,所有的环节都能够通过自动化的工具进行协调和协作,大大提升了软件开发的速度和质量。
DevOps工具链中的每个工具都旨在帮助开发人员更快地交付高质量的软件。通过这些工具,开发人员可以自动化许多重复性和耗时的任务,从而节省时间并提高生产效率。同时,DevOps工具链也可以帮助开发人员更好地理解应用程序的运行情况,并及时发现和解决问题。
不过需要澄清的一点是,从开发到运维,中间还有测试环节。DevOps其实包含了三个部分:开发、测试和运维。
运维/测试平台化,属于OP/QA的运维测试视角:把手工运维和测试,集中到平台上进行操作,从粗放到集中。
平台自动化,属于RD的研发视角:把原先人工的平台操作改造成自动化执行,从这开始才有了点DevOps平台的意思。
平台连动化,属于项目管理视角:把原先分散的自动化平台通过项目平台(例如Jira)连动起来,实现从项目启动到结束的全流程管理。
这三个视角实际上就涵盖了做DevOps平台需要考虑的几乎所有相关方——研发、OP/QA、项目相关方。从这三个相关方的视角出发,就会形成三个完全不同的目标,到底哪一个目标是最重要的,三者如何协同一致的连动,尽力满足各方目标,是DevOps平台需要考虑的关键,也是技术决策者需要思考的问题[
DevOps的一个巨大好处就是可以高效交付,这也正好是它的初衷。
DevOps另外一个好处就是会改善公司组织文化、提高员工的参与感。员工们变得更高效,也更有满足和成就感;调查显示高效员工的雇员净推荐值(eNPS:employee Net Promoter Score)更高,即对公司更加认同。
DevOps文化
DevOps 是文化理念、实践和工具等的组合,能够提升一个组织快速交付应用和服务的能力。
DevOps 强调打通开发团队与运维团队的壁垒,要求两个团队拉齐认知与责任,不再各自为战,而是一起为更快地交付更高质量的产品而努力。
运维与开发融合
DevOps让本是传统 Dev 的工程师学习 Ops 的技能,同时传统 Ops 的工程师也需要学习 Dev 的技能。
但需要意识到不能要求每个工程师都精通开发与运维,这是不可能的。这里说的 Dev 掌握 Ops 能力,更多的是 Dev 能够借助完善的工具链从而掌握“应用运维”的能力,能够在自己完成开发之后,有能力和权限将应用部署上线,同时线上应用出问题后,能够直接对其负责,定位、修复、更新升级等。而一些基础设施的运维能力需要独立出来考虑,比如机房里的局域网配置、虚拟机挂 NAS 盘等传统运维能力。
同理 Ops 需要理解应用开发的生命周期,知道 Dev 的痛点,尤其是在流程上的痛点,比如怎样提升应用的构建速度,怎样优化应用的 cd 流程等,Ops 要关注应用的“生产过程”,进而发力去优化这个过程或相应的工具,让应用能够更可靠更快速地完成 cicd 流程等,更容易地部署上线或者对外交付。也就是说我们并不是要求 Ops 也去写业务代码,而是协助 Dev 去解决业务代码之外的痛点,让 Dev 能够更加专注于业务功能实现。
一个 DevOps 模式组件的团队中每个人都为整个软件研发生命周期的速度和质量负责,每个具体的角色就像一个大头钉,底部很宽,代表着技术面广,关注整个软件研发生命周期的所有环节;同时顶部很高,在某个环节里专注,做好做精。
DevOps落地的关键:
所谓DevOps 离不开高效的工具集,但是,工具只是自动化的基础。
最后我们要在各个环节追求最佳实践,不止是工具的使用,更多的是团队的协作模式,沟通方法上面的林林总总
DevOps文化要求 Dev 和 Ops 团队责任共担,目标一致,也要求整个团队持续学习,抱着成长的心态,Continuously Everything。
所以,我们希望组建一个学习型、创造型的团队,每个人能够持续成长,乐于创新,自我驱动。
这就需要领导能够允许团队花时间去学习,去输入,而不是一味地输出,每时每刻汇报自己写了几行代码。同时这也要求领导自身勇于接受新事物,拥抱变化,而不是“不求有功,但求无过”。举个例子:假如你的领导最担心的是线上应用出事故,并且他认为稳定的第一要素就是不要引入新技术,新工具,那么这时候你的领导也不会在意你是不是有时间学习,也不会允许你花时间去研究新技术,因为这一切只会带来不稳定。如果领导害怕失控,因而拒绝创新,那么这样的团队成员也就只能满足于实现日复一日的常规需求开发迭代,而不会享受技术,自我驱动,拥抱创新。
参考文章:
什么是 DevOps?看这一篇就够了! https://www.cnblogs.com/DevLake-DevStream/p/what-is-devops.html
终于有人把DevOps讲明白了 https://zhuanlan.zhihu.com/p/562036793
万字长文详解DevOps及DevOps工具链! https://cloud.tencent.com/developer/article/2322080
转载本站文章《DevOps文化》,
请注明出处:https://www.zhoulujun.cn/html/OS/Linux/DevOps/9269.html