开发者学习笔记【阿里云云原生助理工程师认证(ACA)课程:阿里云云原生 DevOps - DevOps 核心组成】
课程地址:https://edu.aliyun.com/course/3112075/lesson/19058
阿里云云原生 DevOps - DevOps 核心组成
内容介绍:
一、 DevOps 核心组成部分简述
二、 DevOps 组织层面
三、 DevOps 自动化工作流水线
四、 DevOps 企业实践全景视图
一、DevOps 核心组成部分简述
1、组织、文化
落实 DevOps 思想,首先要有与之匹配的组织架构,能够把敏捷、精益这种开发的思想传递到组织中的每一个人,包括产品经理、开发、测试、运维在内的每一个人,都需要理解这种文化,并且按照这种文化完成自己的工作。
2、自动化流水线
为企业提供了一个高度自动化的持续集成、持续交付、持续部署的能力。流水线能够自动化的完成软件的打包、集成、测试再到交付、部署全过程。
3、DevOps 工具集
自动化流水线需要有相应的 IT 技术和工具做支撑,团队需要掌握这些工具以简化自己的工作,更好的提升效率。
二、DevOps 组织层面
DevOps 强调的组织架构和企业文化理念需要自上而下的设计,首先在顶层需要认可敏捷开发的文化及开发方式,更好的促进开发部门、运维部门和质量保障部门之间的沟通、协作与整合,组织形式是一种顶层的设计,应自上而下的考虑清楚,需要有怎样的团队、角色、具体做怎样的工作。
DevOps 提出一个团队的规模大概是10-12人,其中包含产品研发、测试、运维等全部角色,控制团队规模的好处有以下几点,一是小团队的工作效率高,团队成员少的好处是当有问题需要解决时,能够很快的找到对应的人,以人为部门主体比以部门为主体效率提高很多;二是小团队更容易形成共同的目标,因为人数不多,想法容易沟通,思想上容易碰撞火花,当想法达成一致时很容易在旧的思想和新的计划中进行取舍,执行和落实的速度快,如创业公司往往早创业初期是产出最大的时期,而发展到一定规模后,由于团队人员越来越多,反而会出现产品交付效率变低,产品创新能力下降的问题。谷歌提出五个 DevOps 原则,一是精简的组织架构,二是愿意承担一部分试错带来的损失,三是分阶段的一小步进行转型,四是最大化的利用工具的最大化流程,五是对所有的过程和结果进行记录和分析。因此得出, DevOps 不是简单的开发软件化,而是企业的学历能力不断提升的结果,将企业改造成敏捷型、学习型的组织,运用新的工具优化组织架构和流程,不断的进行自我革命和创新,具体到每一个企业,组织的设计要根据自身的文化和企业对 DevOps 的理解去构建,并不是某个企业做的很好直接去照搬。
符合 DevOps 里的团队是具有一致性理念,高效沟通,敏捷型,学习型团队,具体是具有统一的思维、目标、技术及工具链,有良好的协作机制和沟通机制,并且具有一定敏捷度,能够快速的响应变化,具备一定软件架构设计的能力,同时要能够不断的快速试错,持续学习和创新。
三、DevOps 自动化工作流水线
自动化流水线能够高度自动化持续集成,持续交付和持续部署。
持续集成覆盖了从开发、构建、集成到测试四个阶段,是指软件个人研发的部分向软件整体进行交付,频繁的进行集成,以便更快的发现其中错误。持续交付是指在集成的基础上增加交付环节,将集成后的代码部署在贴近真实环境的内生产环境中进行运行,从而实现自动化的交付。持续部署是持续交付的延续,是指代码评审通过后能够自动的部署到生产环境中。
1、持续集成
持续集成强调开发人员提交新代码之后,立刻进行构建、单元测试,根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。
在此流程图中,开发人员提交代码到代码仓库,并通过代码仓库的审核和验证,触发 CL 的流程,及先构建版本,再做单元测试,最后得到输出的结果,开发人员对输出的结果进行反馈(如是否通过测试,是否以及完成集成),此时开发人员能够很清楚整个过程,一旦出现问题,也能够快速定位错误,明确代码在哪个环节产生的问题,能够更好的控制开发流程,采用自动化的 CI 工具,将开发人员从大量的手工创作中解放出来,使得工作人员更能专注于代码的开发工作。
2、持续交付
持续交付指开发人员对应用的更改会自动进行错误测试并上传到存储库(如 GitHub 或容器注册表),由运维团队将其部署到实时生产环境中,其目的是解决开发和运维团队之间可见性及沟通较差的问题,确保尽可能减少部署新代码时所需的工作量。
此流程图,在持续集成之后会进入交付的环节,首先进行整体的测试,测试通过后将其发送到类生产环境中,到此为止都是由自动化完成的,从类生产环境在部署到生产环境是手工完成,需要运维人员根据实际的业务情况进行部署,此过程称为持续交付。
3、持续部署
持续部署,自动将开发人员的更改从存储库发布到生产环境,以供客户使用,其目的是解决因手动流程降低应用交付速度,从而使运维团队超负荷的问题,以持续交付的优势为根基,实现了管道后续阶段的自动化。
从流程图看到,持续部署是持续交付的延申,可以自动将应用发布到生产环境,持续部署意味着开发人员对应用的更改,在编写后的几分钟就能生效,前提是通过了自动化的测试,这样就便于持续接收和整合后的反馈。持续部署加快了代码提交的速度,使得新功能能够在第一时间部署到生产环境中。
高度自动化的持续集成,持续交付和持续部署构成了整个 DevOps 流水线,这种流水线需要大量灵活和敏捷的工具来支撑每一个环节,团队需要掌握庞大的工具链,使之能够形成一个统一的工作台,这就是要搭建的 DevOps 技术平台,图中将整个开发流程分成了不同的环节,
每个环节由不同技术链的工具,整个 DevOps 技术生态工具链涉及的工具达上百个,随着开源技术的不断发展,技术工具集也在不断地推崇出新,大致分为需求管理、项目管理、代码管理、构建工具、持续集成、持续部署、自动化发布、配置管理、运营监控、容器及容器编排等。
工具链中的各种工具,通常一个接一个串行执行,一个工具的输出是另外一个工具的输入,工具之间的标准化尤为重要,如果选择开源工具,就需要具备很强的底层整合能力,并将这套工具链打造成一个可用型的服务型产品。
工具间的无缝集成往往很难实现,尤其是对 DevOps 没有深刻的理解和多年实践经验的企业,大量的整合开源工具会带来很多成本,给企业带来沉重的负担,对于多数企业而言,应该考虑第三方已经完成集成的一站式 DevOps 平台以用来节约成本,将更多的时间经历专注于业务的开发。
四、DevOps 企业实践全景视图
上图从组织文化、技术、流程三个维度进行实践。
1、组织及文化
文化上需要存在信任,协助精神,主人翁意识,能够持续的优化,不断学习。在组织上实现敏捷技术,强调的是全站团队而非全站员工,按照原则组建团队,团队的分组需要基于特性而非基于技术特性划分,确保每一个团队开发出的都为可用型,特性团队是指在大型的项目中根据功能特性进行团队的划分与组合,而非技术特性,根据功能特性组建的团队每次的交付都为用户的可用型,可提前进行确认,避免项目结束时发现交付的产品不可用,通过全站和特性团队的磨炼,逐渐形成自制的、自交付的团队组织。
2、技术
实施了基础设施编码的能力,将基础环境可编程化,项目团队成员可自助获取形成持续编译、自动化测试、持续部署的能力。
3、流程
流程上实施看板文化,看板通常被当作任务协调和沟通的机制,将看板做成自制管控的平台,量化组织生产的能力,在产品交付上采用 MVP 模式,快速交付产品原型,通过市场来验证和修正产品,最终适应市场的需求。每个项目必须建立持续发布的机制,形成自助化、自动化的两种能力,建立度量体系,建立组织各种数据基线,一方面可以掌控组织的生产力水平,另一方面可以通过度量数据反向优化组织的评定点。
以下为对本小结内容总结,首先,什么是 DevOps ,它是一套集组织文化、团队协作、工程实践和自动化工具为一身的工作方式,可以帮助企业快速高效、高质量的交付应用程序和服务为目的,从而更好的实现客户的价值。
DevOps 由三种核心组成,组织架构与企业文化是最重要的一部分;其次是自动化的流水线,它能够为企业提供高效的持续集成、持续部署的能力; DevOps 的技术工具链可以轻松的实现企业自动化的 DevOps 流水线,提供企业所需要的灵活的、敏捷的 DevOps 工具及其服务。
本节课还介绍了什么是 DevOps 自动化工作流水线即高度自动化的持续集成、持续部署和持续交付。