DevOps 概述
什么是 DevOps
DevOps 是实践、工具和文化理念的集合,旨在自动化和整合软件开发团队和 IT 团队之间的流程。它强调团队赋权、跨团队沟通和协作以及技术自动化。
DevOps 运动始于 2007 年左右,当时软件开发和 IT 运维社区对传统的软件开发模式(即编写代码的开发人员与部署和支持代码的运维人员分开工作)表示担扰。DevOps 这个词由 development(开发)和 operations(运维)组合而成,反映了将这两个领域整合成一个连续的流程的过程。
DevOps 的运作方式
DevOps 团队包括开发人员和 IT 运维人员。他们在整个产品生命周期中协作,以提高软件部署的速度和质量。这是一种新的工作方式,也是一种文化转变,对团队及其所在的组织都有重大影响。
在 DevOps 模式下,开发和运维团队不再“孤立”。有时,这两个团队会合并成一个团队,工程师们参与到整个应用程序生命周期(从开发->测试->部署->运维)并具备多学科技能。
DevOps 团队通常会使用工具实现流程的自动化和提速,从而提高可靠性。DevOps 工具链帮助团队解决重要的 DevOps 基础要素,包括持续集成、持续交付、自动化和协作。
DevOps 的价值观有时也适用于开发团队以外的团队。当安全团队采用 DevOps 方法时,安全性作为一个活跃的组成部分融合在开发过程中。这就是所谓的 DevSecOps。
DevOps 生命周期
由于 DevOps 的连续性,从业人员使用无限循环来展示 DevOps 生命周期各个阶段之间的相互关系。尽管看似是按顺序进行的,但此循环实际表示需要在整个生命周期进行持续协作和迭代改进。
DevOps 生命周期由八个阶段组成,代表了开发(循环的左半部分)和运维(循环的右半部分)所需的流程、功能和工具。在每个阶段中,团队进行协作和沟通,以保持一致性、速度和质量。
发现
软件开发是一项团队运动。为了准备即将到来的冲刺(sprint),团队必须进行研讨会,探索、整理成员的创意并确定优先级。这些创意必须与战略目标相一致,并能产生客户影响。敏捷方法可以帮助指导 DevOps 团队。规划
DevOps 团队应该采用敏捷实践来提高速度和质量。敏捷是一种用于项目管理和软件开发的迭代方法,帮助团队将工作分解成较小的部分,以提供增量价值。构建
Git 是免费且开源的版本控制系统,提供分支管理、合并和重写存储库历史记录等能力。这也为开发构建流程带来了众多极具创新且功能强大的工作流和工具。测试
持续集成 (CI) 允许多个开发人员向单个共享存储库贡献代码。当代码更改合并时,自动化测试会在集成之前运行以确保正确性。合并和测试代码通常有助于开发团队在部署后获得代码质量和可预测性的保证。部署
持续部署 (CD) 允许团队频繁地将功能自动发布到生产环境中。团队还可以选择部署功能标记,从而稳定、有条不紊地向用户交付新代码,而不是一次性全部交付。这种方法提高了软件开发团队的速度、生产力和可持续性。运维
管理面向客户的端到端 IT 服务交付。这包括设计、实施、配置、部署和维护组织内 IT 基础架构过程中涉及的实践。
观察
快速识别和解决影响产品正常运行、效率和功能的问题。自动通知团队有关更改、高风险操作或故障信息,以便团队可以保持服务的运行。持续反馈
DevOps 团队应该评估每个发布版本,并生成报告以改进未来版本。通过收集持续反馈,团队可以改进其流程并采纳客户反馈以改进下一个发布版本。
DevOps 的优势
建立 DevOps 研发流程可以实现开发人员在提交代码后自动触发构建、更新制品并自动部署到对应环境,减少团队成员不必要的重复劳动,提高部署效率。
引入 DevOps 之前:
开发人员:提交代码后在本地环境执行代码编译打包命令,将制品发给运维,等待统一部署。
运维人员:将制品通过手动执行命令方式将制品部署到对应环境。
引入 DevOps 之后
开发人员:只需要将注意力置于代码开发,无需手动执行构建流程。可以通过可视化方式直接查看流水线与应用部署进度。
运维人员:根据项目构建部署流程,配置自动化流水线。若项目有变更则直接更新流水线。
采用 DevOps 会面临的挑战
原有的习惯很难改变。深陷孤立工作方式的团队可能会难以应对,甚至抗拒彻底改变团队结构来实践 DevOps。某些团队可能会错误地认为有了新工具就等于实践了 DevOps。然而,DevOps 是人员、工具和文化的结合。DevOps 团队的每一个人都必须了解从构思、开发到最终用户体验的整个价值流。它要求打破孤岛,以便在整个产品生命周期中进行协作。
从传统的基础架构转向使用基础架构即代码 (IaC) 和微服务可以加快开发和创新速度,但增加的运维工作量可能极具挑战性。最好为自动化、配置管理和持续交付实践奠定坚实的基础,以帮助减负。
过度依赖工具会使团队偏离 DevOps 的必要基础:团队和组织结构。一旦建立了结构,就应该建立流程和团队,然后确定工具。
在阅读中是否遇到以下问题?*
您希望我们如何改进?*
如果您希望得到回复,请留下您的邮箱地址。