1. 前言:提出CloudOps成熟度模型CARES
1.1 背景:DevOps与云不谋而合,亟待融合
DevOps已经成为了近年来运维的主要趋势之一,越来越多的企业在拥抱和实践DevOps文化,也越来越多的企业在公有云中使用DevOps,但是绝大部分企业都认为自己没有发挥和使用DevOps的核心能力。本章节将分享我们对这个问题的看法,并提出我们的解法:CloudOps。
1) DevOps越来越被广泛使用
DevOps本质是为了协同公司内多个不同团队快速朝着同一个业务目标前进,而衍生出来的一系列流程和自动化工具,强调的就是组织和业务的敏捷性。
DevOps理念囊括团队文化、组织协同和研发运维多个方面,希望消除研发、运维之间的利益差异和差距,促进团队协作,专注于端到端的能力交付和系统建设,让软件交付的全生命周期中的开发、部署、维护和扩展等各个步骤更加有效率,降低故障次数和故障时长,充分体现了以产品和效率为中心来进行软件开发和交付。
通过DevOps理念的实践,企业提高了研发效率,缩短了业务从研发到上线的周期,从而提升应用交付质量和交付效率。
DevOps模型定义了几个成功的关键分组,这些对于应用成功和提升效率非常有帮助。
• 敏捷开发的过程管理:实现高效协同,定义人与人之间的协同,业务和技术之间的协同,组织和团队的治理以及需求管理等多个要素和因子。
• 持续交付:通过定义更好的CI/CD工具来完成灵活变更和持续交付部署,更好地构建环境以及提升可视化能力。
• 技术运营提升:可以快速构建所需要的基础设施和资源保证,对于监控预警、问题发现、容量管理、变更管理和成本管理等,提供体系化的支撑。
随着DevOps越来越成熟,众多的企业通过DORA指标来衡量交付的效率,以及交付和变更的质量,主要包括部署频率(Deployment Frequency)、变更提前期(Lead Time for Changes)、平均恢复时间(Mean Time to Recovery)和变更失败率(Change Failure Rate)这四个维度,这几个指标体现了企业对应用交付的敏捷程度以及对于故障处理的时效性和效率。
2) 云上运维面临的挑战
在DevOps文化被广泛采访的同时,也有越来越多的企业借助云计算来实现数字化转型。云平台提供了巨大的计算力资源,规模化的弹性优势、丰富的标准化云产品、自动化工具,自助服务的模式不仅能帮助企业IT设施云化,按需取用随取随用的业务场景和自助服务的模式大大增强了企业基础设施需求和变更的敏捷性,借助于云平台和开源的监控以及运维自动化能力可以大幅提升应用的可观测性,提升故障的发现率,降低故障的恢复时间。
然而,研究表明,越来越多的企业在公有云中使用DevOps,但是绝大部分企业都认为自己没有发挥和使用DevOps的核心能力。
这是因为,将传统的DevOps直接搬到云上,并不能充分利用云的优势,因为相比于传统的DevOps的运维模式,云上自动化运维的模式和思维仍然有着不小差异。这也是部分企业上云之后,建立一套云原生自动化运维体系的挑战。
• 操作对象的差别
。 传统运维:直接操作的是物理的计算、网络、存储的硬件。
。 云端运维:大多通过软件暴露接口或OpenAPI来进行操作经过抽象的资源。
• 资产和资源的区别
。 传统运维面向的服务器是企业资产,需要提升单机的利用率,并提前很久规划资源。
。 云端运维则是在弹性租赁资源,除了提升单机利用率,还可按需扩缩容,利用OpenAPI和应用分组来管控资源。
• 统一化规模化差异
。 传统运维一般操作的规模相对较小,管理的机房相对明确和有限。
。 云端运维可快速通过资源的弹性能力轻松的管理数百台、跨机房的服务器。
• 强调安全可审计
。 云端操作来源和对象相对复杂,对操作审计和操作来源及报警的时效性要求比较高。
。 云端可将服务通过命令直接暴露在公网中,需要更多安全和网络规划能力来降低系统风险。
。 高频的可编程自动化运维需要有比较好的审计和问题追踪能力,避免越权和不容易被追踪的问题。
可见,DevOps需要根据云的特性进行一系列改造,才能与云进行更好地融合。
1.2 CloudOps:Cloud x DevOps
我们看到越来越多的企业在云上实践DevOps,为了更好地发挥DevOps和云的双重敏捷特质,我们在2021年提出了CloudOps(云上自动化运维)的思路来帮助企业在云上更好的落地DevOps,充分的利用云平台和DevOps的技术优势。我们认为CloudOps可以更好地贯彻DevOps的理念和精神。
1.2.1 如何理解CloudOps
CloudOps是运维领域的DevOps理念与云原生理念的融合,通过在云平台上借助于云原生架构实现运维的再进化,充分帮助企业降低IT运维成本、提升交付速度和系统灵活敏捷度、增强系统可靠性,构建更加安全可信开放的业务平台。
基于阿里云服务数千家企业客户的十多年的经验,我们总结了一些常见的最佳实践,撰写了这本《云上自动化运维白皮书》(简称《CloudOps白皮书》),并在其中提出了CloudOps成熟度模型,我们会从五个方面建设和评估CloudOps能力,期许提供云上自动化运维的最佳实践和参考,帮助客户更加充分地利用云带来的优势,进一步提高业务交付质量。
这套模型可以简称为CARES模型,即成本管理(Cost)、自动化能力(Automation)、可靠性(Reliabilty)、弹性(Elasticity)和安全与合规(Security)五个方面。CloudOps成熟度模型是对云上企业Ops能力的的评估,也是对云厂商产品能力和自服务能力的评估,评估云厂商是否有提供足够全面的工具和能力,让客户便捷地实现这些功能。
1.2.2 CloudOps的优势:云与DevOps的双重价值
DevOps给应用软件开发带来了极大的便利性。由于云服务有着“软件定义一切”和“弹性敏捷”等特点,跟DevOps的理念非常一致,这两者带来的优点是非常类似的。
采用DevOps理念,有以下四个方面优点和目的:
• 降低整体成本支出:打通不同团队来降低人员冗余,通过持续的自动化投入,例如Infrastructure as Code(IaC)、Ops as Code等,来降低人工成本。
• 提升整体的交付速度:通过敏捷形态和自动化达到。
• 提升灵活性:更快的交付速度意味着可以快速迭代、提升效率。
• 增强系统的可靠性:通过标准化、工具化、自动化实施避免人为错误,以及问题排查的MTTR(平均修复时间,Mean time to repair)。
使用云服务管理的也有类似的优点:
• 降低整体成本支出:减少对硬件的采购和运维的相关人力;企业按需消费,合理选型与计费,避免闲置。
• 提升整体的交付速度:云提供大量开箱即用的资源,分钟级创建与释放,加快部署速度。
• 提升灵活性:更快速、更细颗粒度交付资源,能够快速的适应市场需求与各种运营活动需求。
• 增强系统的可靠性:云服务天然提供了高可用的系统设计,例如多可用区、备份恢复、热迁移等手段,降低物理资源故障带来的损失;通过云服务厂商提供的工具和服务化能力,可以大幅降低部分问题和故障的排查难度,创建更具弹性、安全性和标准化的系统。
近几年来,我们欣喜地看到越来越多的企业和个人开发者将自己的测试环境和生产环境迁移上云。我们能看到云和DevOps之间有着许多相似的优点,通过将Cloud和DevOps结合,将能发挥更大的价值,包括降成本、提升交付速度、更灵活、提升系统可靠性等。
结合了云计算的DevOps,不仅仅可以提升效率和优化TCO,同时它还使我们的系统能够在不断变化的复杂环境中更可靠地工作。
1.3 总结
相信基于以上论述,读者们能够更加了解我们为什么认为云端的DevOps,需要有一套更为成熟和体系化的理念,才能帮助企业在云时代更好地发挥云和DevOps的优势。我们提出的新思路——CloudOps(云上自动化运维),就是在此背景下诞生。
阿里云弹性计算团队内部,联合十多位专家,共同编撰了一套CloudOps成熟度模型。如前所述,这套模型的几个维度我们可以称为CARES,即成本管理(Cost)、自动化能力(Automation)、可靠性(Reliabilty)、弹性(Elasticity)和安全与合规(Security)五个方面,来评估企业的CloudOps成熟度。每个维度如何理解,我们将在下面章节展开。
2. CloudOps的主要衡量纬度和定义
2.1 企业运维实践的现状与趋势
根据Gartner 2021 Top10 Technology Trends Impacting DevOps、Puppet State of DevOps Report 2021以及我们所观察到的业界趋势,我们观测到了企业运维实践有以下几个趋势形态:
1) 越来越多的企业在公有云中使用DevOps,但是绝大部分企业都认为自己没有发挥和使用DevOps的核心能力
• 65%的企业已经在公共云中使用DevOps。
• 只有20%的企业认为自己充分用到了DevOps的全部能力。
• 自动化已经成为DevOps实践中最高优先级的任务,通过结合云的优势和自动化能力,可以进一步推进DevOps的能力演进。
• 服务拆分导致应用激增,统一简单的可观测性是个巨大的挑战。
• 更多的应用拆分和并行的任务开发模式可能会导致更多的故障点。
• 应用之间的依赖关系对于单个应用的可靠性和可用性有了更高的要求。
• 网络延迟,容错,消息序列化,不可靠的网络和底层资源,异步性,版本控制。
4) 自助服务(Self-Service)已经是企业的一个迫切的需求
• 预测到2025年,75%的大型企业将建立自助服务基础设施平台,以帮助快速进行产品创新,而2020年这一比例为15%。
• AI和ML将推动DevOps快速进化。
5) 安全成为研发运维一体化关注的重点之一,希望把安全审查前置,让相关人员尽早参与进来,出现了DevSecOps的说法。
以上趋势也反映了企业在DevOps落地过程中的难点或者需要进一步加强的环节,主要包括:
• 要充分发挥DevOps的核心能力,突破点在于全局自动化能力的提升。大多数企业做到了局部流程的自动化,但由于组织结构等原因,推进统一的自动化工具开发、管理与维护成本高周期长,导致很难全链路打通。
• 应用可靠性提升的经济和技术门槛高,不仅涉及到物理基础设施的稳定可靠,还需要从架构设计上考虑应用的可用性。
• 可观测性非常重要:对于复杂的分布式系统,快速定位异常点并快速恢复依赖多层级的可观测能力,包括基础设施、应用层、业务层等。
• 自助服务模式的普及迫在眉睫:在DevOps模式下,每个开发人员需要自助完成开发、测试、集成、发布、部署等一系列任务,自助化工具可以大大提升开发人员的效率。
• 智能化运维能力的诉求:AI和ML是智能化运维的基础,可以极大提升运维效率,但智能化平台的搭建与校准门槛较高。
2.2 Cloud的特点与趋势
要充分利用云的优势,首先需要了解云的特点、能力和未来趋势,才能云上快速实现业务的交付。根据DevOps and Cloud infoQ trend report-June 2022报告,以及我们服务上万家企业客户的经验,我们总结云服务提供商必须具备的基础能力包括:
• 按需取用与成本洞察需要两手抓:云最早被提出来时,就希望做到像水电煤一样按需取用按量收费,所以云资源提供灵活丰富的付费方式是云的基础能力之一。但随着企业用云越来越深入,以及云计算技术红利的释放,成本洞察与优化成为企业深入用云的要求。
• 大规模的弹性:传统IDC模式下,从资源规划到真正可使用基本是以年为单位进行规划。但云计算本质上是一个规模经济,云的规模体量不仅可以大大缩短企业所需资源交付的周期,而且还可以灵活应对超出规划外的临时资源需求,随开随用弹性扩展。
• 一致的使用方式:云产品或云服务均提供标准化的OpenAPI接口,并支持常见的主流编程语言(包括Java、Go等)的SDK,可快速接入或被集成至各种平台。
• 低成本的可靠性:云服务提供商通常会在多个地域,或一个地域的多个可用区提供云服务,企业可以根据业务需要在多个可用区同时部署业务,避免业务因单个可用区出现异常时变得不可用,自动实现业务的高可用。
• 全方位的安全能力:除了数据合规、数据加密等基础的云上安全能力外,基于云的灾难恢复能力成为云上安全的新趋势,当业务的主要基础设施出故障后,云上灾难恢复能力能备份数据,并通过IT设施的快速构建让业务快速恢复。
• 自助服务模式:自助服务是云最重要的能力之一,丰富完善的自助服务能力能大大加快企业在云上构建业务流程的效率。
• 数据化和智能化的趋势:云平台可以完整记录用户的资源使用数据,包括资源规模,使用习惯,资源配置等。通过机器学习算法对这些数据进行分析建模后,可为用户提供定制化和个性化的业务洞察与分析,而无需企业从0到1进行建设。
2.3 CloudOps的定义与主要衡量指标
正如前言所述,CloudOps是传统IT运维和DevOps的延展,通过云原生架构实现运维的再进化,充分帮助企业降低IT运维成本、提升交付速度和系统灵活敏捷度、增强系统可靠性,构建更加安全可信开放的业务平台。
根据CloudOps的定义是DevOps x Cloud,即DevOps和Cloud的深度结合,其主要衡量指标也和DevOps和Cloud息息相关。
• DevOps的核心特质是:提升研发速度、提升质量、自动化、敏捷、持续交付、高度透明、节约成本等。
• Cloud的核心特质是:节约成本、安全、弹性灵活、增强协作、可观测、质量控制、故障恢复、可持续性等。
DevOps发轫于运维领域,运维领域最关注的,无外乎稳定、安全、降本(成本管理、增效(自动化)等,而在随着互联网“小步快跑、持续迭代”原则的兴起,对企业创新的速度和软件的交付效率有了更高要求,因此,敏捷成为了新时代的共同诉求。
综合DevOps与Cloud的特性来看,运维人员最关注的维度无外乎以上五个,它们分别是:成本、自动化、可靠性、弹性(敏捷)、安全,因此本白皮书将从以上五个维度分别进行阐述和说明。
DevOps已经在组织文化、产品、流程和工具有比较详细的定义,即通过敏捷组织和高效的持续集成持续发布,实现业务高质量的快速交付。
因此,本文将不会讨论DevOps关于研发支持体系、需求管理、任务管理、代码管理等内容,而是更多地从如何更好的利用公有云的能力与特点,基于我们服务海量客户的最佳实践与经验,为大家分享我们对这五个维度的理解与实践。
1) 成本和资源量化管理
云提供了大规模的资源创建和变配策略,也提供了多种多样的付费和计费手段以及方便灵活的变配方法,如何选择合适的资源规格和付费方式是非常重要的。由于其方便灵活的特性,往往会有类似停机不收计算类资源费用,以及折扣非常低的抢占式实例,特别是按需创建资源和关停不需要的计费资源,需要我们有良好的成本和资源量化管理习惯和能力。
2) 自动化能力
云计算核心就是自动化的运维能力,通过软件定义计算、存储、网络,来实现高级的可编程能力,从而避免人工配置的错误,充分实现可定制的自动化能力。而公有云的服务模式要求云厂商提供的云产品和云服务都必须是统一标准的,即所有云产品和云服务都可以通过OpenAPI进行调用,从而实现完全自动化的能力。
3) 高可用能力
云计算天生就是为提升可靠性和可用性而设计的,通过大规模数据中心、多数据中心技术,实现数据中心同城灾备,通过对硬件层的虚拟化,来降低和规避物理硬件故障对客户的影响,通过成熟高可用的服务来降低系统的复杂性。为了进一步提升应用的可观测性和问题的排查能力,云平台还会提供比较多的自助服务来做问题的排查和解决。
4) 弹性能力
云计算另外一个巨大技术红利就是弹性能力,针对计算、网络、存储、安全等基础资源,充分的发挥资源池化和分时复用的价值,通过弹性能力帮助客户应对业务的高峰,充分降低社会成本和企业运营的IT成本,提升资源的利用率,可以极速实现资源到应用的水平或者垂直升级,通过秒级到分钟级扩缩容能力,完成计算力的创建和释放。
• 自建IDC或者私有云面临2大突出问题
。 前提投入高、资源使用不足存在大量浪费。
。 后期业务发展快,资源难扩展。
而公有云自建立之初就定位为:让资源像水电煤等基础设施一样,按需取用,按量付费,快速交付,灵活便捷。这种按需取用,不需要时直接释放的能力其实就是公有云弹性能力的最直观体现,而弹性能力也是云计算最重要的能力之一。
公有云采用的是按需付费的服务方式,如果用户持续保有不需要的资源,或者出现资源错配,则会带来不必要的成本支出。因此,对云上用户而言,充分利用云上的弹性能力除了能快速满足业务增长的需求或提升业务的连续性外,还意味着有效降低云上不必要的成本。
5) 安全和合规能力
云上的安全涉及到多方面,包括底层技术设施和应用层,这里我们主要讨论的跟底层资源相关。
首先第一个便是网络安全。区别于传统的IDC,云计算为了对租户进行隔离,一般会构建私有网络或者专有网络,通常我们称为VPC(Virtual Private Network)。VPC相较传统网络有更好的灵活性、易用性和安全性,并且暴露了更多的能力来提升网络扩展性。它允许用户按需规划、定义自己的网段划分和路由规则,将传统的路由器交换机抽象成软件,并暴露给最终用户使用。VPC良好的扩展性,让用户能够构建简单可信的网络配置,实现企业级复杂的网络环境。对于VPC的规则设置和配置,都将大大影响网络安全性。
另外,DevOps中操作审计和追踪是非常重要的能力,在CloudOps中亦然,云计算平台一般也会相应的为您提供面向资源和操作的配置历史追踪、配置合规审计等能力,帮助客户轻松实现基础设施的自主监管,确保持续性合规。
3. CloudOps成熟度模型整体及等级说明
3.1 递进的成熟度模型
运维是对资源和应用的全生命周期的管理和能力提升,进而在成本、稳定性、效率上达成一致可接受的状态。云上运维也是类似的,也是一个从简单到复杂、从成长到成熟的过程,持续以提升安全合规、降低成本、提高效率为核心目标。
在现实中,根据使用者的上云状态、使用规模等,其云上运维的思路都不尽相同,但其规律确是有迹可循。创业公司从第一天开始就在云上部署其生产环境服务客户,而对于已经存在IT投入的公司来说,则需要花费更长的时间逐步上云。
无论哪种场景,其运维需求都会持续存在,随着业务不断发展,运维也日益复杂,因此有效地规划和制定运维策略及方法就非常重要,该模型致力于提供一个已被大规模验证的最佳实践供各位参考。
3.2 成熟度模型等级说明
在后续章节中,我们会针对CloudOps成熟度模型的五大维度进行拆解,并对每个维度进行分级,不同等级说明如下:
1) 初级
代表了该类别的初步使用状态,企业刚开始考虑到这些特性(自动化、可靠性、安全和合规等),在实践中探索相关的云产品,在使用中以默认的使用方式为主,或接受其推荐的配置模式,简单开启相关的功能,这样即可满足当时的需求,所以定义为初级。
该等级往往可以对应到相关云产品的最基础的能力,默认配置、快速配置为主。
2) 中级
随着业务的不断发展,云上规模的逐步扩大,企业对于这些特性(自动化、可靠性、安全和合规等)的需求不断提升,初级的使用方式已经不能够满足需求,默认的配置不再符合具体的场景,此时需要深入了解各个相关云产品的特性,然后做出更多的、符合自身场景的配置和规划。
该等级往往可以对应到相关云产品的中阶能力,需要根据场景调整配置和规划。
3) 高级
企业云上的资源已经具备了一定的规模,对于这些特性(自动化、可靠性、安全和合规等)的需求更加严苛,提高效能和降低成本甚至成为核心诉求之一。此时对于这些特性(自动化、可靠性、安全和合规等)将会一一拆解并进行调研和分析,如何可以最大化地利用云上已有的能力成为其实施的关键,对于各项指标的要求不断接近行业领先水平。
该等级往往可以对应到相关云产品的高级能力,甚至包括很多beta能力,以便满足自身严苛的高需求。
4) 标准化
该阶段的特点是要求企业在常规运维操作上具备极佳的可复制能力,其各项流程和指标都成为公司内的一个基本标准,并且以技术的方式将其落地,可以从一个模块复制到其他模块,新建的模块自动获得以上的高标准能力。
公司内部对于这些特性(自动化、可靠性、安全和合规等)已经形成了共识和策略,并持续审视和演进。该等级通常要求一个中心化的标准和策略落地平台,以规范其作业流程和配置,并持续迭代。
5) 智能化
从分离的Dev和Ops到一体化的DevOps,再从DevOps到更适合云上场景的CloudOps——Cloud所特有的规模效应将会使CloudOps更快实现智能化运维AIOps,实现更多的主动化运维(SmartOps,注:AI和ML以前的智能化运维简称为SmartOps,即主动和自动化相结合的运维方式),以期更加智能地处理出现的故障,甚至在真正的故障出现之前预先处理故障以避免故障的发生。
智能化要求的不仅仅是自动,而是有了部分学习、预测的能力。相同的智能化同样会出现于其他特性中(弹性能力、成本控制等),提供更加准确的预测能力有利于进一步降低成本,而更加智能的成本预测也会帮助财务更早地做出有支撑的决策等。
该等级通常从使用具备AI能力的各项云产品开始,然后逐步地从局部的、单个的场景开始,逐步演进成系统化的、全面的智能化,最终实现真正的智能化。