当前位置:   article > 正文

DevOps简述_devops 原理

devops 原理

1. 什么是DevOps

        DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

• DevOps是一系列原理和实践经验的总和。
• DevOps从一开始便将开发和运维团队放到同一个系统开发中。
• DevOps提供了一种快速、有效的方式,能不断地以端到端的传播形式向用户端传递价值,而且这种方式具备一致性和可行性。
• DevOps缩短业务上线时间,并保障了业务的市场竞争力。

2. 为什么需要DevOps?

        随着微服务的概念的火热,越来越多的公司加入到了微服务的阵营,但是微服务不是银弹,微服务带来好处的同时,也引入了复杂度,所以需要指定一系列的标准来尽量降低微服务的复杂度,所以DevOps伴随这微服务的火热也应运而生了。

DevOps满足用户以下需求和期望:
• 获得他们想要的功能;
• 在任何需要时都能获得他们想要的功能;
• 能更快地更新功能;
• 发布的新版本的质量够高。

3. DevOps实践核心原则

  • 协作机制和沟通机制;
  • 响应变化的敏捷度;
  • 软件设计能力;
  • 快速试错;
  • 持续学习和创新;
  • 自动化流程和工具。

4. DevOps实践方法

  • 持续集成
  • 配置管理
  • 持续部署
  • 持续发布
  • 持续学习

5. DevOps 和应用程序生命周期

        DevOps 影响应用程序生命周期的规划、开发、交付和运营阶段。每个阶段都依赖于其他阶段,并且这些阶段并非特定于角色。在真正的 DevOps 文化中,每个角色在某种程度上都涉及到每个阶段。

 

5.1 PLAN

        在计划阶段,DevOps 团队构思、定义和描述他们即将构建的应用程序和系统的特性和功能。他们在低粒度和高粒度级别上跟踪从单个产品任务到跨多个产品组合的任务进展。DevOps 团队以敏捷和直观地方式进行规划的一些方法包括创建积压工作 (backlog)、跟踪 bug、使用 scrum 管理敏捷软件开发、使用看板以及使用仪表板直观呈现进度.

5.2 Devlop

        开发阶段包括编码的各个方面(编写、测试、评审)、团队成员集成代码,以及将代码构建为可部署到各种环境中的生成工件。DevOps 团队寻求在不牺牲质量、稳定性和生产效率的情况下快速创新。为此,他们使用高效的工具、自动化单调和手动步骤,并通过自动化测试和持续集成以小增量迭代。

5.3 交付

        交付是以一致且可靠的方式将应用程序部署到生产环境中的过程。交付阶段还包括部署和配置构成这些环境的基础结构,该基础机构受到完全治理。

        在交付阶段,团队定义了具有明确手动批准阶段的发布管理流程。他们还设置了自动入口,用于推动应用程序经历各个阶段,直到提供给客户。这些流程的自动化使这些流程可伸缩、可重复并且可控制。这样,使用 DevOps 的团队就可以轻松、自信、放心地频繁交付。

5.4 运营

        运营阶段包括维护、监视和对生产环境中的应用程序进行故障排除。在采用 DevOps 做法时,团队致力于确保系统的可靠性、高可用性,并在加强安全性和治理的同时实现零停机的目标。DevOps 团队希望在问题影响客户体验之前发现问题,并在问题发生时迅速解决问题。保持这种警惕性需要丰富的遥测、可操作的警报以及全面了解程序和基础系统。

6. DevOps流程

        流程用于指导组织中各角色之间如何协作以及各环节可能使用的工具等。典型的DevOps流程如下:

        在上图的DevOps流程包括产品立项、需求分析、应用设计、开发、测试、持续发布、生产运维、迭代回顾8个环节。在概念阶段完成产品立项评审之后,进入迭代周期,每个迭代包括7个环节,即需求分析、应用设计、开发、测试、持续发布、生产运维和迭代回顾。

        在产品立项完成后,进入需求分析阶段,再次从需求分析开始,而且每次迭代需要总结上次迭代的经验和教训,改进流程和代码质量。通常情况下,每个迭代定义2到4周的时间。这样除了产品立项外,其余7个环节形成反馈闭环,不断迭代,实现敏捷交付,并通过反馈机制不断完善流程和产品。

        主流程定义清楚之后,需要对每个环节进行详细的流程设计,并将角色和工作职责映射到各个环节中。需求分析环节包含三个阶段∶需求收集流程、需求列表输出、用户故事编写。

(1)需求收集流程

这个阶段涉及的角色有业务需求方和产品经理,负责收集需求,输出待讨论需求列表。

(2)需求列表输出

这个阶段涉及的角色有业务需求方、产品经理、开发经理,负责讨论需求列表,确定本轮迭代的业务目标。

(3)编写用户故事

业务需求方和产品经理负责编写用户故事,产品经理进行需求澄清。

完整的DevOps流程如下:

7. DevOps 文化

        采用 DevOps 做法可以通过技术来实现流程的自动化和优化,但这一切都需要从组织内部的文化和参与的人员开始。培养 DevOps 文化的挑战在于需要深入改变人们的工作和协作方式。但是,通过推行 DevOps 文化,组织可以创造一个有利于高绩效团队成长的环境。

7.1 协作、可见性和一致性

        健康的 DevOps 文化的一个标志是团队间能够协作,首要的便是可见性。开发和 IT 运营等不同团队必须能够相互分享 DevOps 流程、优先级和关注点。这些团队还必须能够共同规划工作,并统一与业务相关的成功目标和衡量标准。

7.2 范围和责任的转变

        当团队统一时,他们拥有所有权并参与其他生命周期阶段,而不仅仅是他们的角色对应的阶段。例如,开发人员不仅要对开发阶段的创新和质量负责,还要对他们的改变在运营阶段带来的性能和稳定性负责。同时,IT 操作员一定要在规划和开发阶段中包括治理、安全性和合规性。

7.3 缩短发布周期

        DevOps 团队通过在短周期内发布软件保持敏捷。因为进度是渐进式的,缩短发布周期可以让计划和风险管理更容易,同时也可减少对系统稳定性的影响。缩短发布周期还可以让组织适应和应对不断变化的客户需求和竞争压力。

7.4 持续学习

        高绩效的 DevOps 团队形成了一种成长思维。他们快速失败,然后将经验教训融入到他们的流程中,不断改进,提高客户满意度,加速创新和适应市场。DevOps 是一个旅程,所以总有成长的空间。

8. DevOps实现方法

        除形成 DevOps 文化之外,团队还通过在整个应用程序生命周期中实施特定做法,以充分利用 DevOps。其中一些做法有助于加速、自动化和改进特定阶段。其他的跨越几个阶段,帮助团队创建可帮助提高生产效率的无缝进程。

8.1 持续集成和持续交付 (CI/CD)

        持续集成是一种编码理念和一组实践,它促使开发团队经常实施小的代码更改并将它们签入版本控制存储库。大多数现代应用程序需要使用各种平台和工具开发代码,因此团队需要一致的机制来集成和验证更改。持续集成建立了一种自动化的方式来构建、打包和测试他们的应用程序。拥有一致的集成流程可以鼓励开发人员更频繁地提交代码更改,从而带来更好的协作和代码质量。

        持续交付从持续集成结束的地方开始,并自动将应用程序交付到选定的环境,包括生产、开发和测试环境。持续交付是一种将代码更改推送到这些环境的自动化方式。

8.2 版本控制

        版本控制是管理各版本中代码的做法,用于跟踪修订和更改历史记录,使代码易于评审和恢复。通常使用版本控制系统(比如 Git)来实现这种做法,这些系统允许多个开发人员协作编写代码。有关合并在相同文件中发生的代码更改、处理冲突以及将更改回滚到早期状态,这些系统具有一个清楚的流程。

        使用版本控制是一个基本的 DevOps 做法,可帮助开发团队协同工作,在团队成员之间划分编码任务,并存储所有代码,以便在需要时轻松恢复。

        版本控制也是其他做法(如持续集成和基础结构即代码)中的必要元素。

8.3 敏捷软件开发

        敏捷是一种软件开发方法,注重团队协作、客户和用户反馈,以及高度适应在短期发布周期内的变化。采用敏捷的团队向客户提供持续的更改和改进,收集他们的反馈,然后吸取经验并根据客户的需求和需要进行调整。敏捷与其他更传统的框架(如瀑布框架)有本质的不同,瀑布框架包括由顺序阶段定义的较长的发布周期。看板和 Scrum 是两种与敏捷相关的热门框架。

8.4 基础结构即代码Iac

        基础结构即代码以一种描述性的方式定义系统资源和拓扑,团队可以像编码一样管理这些资源。这些定义也可以存储并在版本控制系统中进行版本控制以及像代码一样进行评审和还原。

        使用基础设施即代码有助于团队以可靠、可重复和可控的方式部署系统资源。基础设施即代码也有助于自动化部署并降低人为错误的风险,特别是对于复杂的大型环境。这种可重复、可靠的环境部署解决方案允许团队维护与生产环境相同的开发和测试环境。将环境复制到不同的数据中心和云平台同样变得更加简单和高效。   

8.5 配置管理     

        配置管理是指管理系统中资源(包括服务器、虚拟机和数据库)的状态。使用配置管理工具,团队能够以一种可控和系统的方式进行更改,因此降低了修改系统配置的风险。团队使用配置管理工具来跟踪系统状态并帮助避免配置漂移,即避免系统资源的配置随时间偏离为其定义的目标状态。

        通过与基础设施即代码结合使用,系统定义和配置都很容易进行模板化和自动化,帮助团队大规模地操作复杂的环境。

8.6 持续监控

        持续监控意味着能够全面、实时地了解整个应用程序堆栈(从运行应用程序的基础结构到更高级别的软件组件)的性能和运行状况。可查看的内容包括遥测和元数据集合,以及需要引起操作员注意的预定义条件警报的设置。遥测包括从系统各个部分收集的事件数据和日志,这些数据和日志存储在可以分析和查询的地方。

        高绩效的 DevOps 团队会确保他们设置了可操作且有意义的警报,并收集了丰富的遥测数据,以便能够从大量数据中获得见解。这些见解有助于团队实时解决问题,并了解如何在未来的开发周期中改进应用程序。

9. DevOps 工具

        DevOps 工具可帮助组织的 DevOps 文化加速落地实现。大多数团队依赖于多种工具,构建自定义工具链,以满足应用程序生命周期中每个阶段的需求。虽然采用某个特定工具或技术与采用 DevOps 不同,但当 DevOps 文化存在并定义了流程时,如果人们选择了适当的工具,就可以实现和简化 DevOps 做法。常见的devops工具包含:

  • 开发ide,如vscode、goland等
  • github/gitlab:代码托管仓库
  • pipeline:ci/cd流程定义
  • jenkins:编译构建工具
  • 监控平台:zabbix、promethus等

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/755254
推荐阅读
相关标签
  

闽ICP备14008679号