devops思想:它是一套针对这几个部门间沟通与协作问题的流程和方法

DevOps出现的背景

软件工程方法论从瀑布到敏捷,到目前的DevOps,都不是凭空演进出来的。敏捷的目的是为了打破产品和开发团队之间的部门墙,但是市场变化越来越快,充满易变性、不确定性、复杂性、模糊性。我们需要更快的交付和反馈,所以只打破产品和开发部门部门墙还不够,现在需要将开发和运维运营也打通。

诉求
1、更小、更频繁的变更──意味着更少的风险
2、让开发人员更多地控制生产环境
3、更多地以应用程序为中心来理解基础设施
4、定义简洁明了的流程
5、尽可能地自动化
6、促成开发与运营的协作

是不是和敏捷开发很像?Devops和敏捷有什么区别呢?

敏捷和Devops的实质是一样的!!都是为了团队更高效的合作,但侧重点不同。
敏捷侧重点是在响应需求变化,更高效的开发,达到快速交付,接轨于市场。是市场与开发间的配合。
Devops则是开发、运维、测试的衔接。使其三端都与开发统一节奏。
Devops与敏捷软件开发也是相辅相成的,也就是开头Devops的定义,实现持续集成、部署和交付。两者结合,为的也是一气呵成,降低内耗、成本,实现快速回报。

DevOps是什么?

它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运维工作必须紧密合作。

可以把DevOps看作开发(软件工程)、技术运营和质量保障(QA)三者的交集。

传统的软件组织将开发、IT运营和质量保障设为各自分离的部门。在这种环境下如何采用新的开发方法(例如敏捷软件开发),这是一个重要的课题:按照从前的工作方式,开发和部署不需要IT支持或者QA深入的、跨部门的支持,而却需要极其紧密的多部门协作。然而DevOps考虑的还不止是软件部署。它是一套针对这几个部门间沟通与协作问题的流程和方法。

需要频繁交付的企业可能更需要对DevOps有一个大致的了解。

以下几方面因素可能促使一个组织引入DevOps:
1、使用敏捷或其他软件开发过程与方法
2、业务负责人要求加快产品交付的速率
3、虚拟化和云计算基础设施(可能来自内部或外部供应商)日益普遍
4、数据中心自动化技术和配置管理工具的普及

华为软件开发云提供了项目管理、配置管理、代码检查、编译构建、测试、部署、发布等端到端地覆盖软件生命周期的相关服务。

DevOps能帮你解决什么问题?

我们来思考一个问题,我们为什么要关注DevOps,它能为我们带来什么?

第一个原因是,DevOps已经被证实能在IT和商业两方面提升效率和质量。

在Puppet实验室发布的DevOps调查研究报告中,指出使用了DevOps的团队和没有使用DevOps团队对比,部署更改频率提高30倍,交付周期缩短200倍。在问题质量方面,和其他组织相比,问题故障减少了60倍,在问题恢复上快了168倍。

第二个原因是,DevOps能让你的日常工作变得更简单,让你的工作节奏更加稳定可持续,让你的工作变得更有价值。

DevOps的目标简单来说就是帮助产品研发团队可持续的又快又好的交付价值。

“可持续性”是指以比较稳定的节奏长期的持续进行交付,比如经常加班赶工就是不可持续的,团队的交付速率也不稳定,波动性越大,风险越高。

“快”是指研发效能提升,具备按时可预测交付的能力。

“好”是指研发质量提升,减少缺陷和返工,降低成本,提升用户体验。

“交付价值”是指通过持续的频繁的迭代交付可用的产品,经过市场和客户的检验,持续的将问题和建议反馈给产品开发团队,进而对产品的功能的演进方向调整,使最终交付的产品更符合用户需求,最大化交付价值。

DevOps将给我们带来哪些改变?

平台化:统一的DevOps平台

目前大型金融以及互联网企业普遍采用强整合的统一DevOps平台。

DevOps落地由于涉及的内容非常多,所以不同的角色以不同的视角看,基本就是横看成岭侧成峰,远近高低各不同。我们从不同角度和层面来看看DevOps将会带来哪些改变?

从人员管理层面看,DevOps落地后,人员管理的组织结构会有变化。目前大多数传统IT企业的开发和运维部门的运作模式是共享的运维团队,开发完成后的交付物,交给运维团队负责部署、发布和运维。DevOps推荐的多功能团队类似于图中虚拟运维组的形式,每个开发团队都有自己的运维人员(运维人员少的也要有共享的运维联络人)。这里的运维人员指的是一种角色,有些团队也有全栈工程师,开发测试兼运维。对于中大型的公司,还经常会有基础设施运维团队,提供基础设施即代码等平台化能力。

DevOps落地,研发交付的每个过程都离不开工具的支撑。传统的方式,是自己搭建零散的弱整合工具系统,比如我们用Gitlab来管理代码,根据企业的实际情况寻找合适的分支管理方法;我们用Jenkins来做持续集成;使用selenium来做自动化测试;使用ansible来自动化部署;使用chef或者puppet来管理基础环境等等。这种情况的问题一是系统完全需要自己维护,成本高,不稳定;问题二是子系统之间存在隐性墙,缺少数据共享/权限共享/系统交互等功能。目前大型金融以及互联网企业普遍采用强整合的统一DevOps平台。

自动化:尽可能地自动化

自动化
强大的部署自动化手段确保部署任务的可重复性、减少部署出错的可能性
与传统开发方法那种大规模的、不频繁的发布(通常以“季度”或“年”为单位)相比,敏捷方法大大提升了发布频率(通常以“天”或“周”为单位)

这种Jenkins,发布也是一种自动化了,

一个关键的DevOps原则是“自动化你尽可能想到的一切”。这个论调很重要,自动化利于优势流转(第一种方式),快速反馈回路(第二种方式)和高性能(随着持续学习和持续改进,第三种方式)。自动化是DevOps底线,再看它想对现有模式的优势所在:1. 加快速度
自动化比手动快。如果某环节实现了自动化,那就几乎是最快了。
2. 减少人为错误
工具不会像人们那样犯错误。一旦工具被配置和验证正确,它将每次都正确地完成任务。
3. 一致性
一旦每个工具都按照定义确保了一致性。那就可以用工具来检查和执行不自动化环节的一致性。
4. 减轻风险
由于工具不会出错,可用于检查手动活动,因此可以部署以减轻无法避免的风险。高效能组织尽量的自动化一切 - 这就是他们高效的诀窍。

posted @ 2022-04-15 11:54  技术改变命运Andy  阅读(124)  评论(0编辑  收藏  举报