CN117099079A - 经由配置在云平台中的数据中心上的持续交付部署的服务的系统配置冻结和变更管理 - Google Patents
经由配置在云平台中的数据中心上的持续交付部署的服务的系统配置冻结和变更管理 Download PDFInfo
- Publication number
- CN117099079A CN117099079A CN202180095275.6A CN202180095275A CN117099079A CN 117099079 A CN117099079 A CN 117099079A CN 202180095275 A CN202180095275 A CN 202180095275A CN 117099079 A CN117099079 A CN 117099079A
- Authority
- CN
- China
- Prior art keywords
- data center
- pipeline
- cloud platform
- service
- computer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000007710 freezing Methods 0.000 title claims abstract description 32
- 230000008014 freezing Effects 0.000 title claims abstract description 32
- 238000013070 change management Methods 0.000 title claims description 65
- 238000012384 transportation and delivery Methods 0.000 title description 9
- 230000008859 change Effects 0.000 claims abstract description 105
- 238000000034 method Methods 0.000 claims description 117
- 238000012360 testing method Methods 0.000 claims description 42
- 238000012986 modification Methods 0.000 claims description 35
- 230000004048 modification Effects 0.000 claims description 35
- 238000004519 manufacturing process Methods 0.000 claims description 29
- 238000003860 storage Methods 0.000 claims description 29
- 230000004044 response Effects 0.000 claims description 27
- 238000011161 development Methods 0.000 claims description 25
- 238000012544 monitoring process Methods 0.000 claims description 4
- 238000012550 audit Methods 0.000 claims 6
- 238000007726 management method Methods 0.000 description 52
- 230000008569 process Effects 0.000 description 40
- 238000012545 processing Methods 0.000 description 28
- 241000287219 Serinus canaria Species 0.000 description 16
- 230000006870 function Effects 0.000 description 11
- 238000013507 mapping Methods 0.000 description 11
- 230000015654 memory Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000008520 organization Effects 0.000 description 10
- 230000009471 action Effects 0.000 description 8
- 230000003993 interaction Effects 0.000 description 7
- 230000014509 gene expression Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000007613 environmental effect Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 239000000725 suspension Substances 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000036571 hydration Effects 0.000 description 2
- 238000006703 hydration reaction Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 238000002405 diagnostic procedure Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000000887 hydrating effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000005067 remediation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Abstract
计算系统,例如,多租户系统,使用独立于云平台的云平台基础设施语言,在云平台中创建的数据中心中部署软件工件。该系统允许用户为配置在云平台上的数据中心中运行的服务指定一段时间区间的系统配置冻结。在系统冻结期间,禁止或暂停对系统的改变。系统生成用于修改服务的系统配置的流水线。流水线包括用于做出与服务相关联的改变的变更阶段和用于获取锁的变更前阶段。如果系统接收到执行数据中心实体的系统冻结的请求,则系统获取数据中心实体的服务上的锁。结果,配置为改变服务的系统配置的流水线的执行被搁置。
Description
背景技术
技术领域
公开文本总体上涉及云计算平台中软件发布的管理,以及经由在云计算平台中配置的数据中心上的持续交付来强制执行服务的系统配置冻结,以及在云计算平台中配置的数据中心上部署的软件工件的变化的管理。
相关技术描述
组织越来越多地在云平台(或云计算平台)上响应,如AWS(亚马逊网络服务)、谷歌云平台、微软AZURE等,以满足其基础设施需求。云平台通过互联网向组织提供服务器、存储、数据库、网络、软件等。组织正在将其服务转移到云平台,以提供计算资源的可扩展性和弹性。
组织使用可以在云平台上管理和部署应用程序的持续交付平台来维护云平台上的云基础设施。这种持续交付平台允许组织简化软件部署过程,并管理云平台上的应用程序、防火墙、集群、服务器、负载均衡器和其他计算基础设施。持续交付平台使开发人员更容易对影响系统上运行的服务的软件工件进行改变,并部署更新的软件工件。然而,有时不希望对系统上运行的服务进行任何改变。提供系统的组织可能倾向于在这样的时间段内施加系统冻结(也称为特征冻结或计算中止)。例如,如果系统期望特别高的流量。修改与服务相关联的软件工件可能会降低系统的稳定性,因为作为改变的结果,可能会遇到诸如软件缺陷或软件错误之类的不可预见的情况。
诸如多租户系统的大型系统可以管理代表多租户系统的租户的大量组织的服务,并且可以与多个云平台交互。多租户系统可能必须在多个云平台之间维护数千个租户。此外,每个云平台支持的软件、语言和特征可能不同。因此,跟踪对部署配置在云平台上的数据中心上的服务所做的改变是一个繁琐并且容易出错的过程。结果,即使存在对在线系统中部署的服务的计算中止,开发者也很有可能改变与该服务相关联的软件工件,从而降低系统的稳定性。
此外,几个用户和用户团队可能涉及与服务相关联的软件发布。因此,跟踪对部署配置在云平台上的数据中心上的服务所做的改变变得很复杂,因为可能会对源代码以及系统配置进行频繁的改变。跟踪对部署在大型系统中的服务的改变是很麻烦的,因为相关信息要么难以访问,要么不可用。这导致支持和跟踪云平台上配置的数据中心上的软件发布和对软件发布的改变的多租户系统的高维护成本。
附图说明
图1是示出根据实施方案配置在云平台上数据中心的多租户系统的系统环境的框图。
图2A是示出根据实施方案的部署模块210的系统架构的框图。
图2B示出根据实施方案的用于在数据中心中部署软件工件的整体过程。
图3是示出根据一个实施方案的软件发布管理模块的架构的框图。
图4示出根据一个实施方案的数据中心声明性规范的实施例。
图5示出根据一个实施方案的基于声明性规范在云平台上创建的示例性数据中心。
图6是示出根据一个实施方案的基于声明性规范在云平台上生成数据中心的框图。
图7示出根据实施方案的用于生成用于配置在云平台上的数据中心上部署软件工件的流水线的整体过程。
图8示出根据实施方案的示例性主流水线。
图9示出根据实施方案的云平台上的主流水线的环境的阶段执行的整体过程。
图10示出根据实施方案的示例性主流水线。
图11示出根据实施方案的系统配置冻结模块的系统架构。
图12示出根据实施方案的用于强制执行系统配置冻结的示例性流水线。
图13示出根据实施方案的用于对部署在云平台中的数据中心上的服务的系统配置进行改变的过程。
图14示出根据实施方案的用于执行配置在云平台上的数据中心的数据中心实体的系统配置冻结的整体过程。
图15示出根据实施方案的变更处理模块的系统架构。
图16示出根据实施方案的用于管理改变的示例性主流水线。
图17示出根据实施方案的用于配置在云平台上的数据中心上部署的服务的变更管理的整体过程。
图18示出根据实施方案的由主流水线的变更管理阶段执行的过程。
图19示出根据实施方案的用于管理用于收集与改变相关的事件信息的队列的过程。
图20是示出根据一个实施方案的在图1的环境中使用的典型计算机系统的功能视图的框图。
这些图仅出于示出的目的描绘了各种实施方案。本领域的技术人员将容易地从以下讨论中认识到,在不偏离本文描述的实施方案的原理的情况下,可以采用本文所示的结构和方法的替代实施方案。
图使用相似的参考数字来标识相似的元件。参考数字后面的字母,如“115a”,指示该文本具体指的是具有该特定参考数字的元件。文本中没有后面的字母的参考数字,如“115”,指的是图中带有该参考数字的任何或所有元件。
具体实施方式
云平台经由互联网等公共网络按需向计算系统提供计算资源,如存储、计算资源、应用程序等。云平台允许企业最大限度地降低建立计算基础设施的前期成本,还允许企业以更少的维护开销更快地启动和运行应用程序。云平台还允许企业调整计算资源,以适应快速波动和不可预测的需求。企业可以使用云平台创建数据中心,供企业的用户使用。然而,在每个云平台上实现数据中心需要云平台技术方面的专业知识。
实施方案使用独立于云平台的云平台基础设施语言,在云平台中创建数据中心。该系统接收数据中心的独立于云平台的声明性规范。声明性规范描述了数据中心的结构,并且可能不提供指定如何创建数据中心的指令。独立于云平台的声明性规范配置为在多个云平台中的任意云平台上生成数据中心,并且使用云平台基础设施语言进行指定。该系统接收标识用于创建数据中心的目标云平台的信息,并编译独立于云平台的声明性规范,以生成特定于云平台的数据中心表示。该系统发送特定于云平台的数据中心表示和用于在目标云平台上执行的指令集。目标云平台使用平台特定数据中心表示来执行配置数据中心的指令。该系统为用户提供对云平台配置的数据中心计算资源的访问。
该系统执行与配置在云平台上的数据中心上的软件发布相关的操作,例如,部署软件发布、提供资源、执行软件发布的回滚等。该系统访问配置在目标云平台上的数据中心。数据中心是基于独立于云平台的声明性规范生成的,该规范包括数据中心实体的层次结构。每个数据中心实体包括(1)服务或(2)一个或多个其他数据中心实体中的一个或多个。该系统生成独立于云平台的主流水线,该主流水线包括:(1)用于部署软件工件的阶段序列,例如,开发阶段、测试阶段和生产阶段,以及(2)用于将软件工件从一个阶段推进至阶段的序列的后续阶段的标准。该系统根据声明性规范定义的数据中心布局,编译独立于云平台的主流水线,以生成用于目标云平台的依赖于云平台的详细流水线,以及用于执行与服务相关的操作的指令。该系统在目标云平台上执行依赖于云平台的详细流水线,例如,在数据中心的数据中心实体上部署软件发布。
该系统允许用户为配置在云平台上的数据中心中运行的服务指定一段时间区间的系统冻结(也称为计算中止)。在系统冻结期间,禁止或暂停对系统的改变。在系统冻结期间可以防止的改变包括对软件工件的升级、对系统使用的资源配置的改变(例如,基础设施资源,如负载均衡器、数据库、服务器、防火墙、网络资源等)、数据中心配置改变、对系统使用的库和其他系统工件的修改、对应用程序的修改等。尽管在线系统可以使用持续交付平台来允许开发者修改软件工件中使用的源代码,但是本文公开的实施方案允许组织在特定时间区间期间搁置任何这样的改变。
例如,经由在线系统提供服务的组织可以确定在高流量时段期间,在线系统上运行的服务不应该受到干扰。因此,实施方案允许系统被冻结,使得系统继续运行并且不能对系统进行任何改变。这降低了遇到系统停机的可能性。
作为另一个实施例,系统可能有一些问题,需要团队来分析系统以确定问题的原因。然而,在分析系统以确定特定问题的原因的时间段期间,系统管理员可能更喜欢冻结系统的服务,使得在监测和调试系统时不能对软件工件进行改变。这有助于隔离在监测和调试系统时对系统的修改的问题,该修改使得难以确定问题是由服务的原始软件引起的,还是由调试问题时对软件所做的任何改变引起的。
作为另一个实施例,系统内可能有多个子系统在运行。所公开的实施方案允许以互斥的方式修改子系统,使得一次只修改一个子系统(或小的子系统集)。可以通过为特定子系统部署软件工件来一次修改该子系统。系统管理员可能倾向于对剩余的子系统施加暂停,从而一次只修改一个子系统。一旦部署和测试了子系统,就取消了暂停,以确保在允许其他子系统继续对它们相应的软件工件进行改变之前,子系统可靠地运行。实施方案允许对系统施加这种暂停,从而选择性地防止对部署在系统中的软件工件的修改。
云平台在本文中也被称为基底。该系统可以表示多租户系统,但不限于多租户系统,并且可以是任何在线系统或具有对云平台的网络访问的任何计算系统。
整体系统环境
图1是示出根据实施方案配置在云平台上数据中心的多租户系统的系统环境的框图。系统环境100包括多租户系统110、一个或多个云平台120和一个或多个客户端设备105。在其他实施方案中,系统环境100可以包括更多或更少的部件。
多租户系统110存储一个或多个租户115的信息。每个租户可以与代表多租户系统110的客户的企业相关联。每个租户可以具有经由客户端设备105与多租户系统交互的多个用户。
云平台也可以被称为云计算平台或公共云环境。租户可以使用云平台基础设施语言来提供在目标云平台120上创建的数据中心的声明性规范,并使用数据中心来执行操作,例如,提供资源、执行软件发布等。租户115可以在云平台120上创建一个或多个数据中心。数据中心表示计算资源集,该计算资源集包括用户(例如,与租户相关联的用户)可以使用的服务器、应用程序、存储、内存等。每个租户可以向租户的用户提供不同的功能。因此,每个租户可以在为该租户配置的数据中心上执行不同的服务。多租户系统可以为每个租户实施不同的软件发布和部署机制。租户可进一步获得或开发包括用于在数据中心中执行的各种服务的指令的软件版本。实施方案允许租户为在数据中心的不同计算资源上运行的不同服务部署软件发布的特定版本。
数据中心的计算资源是安全的,并且未被授权访问它们的用户可能无法访问它们。例如,针对租户115a的用户创建的数据中心125a可能不会被租户115b的用户访问,除非明确地授权访问。类似地,针对租户115b的用户创建的数据中心125b可能不会被租户115a的用户访问,除非明确地授权访问。此外,只有在根据数据中心的声明性规范向计算系统授权访问时,由数据中心提供的服务才可以由数据中心外部的计算系统访问。
对于多租户系统110,多个租户的数据可以存储在相同的物理数据库中。然而,数据库配置为使得一个租户的数据与其他租户的数据在逻辑上保持分离,使得一个租户不能访问另一个租户的数据,除非明确共享这种数据。可以将他们的数据存储在与其他客户的数据共享的表中,对于租户来说是透明的。数据库表可以存储多个租户的行。因此,在多租户系统中,系统的硬件和软件的各种元件可以由一个或多个租户共享。例如,多租户系统110可以执行同时处理对多个租户的请求的应用服务器。然而,多租户系统强制执行租户级数据隔离,以确保一个租户的作业不会访问其他租户的数据。
云平台的实施例包括AWS(亚马逊网络服务)、谷歌云平台或微软AZURE。云平台120提供可以由租户115或云平台120外部的任何计算系统按需使用的计算基础设施服务。云平台提供的计算基础设施服务的实施例包括服务器、存储、数据库、网络、安全、负载平衡、软件、分析、智能和其他基础设施服务功能。租户115可以使用这些基础设施服务以可扩展和安全的方式构建、部署和管理应用。
多租户系统110可以包括租户数据存储,其存储多租户存储的各种租户的数据。租户数据存储可以将不同租户的数据存储在单独的物理结构中,例如,单独的数据库表或单独的数据库。可替代地,租户数据存储可以将多个租户的数据存储在共享的结构中。例如,所有租户的用户账户可以共享相同的数据库表。然而,多租户系统存储附加信息以在逻辑上分离不同租户的数据。
图1中所示的每个部件表示一个或多个计算设备。例如,计算设备可以是执行MicrosoftTMWindowsTM兼容操作系统(OS)、AppleTMOS X和/或Linux发行版的常规计算机系统。计算设备也可以是具有计算机功能的客户端设备,例如个人数字助理(PDA)、移动电话、视频游戏系统等。每个计算设备存储软件模块,其存储指令。
系统环境100的各种部件之间的交互通常经由网络(图1中未示出)来执行。在一个实施方案中,网络使用标准通信技术和/或协议。在另一个实施方案中,实体可以使用自定义和/或专用数据通信技术来代替或补充上述技术。
尽管本文公开的技术是在多租户系统的上下文中描述的,但是可以使用可能不是多租户系统的其他系统来实施这些技术。例如,单个组织或企业使用的在线系统可以使用本文公开的技术在一个或多个云平台120上创建一个或多个数据中心。
系统架构
多租户系统110包括用于在云平台上部署软件工件的部署模块。部署模块可以执行与软件发布相关联的各种操作,例如,在云平台上提供资源、部署软件发布、执行在数据中心实体上安装的软件工件的回滚,等。图2是示出根据实施方案的部署模块210的系统架构的框图。部署模块210包括数据中心生成模块220和软件发布管理模块230。其他实施方案可以具有不同于这里描述的部件和/或其他部件,并且功能可以以不同的方式分布在部件之间。
数据中心生成模块220包括用于在云平台上创建数据中心的指令。软件发布管理模块230包括用于部署在由数据中心生成模块220创建的数据中心上运行的各种服务或应用的软件发布或软件工件的指令。
数据中心生成模块220从用户(例如,租户的用户)接收数据中心的独立于云平台的声明性规范。数据中心的独立于云平台的声明性规范指定了数据中心的各种实体。在一个实施方案中,数据中心的独立于云平台的声明性规范包括数据中心实体的层次结构组织,其中每个数据中心实体可以包括一个或多个服务、一个或多个其他数据中心实体或两者的组合。图4更详细地描述了各种类型的数据中心实体。数据中心生成模块220接收平台独立声明性规范和目标云平台作为输入,并为目标云平台生成特定于云平台的元数据表示。数据中心生成模块220在目标云平台上部署生成的特定于云平台的元数据表示,以根据声明性规范在目标云平台上创建数据中心。
软件发布管理模块230接收(1)工件版本映射225和(2)主流水线235作为输入。工件版本映射225标识以部署在特定数据中心实体上为目标的软件发布或部署工件的特定版本。工件版本映射225将数据中心实体映射到以部署在数据中心实体上为目标的软件发布版本。主流水线235包括用于与数据中心上的软件发布相关的操作的指令,例如,部署服务、销毁服务、提供服务资源、销毁服务资源等。
主流水线235可以包括用于执行与不同环境(如开发环境、测试环境、金丝雀环境和生产环境)的软件发布相关的操作的指令,以及用于确定何时将软件发布从一个环境推进至另一个环境的指令。例如,如果软件发布在开发环境中的部署执行超过阈值数量的测试用例,则该软件发布被推进至测试环境以进行进一步的测试,例如,系统级和集成测试。如果测试环境中的软件发布通过了测试覆盖的阈值,则软件发布被推进至金丝雀环境,在该环境中,软件发布在试用的基础上被提供给一小部分用户。如果金丝雀环境中的软件发布在阈值时间内没有错误地执行,则软件发布被推进至生产环境,在生产环境中,该软件发布被提供给所有用户。
软件发布管理模块230编译输入工件版本映射225和主流水线235,以生成传输到目标云平台的特定于云平台的详细流水线255。特定于云平台的详细流水线255包括用于在数据中心实体上部署软件发布或适当版本的部署工件的指令,如工件版本映射225中所指定的。软件发布管理模块230可以接收对其中一个输入的修改。例如,用户可以修改输入工件版本映射225并提供相同的主流水线235。因此,使用相同的主流水线,但在数据中心实体上部署不同的软件发布。软件发布管理模块230重新编译输入,以生成新的特定于云平台的详细流水线255,该流水线根据新的工件版本映射225部署软件发布的版本。
工件版本映射也可以被称为部署清单、版本清单、软件发布映射或软件工件版本映射。主流水线也可以被称为主部署流水线或主编排流水线。
图2B示出根据实施方案的用于在数据中心中部署软件工件的整体过程。图2B示出包括各种数据中心实体的数据中心265的布局。如图2B中所示,工件版本映射225标识目标为在数据中心265的不同数据中心实体275上发布的软件的不同版本。主流水线表示通过数据中心的各种环境的部署工件流。软件发布管理模块230将主流水线235中的信息与工件版本映射225组合,以确定特定于云平台的详细流水线255,该流水线根据工件版本映射225在数据中心实体上映射适当版本的软件工件。
图3是示出根据一个实施方案的软件发布管理模块230的架构的框图。软件发布管理模块230包括解析模块310、流水线生成器模块320、工件版本映射存储330、流水线存储340、系统配置冻结模块350、变更处理模块355和流水线执行引擎360。其他实施方案可以包括比图3中本文所指示的模块更多、更少或不同的模块。
可以以分布式方式在不同系统上运行图3中所示的各种模块。例如,流水线生成器模块320可以在多租户系统的计算系统上执行,而流水线执行引擎360可以在部署数据中心实体和服务的云平台的计算系统上执行。
解析模块310解析各种类型的用户输入,包括数据中心的声明性规范、工件版本映射225和主流水线235。解析模块310生成所处理的输入的数据结构和元数据表示,并将所生成的数据结构和元数据表示提供给软件发布管理模块230的其他模块以供进一步处理。
元数据存储340存储由软件发布管理模块230生成的数据中心的各种转换的元数据表示。如果在数据中心的当前版本中遇到问题,则可以使用转换的元数据表示执行回滚到先前版本。转换的元数据表示可以在转换过程的各个阶段用于验证、审计、治理等。
流水线生成器模块320结合作为输入接收的工件版本映射来处理主流水线,以生成用于目标云平台的详细流水线。流水线包括阶段,该阶段包括用于提供服务或部署应用的指令,用于根据工件版本映射为云平台上的各种服务的部署软件发布的版本。
工件版本映射存储330存储从用户接收的工件版本映射,并且流水线存储340存储主流水线以及由流水线生成器模块320生成的流水线。
系统配置冻结模块350接收并处理对配置在云平台上的数据中心的数据中心实体中运行的服务执行系统配置冻结的请求。接收到的请求指定配置在云平台上的一个或多个服务或数据中心实体,以及请求对服务或数据中心实体执行系统配置冻结的时间区间。结合图11提供了系统配置冻结模块350的进一步细节。本文描述了由系统配置冻结模块350执行的各种过程。
变更处理模块355识别对安装在数据中心中的服务进行改变的请求,并跟踪描述改变的信息。变更处理模块350与变更管理系统交互,并记录实施服务中的改变的流水线的执行细节。记录的详细信息可以用于审计,例如,确定为什么要对数据中心的服务配置进行某些改变。
流水线执行引擎360执行由流水线生成器模块320生成的详细流水线。在一个实施方案中,流水线执行引擎360是诸如SPINNAKER的系统,其执行用于发布/部署软件的流水线。流水线执行引擎360解析流水线并在目标云计算平台上执行流水线的每个阶段。流水线执行引擎360可以在云平台的一个或多个计算系统上执行。
基于云平台的数据中心生成
图4示出根据一个实施方案的数据中心的声明性规范的实施例。声明性规范410包括多个数据中心实体。数据中心实体是数据中心实体类型的实例,并且每个数据中心实体类型可以有多个实例。数据中心实体的实施例包括数据中心、服务组、服务、团队、环境和模式。
声明性规范410包括各种类型的数据中心实体的定义,包括服务组、服务、团队、环境和模式。声明性规范包括数据中心的一个或多个实例。以下是对各种类型的数据中心实体及其实施例的描述。这些实施例是说明性的,显示了数据中心实体的一些属性。其他实施方案可以包括不同的属性,并且具有相同功能的属性可以被赋予与本文所指示的名称不同的名称。在一个实施方案中,使用符合预定义模式的分层对象(例如,JSON(Javascript对象符号))来指定声明性规范。
根据一个实施方案,服务组520表示由一个或多个计算系统提供的可以独立地构建和交付能力、特征和服务集。服务组也可以被称为逻辑服务组、功能单元或有界上下文。服务组520还可以被视为由一个或多个计算系统提供的内聚技术用例功能集的服务集。服务组520强制执行安全边界。服务组520定义修改的范围。因此,对实体的任何修改,例如由服务组520内的一个或多个计算系统提供的能力、特征或服务,可以根据需要或适合于服务组内的实体而传播,但是不传播到驻留在服务组520的有界定义之外的实体。数据中心可以包括多个服务组520。服务组定义指定属性,包括名称、描述、标识符、模式版本和服务集实例。服务组的实施例是区块链服务组,其包括用于提供区块链功能的服务集。类似地,安全服务组提供安全特征。用户界面服务组提供特定用户界面特征的功能。共享文档服务组提供跨用户共享文档的功能。类似地,可以有几个其他服务组。
服务组支持规范的可重用性,以便对开发数据中心感兴趣的租户或用户拥有他们可以随时使用的服务组库。围绕服务组的服务的边界基于安全问题和网络问题等。服务组与用于执行与服务组的交互的协议相关联。在一个实施方案中,服务组提供API(应用程序编程接口)和实施这些API的服务的集合。此外,服务组是独立于基底的。服务组为服务组内的服务提供爆炸半径范围,使得服务组内的任何服务故障的影响仅限于服务组内的服务,而在服务组外的影响最小。
以下是服务组的规范的实施例。服务组指定表示服务组元数据的各种属性,并且包括服务组内的服务集。可能存在为服务组指定的其他类型的元数据,本文没有指示。
如上面的实施例所示,服务组可以指定集群的集。集群表示计算节点的集,例如,服务器集、虚拟机集或容器集(如KUBERNETES容器)。物理服务器可以运行多个容器,其中每个容器都有自己的文件系统、CPU、内存、处理空间等共享。
服务组指定服务集。服务组可以为服务指定集群,使得部署在云平台上的数据中心运行计算节点的集群,并且如果包括在声明性规范中,则基于指定的映射将服务映射到集群。例如,在上面显示的服务组实施例中,服务实例“服务实例0002”被指定在集群实例集群1上运行。
服务组可以指定安全组,每个安全组指定允许彼此交互的服务集。安全组外的服务需要通过额外的认证才能与安全组内的服务通信。可替代地,安全组内的服务使用一种协议彼此交互,而安全组外的服务使用不同的协议,这需要增强认证才能与安全组内的服务交互。因此,安全组指定了确定服务如何相互交互的策略。安全策略可以指定安全策略适用的一个或多个环境。例如,安全策略“策略1”可以应用于特定环境env1(例如,生产环境),并且另一安全策略“策略2”可以应用于另一环境env2(例如,开发环境)。可以为服务组类型或特定服务类型指定安全策略。
在一个实施方案中,安全策略基于各种属性指定用于过滤服务组的表达式,使得安全策略适用于过滤的服务组的集合。例如,安全策略可以指定IP(互联网协议)地址的列表,该IP地址是由过滤的集合标识的服务组的集合的白名单,并且因此允许这些计算系统访问服务组或服务组内的特定服务集。
在一个实施方案中,安全策略可以为服务组指定源服务集和目的地服务集。特定服务的源服务指定允许与此特定服务连接的安全组之外的服务。特定服务的目标服务指定此特定服务需要连接到的安全组之外的服务。在供应和部署期间,数据中心生成模块为云平台生成指令,该指令使用特定于云平台的特征和网络功能来实施特定网络策略,使得网络策略实施声明性规范中指定的安全策略。
被称为小区的数据中心实体表示以垂直方式相互交互的服务集,并且可以通过小区的附加实例或副本(即,服务集的副本)进行扩展。创建小区的多个实例允许系统扩展彼此交互的服务集。数据中心实例可以包括一个或多个小区。每个小区可以包括一个或多个服务。数据中心可以包括服务组或小区的实例。
服务定义指定服务类型的元数据,例如数据库服务、负载均衡器服务等。元数据描述服务的各种属性,包括服务的名称、服务的描述、服务的文档的位置、与服务相关联的任何子服务、服务的所有者、与服务相关联的团队、指定该服务在构建时所依赖的其他服务的服务的构建依赖关系、指定当该特定服务启动时应该运行的其他服务的服务的启动依赖关系、授权客户端、与服务相关联的DNS(域名服务器)名称、服务状态、对服务的支持级别等。服务定义指定侦听端口属性,该属性指定服务可以侦听不同通信协议的端口,例如,服务可以侦听UDP协议的端口p1和TCP协议的端口p2。数据中心内的其他服务可以经由服务指定的端口与服务交互。
服务定义指定属性出站访问,该属性指定目标端点,例如,指定服务需要访问指定外部URL的外部URL(统一资源定位器)。在部署期间,数据中心生成模块确保云平台实施访问策略,从而为该服务类型的实例提供对外部URL的请求访问。
出站访问规范可以识别出站访问适用的服务的一个或多个环境类型。例如,端点集S1的出站访问可以应用于特定环境env1(例如,生产环境),并且端点集S2的出站访问可以应用于另一环境env2(例如,开发环境)。
以下是服务定义的实施例。
/>
团队定义450包括团队成员姓名和团队的其他属性,例如姓名、电子邮件、通信信道等。以下是团队定义的实施例。服务可以与一个或多个负责对该服务进行修改的团队相关联。因此,对该服务所做的任何修改都得到团队的批准。被部署到云平台之后,服务可以与负责维护服务的团队相关联。团队可以与服务组相关联,并且相应地与该服务组的所有服务相关联。例如,团队批准对服务组的任何更改,例如,作为服务组一部分的服务。团队可以与数据中心相关联,并且相应地与数据中心内的所有服务组相关联。在数据中心级指定的团队关联为数据中心内的所有服务组提供默认团队,并进一步为服务组内的所有服务提供默认团队。
根据一个实施方案,在功能级指定的团队关联覆盖在数据中心级提供的团队关联。类似地,在服务级指定的团队关联覆盖在服务组级或数据中心级指定的团队关联可能已经提供的默认值。团队可以决定如何为与团队相关联的数据中心实体采取某些动作。团队关联还确定云平台上为编译器生成云平台的数据中心的最终元数据表示以及为在云平台上供应和部署数据中心而创建的账户的数量。数据中心生成模块210在云平台中创建一个或多个用户账户,并向团队成员提供对用户账户的访问。因此,允许团队成员执行与和团队相关联的数据中心实体相关联的特定动作,例如,在部署数据中心实体时对数据中心实体进行或批准结构改变或维护数据中心实体,包括可以为数据中心实体识别的调试和测试问题。
传统技术在整个设计过程中将同一团队与数据中心相关联,从而导致组织结构对数据中心或服务组的设计产生影响。实施方案将团队定义与定义数据中心实体的构造分离,从而减少团队对数据中心实体的设计和架构的影响。
环境定义460指定由数据中心表示的系统环境的类型,例如,开发环境、试运行环境、测试环境或生产环境。概要定义470指代指定特定数据中心实体定义的语法的概要。概要定义470用于验证各种数据中心实体定义。数据中心生成模块基于环境确定特定于云平台的元数据表示中数据中心的安全策略。例如,特定的安全策略集可以适用于环境env1,并且不同的安全策略集可以适用于环境env2。例如,与开发环境相比,安全策略在生产环境中提供了更多受限制的访问。安全策略可以指定为特定目的允许安全令牌存在的时间长度。例如,在开发环境中可以允许长访问令牌(例如,一周长的访问令牌),但是在生产环境中使用的访问令牌的使用寿命要小得多(例如,几个小时)。访问令牌可以允许用户或服务访问特定的云平台资源。
数据中心定义420指定数据中心实例的属性和部件。声明性规范可以指定多个数据中心实例。数据中心定义420指定包括名称、描述、环境类型、服务组集、团队、数据中心的域名服务器等的属性。数据中心定义可以指定概要定义,并且根据指定的概要定义来验证从数据中心定义生成的任何元数据表示。数据中心包括核心服务和功能集,使其他服务能够在数据中心内发挥作用。数据中心的实例部署在特定的云平台中,并且可以与特定的环境类型相关联,例如,开发、测试、试运行、生产等。
以下是数据中心实例的定义。数据中心实例定义包括数据中心实例中包括的服务组的列表和其他属性,包括数据中心的环境、数据中心标识符、名称、表示地理区域的区域、与数据中心相关联的一个或多个团队以及模式版本。
图5示出根据一个实施方案的基于声明性规范在云平台上创建的一些示例性数据中心。可以基于由数据中心生成模块210处理的声明性规范来创建数据中心510。如图5中所示,可以在云平台120内配置多个数据中心。每个数据中心510可以对应于多租户系统110的租户115。租户115可以创建一个或多个数据中心510。可替代地,可以由任何计算系统创建数据中心510。每个数据中心包括一个或多个服务组。例如,数据中心510a包括服务组520a和520b,并且数据中心510b包括服务组520c。数据中心可以包括特定类型的服务组的多个实例。每个服务组包括服务集。例如,服务组520a包括服务530a和530b,服务组520b包括服务530a、530b和530c,并且服务组520c包括服务530e、530f和530g。服务组可以包括相同服务类型的服务的多个实例。
数据中心生成模块220使用以下步骤基于声明性规范在云平台上创建数据中心。数据中心生成模块210接收数据中心的独立于云平台的声明性规范。独立于云平台的声明性规范可以用于多租户系统的租户或用于任何其他计算系统,例如在线系统。独立于云平台的声明性规范是使用云平台基础设施语言指定的。数据中心的独立于云平台的声明性规范配置为在多个云平台中的任意云平台上生成数据中心。
数据中心生成模块210接收标识用于基于独立于云平台的声明性规范创建数据中心的目标云平台的信息。目标云平台可以是多个云平台中的任意云平台,例如,AWS、AZURE、GCP等。数据中心生成模块210进一步接收与目标云平台连接的信息,例如,用于创建与目标云平台的连接的凭证。云平台也可以被称为云计算平台。
数据中心生成模块210编译独立于云平台的声明性规范,以生成用于在目标云计算平台上创建数据中心的特定于云平台的数据中心表示。例如,特定于云平台的数据中心表示可以指特定于目标云计算平台的用户账户、网络地址等。
数据中心生成模块210发送平台特定数据中心表示以及用于在目标云计算平台上部署数据中心的指令。目标云计算平台执行指令以配置目标云计算平台的计算资源,以根据平台特定数据中心表示生成数据中心。数据中心生成模块210为用户提供对云计算平台配置的数据中心的计算资源的访问。例如,如果数据中心是为多租户系统的租户创建的,则向与租户相关联的用户提供对数据中心的访问。
图6是示出根据一个实施方案的基于声明性规范在云平台上生成数据中心的框图。数据中心生成模块210接收独立于云平台的声明性规范610作为输入。独立于云平台的声明性规范610可以是由用户增量修改的声明性规范的版本。数据中心生成模块210处理独立于云平台的声明性规范610的特定版本。由于没有为任何特定的目标云平台指定独立于云平台的声明性规范610,因此数据中心生成模块210可以基于独立于云平台的声明性规范610在任何目标云平台上配置数据中心。
数据中心生成模块210处理独立于云平台的声明性规范610,以生成用于数据中心的独立于云平台的详细元数据表示620。独立于云平台的详细元数据表示620定义了在独立于云平台的声明性规范610中指定的数据中心实体的每个实例的细节。数据中心生成模块210为数据中心实体实例(例如,服务实例)创建唯一标识符。
在一个实施方案中,独立于云平台的详细元数据表示620包括数据中心实体类型的实例的阵列,例如,特定服务组类型的服务组实例的阵列。每个服务组实例包括服务实例的阵列。服务实例可还包括被允许执行与服务实例相关联的某些动作的用户团队的细节。数据中心生成模块210在供应和部署期间使用团队的详细信息,例如,用于为服务实例创建用户账户并允许团队的成员访问用户账户。
独立于云平台的详细元数据表示620包括数据中心实体的每个实例的属性。因此,扩展数据中心实体的每个实例的描述以包括所有细节。结果,数据中心的独立于云平台的详细元数据表示620可以明显大于独立于云平台的声明性规范610。例如,独立于云平台的声明性规范610可以是几千行规范,而独立于云平台的详细数据中心表示620可以是数百万行生成的代码。结果,数据中心生成模块210将独立于云平台的详细元数据表示620保持为不可变的,即,一旦该表示被最终确定,就不对该表示执行任何修改。例如,如果需要执行数据中心实体的任何更新、删除或添加,则在独立于云平台的声明性规范610上执行它们。
数据中心生成模块210接收预期在其上供应和部署数据中心的目标云平台,并生成数据中心的特定于云平台的详细元数据表示630。例如,数据中心生成模块210与目标云平台交互,以生成某些实体(或资源),例如,用户账户、虚拟私有云(VPC)和网络资源,例如VPC上的子网、云平台中实体之间的各种连接等。数据中心生成模块210接收在目标云平台中创建的资源的资源标识符,例如,用户账户名、VPC ID等,并将这些并入独立于云平台的详细元数据表示620中,以获得数据中心的特定于云平台的元数据表示630。在一个实施方案中,数据中心生成模块210为服务组和服务的给定组合,在云平台上为每个团队创建一个唯一的用户账户。团队使用用户账户来执行与该服务组的特定服务的交互,例如,用于调试、用于接收警报等。
目标云平台可以执行几个步骤来处理特定于云平台的详细元数据表示630。例如,独立于云平台的声明性规范可以指定服务之间允许的交互。这些允许的交互在特定于云平台的详细元数据表示630中被指定,并且被实现为云平台的网络策略。云平台可进一步创建安全组来实现网络策略,以根据声明性规范实现数据中心。
独立于云平台的声明性规范指定了服务之间的依赖关系,例如,每个服务的启动依赖关系列出了启动特定服务时应该运行的所有服务。数据中心生成模块220生成数据中心的特定于云平台的详细元数据表示,其包括描述这些依赖关系的信息,使得用于部署服务的指令确保云平台以依赖关系指定的顺序启动服务,使得对于每个服务,当启动服务时,在服务之前需要启动的服务正在运行。因此,服务之间的依赖关系表示依赖关系图,并且云平台以基于依赖关系图确定的顺序开始运行服务,使得如果服务A依赖于服务B,则在服务A启动之前启动服务B。
数据中心生成模块220在用户账户之间创建信任关系,该信任关系允许服务经由安全通信信道访问其他服务。这些信任关系是使用基于声明性规范(例如,基于为服务指定的出站访问属性)生成的基底特定指令生成的。数据中心生成模块220向云平台发送指令,以基于控制服务组和服务之间的交互和访问的特定于云平台的机制来创建网络策略,例如,如声明性规范的结构所指定的,例如出站访问、安全组、安全策略等。
数据中心生成模块210在为其生成表示的特定目标云平台上部署特定于云平台的元数据表示630。数据中心生成模块210可以使用生成的元数据表示来执行各种验证,包括策略验证、格式验证等。
独立于云平台的声明性规范610可以被称为声明的数据中心表示,独立于云平台的详细元数据表示620被称为数据中心的派生元数据表示,以及特定于云平台的元数据表示630被称为数据中心的水合元数据表示。
用于在数据中心上部署软件工件的整体过程
图7示出根据实施方案的用于生成用于配置在云平台上的数据中心上部署软件工件的流水线的整体过程。数据中心生成模块在目标云平台上生成710一个或多个数据中心。每个数据中心都是根据独立于云平台的声明性规范生成的,并且具有数据中心实体的层次结构。
软件发布管理模块230生成720独立于云平台的主流水线。在一个实施方案中,独立于云平台的主流水线包括对应于数据中心的环境的阶段,例如,开发环境、测试环境、金丝雀环境和生产环境。主流水线组成了跨各种环境(如开发环境、测试环境、试运行环境或生产环境)的渐进和/或有条件部署的序列。可以通过传递软件工件的映像来触发主流水线,并且包括在开发类型的环境中部署构建的阶段或指令。构建的软件工件被有条件地推进至一个或多个测试环境,然后是一个或多个金丝雀环境,最后被部署到生产环境。可以由用户(例如,服务所有者)定制主流水线,以表示跨环境的特定编排。可以定制主流水线以捕获用于从一个阶段移动到下一个阶段的特定推进标准。例如,多租户系统的不同租户可以以不同的方式定制主流水线。在一个实施方案中,主流水线默认地将软件的最新版本用于服务的软件工件,并跨各种环境构建和部署该版本。用户可以使用工件版本映射来确保软件工件的特定版本部署在特定的数据中心实体上。
在一个实施方案中,部署在数据中心中的每个服务具有由数据中心的声明性规范定义的数据中心实体生成的独立于云平台的主流水线,例如,用于数据中心实例的主流水线、用于服务组的主流水线、用于小区的主流水线、用于服务的主流水线等。可以在传递软件工件的映像时触发主流水线。主流水线可以实现服务所有者控制的连续部署。主流水线可以实现数据中心实例所有者拥有或发布所有者拥有的按需部署。
可以由用户定制主流水线的某些部分,例如,由在数据中心上部署服务的多租户系统的租户。例如,推进决策流水线可以由租户定制,以确定执行哪些测试用例以及阈值是多少。软件发布管理模块230接收730对用于将软件工件从独立于云平台的主流水线的一个阶段推进至另一个阶段的逻辑的定制。
软件发布管理模块230编译740独立于云平台的主流水线,以生成特定于每个数据中心的数据中心实体的层次结构的特定于云平台的详细部署流水线,如数据中心的独立于云平台的声明性规范所指定的。
软件发布管理模块230进一步接收750用于释放部署在数据中心上的服务的一个或多个特征的代码。软件发布管理模块230执行760特定于云平台的详细部署流水线,以基于接收到的代码部署软件工件。
图8示出根据实施方案的示例性主流水线800。主流水线代表阶段的序列,这些阶段代表跨各种数据中心环境的渐进式条件部署。图8显示了数据中心不同环境的阶段,包括开发环境、测试环境、金丝雀环境和生产环境。每个阶段进一步表示为该阶段执行的流水线。因此,主流水线800包括开发环境流水线810,该开发环境流水线馈送到测试环境流水线820,该测试环境流水线馈送到金丝雀环境流水线830,该金丝雀环境流水线馈送到生产环境流水线840。
每个阶段的流水线是包括较低级别流水线的分层流水线。例如,开发环境流水线810包括馈送到数据中心流水线D11、D12、...的开发主流水线,这取决于在数据中心的声明性规范中指定为具有开发环境的数据中心的数量。
测试环境流水线820包括馈送到数据中心流水线D21、D22,...的测试主流水线,这取决于在数据中心的声明性规范中指定为具有测试环境的数据中心的数量。
金丝雀环境流水线820包括馈送到数据中心流水线D31、D32,...的金丝雀主流水线,这取决于在数据中心的声明性规范中指定为具有金丝雀环境的数据中心的数量。
生产环境流水线820包括馈送到数据中心流水线D21、D22,...的生产主流水线,这取决于在数据中心的声明性规范中指定为具有测试环境的数据中心的数量。
每个环境流水线810、820、830分别包括推进决策流水线815a、815b、815c。由推进决策流水线815收集环境流水线的数据中心流水线的输出,推进决策流水线确定软件工件是否准备好推进至下一阶段。推进决策流水线815可以基于数据中心获得的测试用例结果来确定服务的软件工件是否被推进至下一阶段。例如,如果通过了超过阈值测试用例,则推进决策流水线815将软件工件推进至下一阶段。最后一个环境阶段,例如,生产环境流水线可能没有推进决策流水线,因为没有软件工件需要被推进至的后续阶段。如图8中所示,开发环境流水线的推进决策流水线815a确定是否将软件工件从开发阶段推进至测试阶段;测试环境流水线的推进决策流水线815b确定是否将软件工件从测试阶段推进至金丝雀阶段,金丝雀环境流水线的推进决策流水线815c确定是否将软件工件从金丝雀阶段推进至生产阶段。
主流水线包括多个流水线,例如,用于供应目标云平台的资源的供应流水线和用于在数据中心实体上部署软件工件的部署流水线。每个流水线包括阶段的序列,每个阶段代表目标云平台需要执行的一个或多个动作,以供应和部署数据中心。数据中心生成模块210生成用于在数据中心实体上部署软件工件版本的详细流水线。
在一个实施方案中,流水线生成器模块320使用包括变量的流水线模板生成详细的流水线。通过提供流水线中变量的特定值,将流水线模板转换为流水线。从模板生成流水线的过程被称为流水线模板的水合。流水线模板包含模板表达式,用作部署中使用的实际值的占位符。例如,模板表达式可以被目标特定的参数值或表达式替换。可以通过水合不同目标的流水线模板来生成多个流水线实例。模板变量表示可以用给定目标的特定值替换的参数,以生成特定于该目标的流水线实例。例如,在水合期间,模板变量“账户_id”可以被替换为账户_id的实际值,例如,“12345”。
在一个实施方案中,流水线生成器模块320基于数据中心的数据中心实体的层次结构以层次结构的方式生成流水线。例如,数据中心包括不同类型的数据中心实体,包括数据中心、服务组、服务等。数据中心实体可以包括一个或多个子数据中心实体。例如,数据中心包括一个或多个服务组作为子数据中心实体。服务组包括一个或多个服务作为子数据中心实体。因此,数据中心生成模块210从层次结构级别的数据中心实体开始,并生成低于该级别的数据中心实体的流水线。例如,流水线生成器模块320从数据中心级别开始,并为数据中心内的服务组生成流水线。对于每个服务组,流水线生成器模块320为服务组内的服务生成流水线。
根据一个实施方案的用于执行流水线的过程如下。软件发布部署模块230接收在目标云平台中的数据中心实体集上部署软件工件的请求。软件发布部署模块230为一个或多个数据中心执行主流水线。软件发布部署模块230为每个数据中心的每个服务组执行聚合流水线。聚合流水线包括用于服务组内的服务的流水线。对于每个服务组中的每个服务,通过执行流水线的所有阶段来执行流水线。提供流水线的执行导致为服务提供资源,并且部署流水线导致在目标云平台中部署服务。
图9示出根据实施方案的云平台上的主流水线的环境的阶段执行的整体过程。可以由每个环境流水线810、820、830执行步骤910、920、930、940和950。生产环境流水线3可以仅执行步骤910和920。可以针对使用清单文件指定的一个服务或多个服务来执行图9中所示的步骤。
用于环境E的环境流水线包括在数据中心实体集上部署910软件的指令,例如,被指定为具有环境E的数据中心实体集。在一个实施方案中,通过编译服务的源代码来生成软件工件。可以从版本控制软件获得源代码。数据中心实体集可以包括数据中心实例、服务组、小区、服务或这些的任意组合。
用于环境E的环境流水线还包括用于运行920测试的指令,该测试用于测试数据中心实体集上部署的软件工件。用于环境E的环境流水线还包括用于例如使用推进决策流水线815对照推进标准来评估930测试结果的指令。如果不满足推进标准,则可以使用修订的软件工件,例如,从源代码生成的软件工件,该软件工件包括对在测试920期间识别的某些缺陷的修复,来重复步骤910、920、930和940。用于环境E的环境流水线还包括用于在满足推进标准的情况下前进950到下一阶段的指令。
在一个实施方案中,主流水线包括流水线的层次结构。该层次结构包括多个级,并且特定级的流水线包括下一个较低级的流水线作为子流水线。例如,在层次结构的最高级,主流水线包括发布主流水线,其部署与产品相关的服务集。下一级层次结构包括服务主流水线,其表示跨各种环境特定服务的所有部署。下一级层次结构可以包括服务组主流水线,然后是服务主流水线。
图10示出根据实施方案的示例性主流水线。主流水线是分层流水线,其中流水线的每个阶段可以包括具有用于执行该阶段的详细指令的流水线。主流水线层次结构可以镜像数据中心层次结构。例如,主流水线的顶级代表不同环境的阶段的序列。每个环境可以包括一个或多个用于数据中心实例的流水线或用于其他类型的数据中心实体的流水线。数据中心实例流水线1010可以包括服务组流水线1020。每个服务组流水线1020可以包括一个或多个服务流水线1030。数据中心实例流水线1010可以包括小区流水线1025,每个小区流水线1025包括一个或多个服务流水线1030。服务流水线1030可以包括阶段,每个阶段代表流水线,该流水线代表用于为特定环境部署服务的指令。层次结构中的最低级流水线或叶级流水线被称为单元流水线,并且可以包括用于执行与服务相关的操作的详细的服务特定指令。例如,服务的部署可以包括部署前步骤、部署步骤、部署后步骤以及部署后测试和验证步骤。不是叶级流水线并且具有一个或多个子流水线的流水线是编排子流水线执行的聚合流水线。
可以由发生的拉请求驱动主流水线,其发生软件的版本控制系统接收用于考虑提交给外部存储库以包含在项目的主存储库中的更改的请求。因此,当接收到拉请求时,自动触发主流水线,并且基于接收到拉请求的最新软件版本来部署软件工件。主流水线基于拉请求执行软件工件的持续交付。例如,通过使用部署模块210的应用编程接口(API)调用请求,可以基于按需方式来驱动主流水线。可以为任何服务集和使用API指定的给定服务的任何版本请求基于主流水线的按需部署。可以调用主流水线来请求从当前版本回滚到先前版本,或者从当前部署的版本前滚到更新的版本。
在一个实施方案中,部署模块210为每个服务创建服务主流水线。当接收到对软件的存储库的拉请求时,就会触发这些流水线。部署模块210从用于特定服务的用户接收流水线模板。这些流水线模板包括用于对特定服务测试、验证、构建等的详细指令。数据中心生成模块220接收用于一个或多个数据中心的独立于云平台的声明性规范。数据中心生成模块220根据接收到的独立于云平台的声明性规范生成(或配置)数据中心。部署模块210接收推进决策815流水线。推进决策815流水线被集成到整体主流水线中。
流水线生成器从模板中为每个数据中心创建所有流水线,并经由主流水线以分层方式组合它们,例如,如图10中所示。在一个实施方案中,流水线生成器生成用于各个服务的服务流水线;流水线生成器生成小区主流水线以调用服务流水线;流水线生成器生成服务组主流水线以调用小区主流水线;流水线生成器生成数据中心实例主流水线以调用服务组流水线;流水线生成器生成服务主流水线以调用数据中心实例主流水线。
以下是显示了各个阶段的主流水线的片段。每个阶段可以指定属性,包括阶段名称、流水线的类型、阶段类型(例如,主部署流水线或推进流水线)、先前阶段等。
/>
如审查主流水线中所示,第一阶段是工件版本映射。下一阶段是用于部署到开发环境的主部署流水线。下一阶段是用于确定是否可以将软件工件推进至下一阶段的推进流水线。下一阶段是用于部署到测试环境的主部署流水线。下一阶段是用于确定是否可以将软件工件推进至下一阶段(即,试运行环境)的推进流水线。
软件工件版本映射
在一个实施方案中,部署模块210接收将各种软件工件及其版本与数据中心实体相关联的工件版本映射。工件版本映射提供了需要为不同数据中心实体中的服务部署的软件工件的特定版本的声明性规范。每个数据中心实体可以基于其在数据中心层次结构中的位置被唯一标识,如数据中心的声明性规范所指定的。例如,对于服务,软件库可以充当软件工件。软件工件可以具有多个版本,例如,V1、V2、V3等。工件版本映射可以指定版本V1需要部署在数据中心实体C1和C2中,并且版本V2需要部署在数据中心实体C3和C4中。部署模块210生成主流水线和指令,其确保如在工件版本映射中指定的那样,在数据中心实体中部署适当的软件工件版本。
在一个实施方案中,工件版本映射被指定为JSON(Javascript对象符号)文件、YAML文件或使用用于表示嵌套对象的任何其他语法的文件。工件版本映射可以包括与分布在数据中心的层次结构上的各种数据中心实体相关联的<服务>:<版本>密钥对的集合。工件版本映射密钥对充当相应流水线的白名单。如果在工件版本映射中没有包括服务的密钥,那么在流水线的执行期间,该服务的所有流水线都被排除在外。不同的工件版本映射可以应用于相同的主流水线,导致在主流水线的执行期间包括/排除不同的服务。
以下是示例性工件版本映射。工件版本映射使用属性“环境_类型”指定环境类型。在以下的实施例中,指定了环境类型开发。环境类型可以包括一个或多个数据中心实例;数据中心实例可以包括一个或多个服务组,服务组可以包括一个或多个服务。在以下的实施例中,软件工件名称被指定为库1,版本被指定为版本1,并且与服务实例“实例001”相关联。然而,软件工件名称和版本可以与层次结构中的任何级别的数据中心实体相关联。例如,对于指定的软件工件名称和版本或服务组,软件工件名称和版本适用于服务组内的所有服务,除非软件工件名称和版本被为服务组内的特定服务实例指定的软件工件名称和版本的不同值覆盖。
类似地,可以为数据中心实例指定软件工件名称和版本,并且适用于数据中心实例内的所有服务组或小区,除非为服务组指定了覆盖值。
/>
在一个实施方案中,工件版本映射使用数据中心实体的完整路径,例如“错开_组1/数据中心1/服务_组2/服务1”来指定数据中心实体。在一个实施方案中,工件版本映射使用数据中心实体的完整路径中的正则表达式来指定数据中心实体集。例如,包括服务_组[?]的完整路径,包括服务_组1、服务_组2、服务_组3等。
以下是工件版本映射的实施例,其指定正则表达式来定义服务集。环境类型被指定为dev和测试,并且完整路径中的数据中心实体(包括数据中心实例和服务组)被指定为通配符,并且服务实例被指定为“服务*”。因此,对于开发(dev)和测试环境的所有数据中心实例、所有服务组、与服务*匹配的服务名称,将部署应用程序“应用程序1”的版本V1。
在一些实施方案中,工件版本映射可以指定流水线使用的参数。因此,指定的参数将适用于为其指定参数的交错组。
根据实施方案,以下过程用于配置在云平台上的数据中心上部署软件工件。数据中心生成模块在目标云平台上生成一个或多个数据中心。每个数据中心都是根据独立于云平台的声明性规范生成的,并且具有数据中心实体的层次结构。
软件发布管理模块230接收将数据中心实体映射到软件工件的版本的工件版本映射作为输入。软件发布管理模块230还接收1330独立于云平台的主流水线作为输入。
软件发布管理模块230结合工件版本映射编译独立于云平台的主流水线,以生成特定于云平台的详细流水线。在一个实施方案中,所生成的特定于云平台的详细流水线包括某些阶段之前的工件版本映射过滤器,以根据工件版本映射确定是否应该启用或禁用某些阶段。
软件发布管理模块230进一步接收750用于释放部署在数据中心上的服务的一个或多个特征的代码。例如,代码可以表示从版本控制管理系统获得的源代码,该版本控制管理系统存储由开发人员向其提交更改的源代码存储库。软件发布管理模块230执行特定于云平台的部署流水线,以基于接收到的代码部署软件工件。
工件版本映射和主流水线可以用于编排与基于云的数据中心中软件工件的持续交付相关的各种类型的操作。工件版本映射和主流水线可以配置为对服务或服务组或任何数据中心实体执行聚合重试操作。工件版本映射包括对数据中心实体的重试操作的配置,包括重试策略、在执行流水线的阶段失败的情况下要执行的重试的阈值数量、在重试之前是否需要来自用户的确认或自动执行重试等。例如,重试策略可以是在重试之前暂停执行一段固定时间段的固定回退策略。可以使用工件版本映射和主流水线来配置其他重试策略。在一个实施方案中,流水线生成器在聚合流水线内引入调用重试阶段,以在先前流水线阶段失败时触发重试策略。为数据中心实体指定的重试策略和配置参数适用于数据中心实体内的所有数据中心实体和服务,除非嵌套数据中心实体覆盖了该值。
服务的系统配置冻结
在一个实施方案中,系统配置冻结模块350对部署在目标云平台中的服务执行系统配置冻结。可以响应于从用户(例如,系统管理员)接收的请求来执行系统配置冻结。该请求可以识别数据中心实体,并请求冻结在该数据中心实体上运行的所有服务的系统配置。系统配置冻结确保不对数据中心实体的服务进行系统配置改变,并且不对与在数据中心实体上运行的服务相关联的软件工件进行修改。
在一个实施方案中,系统接收为数据中心实体(例如,服务组、小区、数据中心等)设置系统配置冻结的请求。系统确定数据中心实体内的服务,例如,基于数据中心的声明性规范或基于描述数据中心的拓扑层次结构的元数据。例如,系统对位于数据中心实体之下的所有数据中心实体执行分层遍历,并识别数据中心实体内的所有服务。系统对在数据中心实体D1内识别的所有服务执行系统配置冻结,除非系统接收到为特定服务S1或在所识别的数据中心实体D1内的较小数据中心实体D2创建异常(即,覆盖)的请求,以不对服务S1或较小数据中心实体D2执行系统配置冻结。
可以响应于确定在时间区间期间预期到大于阈值量的工作负载而执行系统配置冻结。例如,如果多租户系统的租户期望在诸如节假日的时间区间期间有大量的处理请求,则租户可以请求在该时间区间期间冻结在生产系统上运行的服务,以避免服务中断的可能性。
在一个实施方案中,系统可以接收修改的声明性规范以及对数据中心实体执行系统配置冻结的请求。例如,数据中心可以被修改为在数据中心实体D1的层次结构内添加数据中心实体D2,或者在数据中心实体D1的层次结构内添加服务s1。系统创建所请求的数据中心实体D2或服务S1,并在指定的时间区间期间对所创建的服务或数据中心实体强制执行系统配置冻结。
可以响应于确定在时间区间期间正在诊断与数据中心实体相关联的问题而执行系统配置冻结。例如,多租户系统的租户可以识别数据中心实体或服务的问题,例如导致服务性能不佳的性能问题。租户的系统管理员可以运行诊断过程和工具来识别问题的根本原因。在诊断问题的同时,租户可能倾向于冻结数据中心实体或服务的系统配置,以最小化对系统的改变,从而能够准确地诊断问题。
可以响应于确定在时间区间期间正在执行特定系统配置改变而执行系统配置冻结。系统配置冻结防止在时间区间期间的任何其他系统配置改变。因此,系统可以确保以互斥的方式执行对可能相互干扰的系统配置的改变,使得一次只执行一个改变,并且在该时段期间阻止任何其他改变。
尽管本文描述的实施例示出多租户系统上下文中的过程,但是所公开的技术可以应用于任何其他系统,例如,专用于单个组织的系统。
图11示出根据实施方案的系统配置冻结模块的系统架构。系统配置冻结模块350包括冻结请求处理模块1110、锁管理器1120和系统配置冻结元数据存储1130。其他实施方案可以包括比图11中本文所指示的部件更多或更少的部件。
冻结请求处理模块1110接收系统配置冻结请求并对其进行处理。可以从用户(例如,系统管理员)的客户端设备接收系统配置冻结请求。系统配置冻结请求指定需要强制执行系统配置冻结的时间区间。系统配置冻结请求可以识别在指定时间区间期间需要冻结的一个或多个服务。系统配置冻结请求可以指定用于执行系统配置冻结的数据中心的数据中心实体。因此,该请求指定需要在指定的时间区间期间冻结在数据中心实体中运行的所有服务,从而不对与这些服务相关联的软件工件执行修改,并且不对这些服务的任何类型的配置执行修改。冻结请求处理模块1110识别在指定时间区间期间需要冻结的服务列表。例如,如果系统配置冻结请求指定数据中心实体,则冻结请求处理模块1110识别配置为在数据中心实体中运行的所有服务。
系统配置冻结元数据存储1130存储与执行服务配置冻结相关的元数据,包括描述对系统配置冻结的请求的元数据。描述请求的元数据包括请求标识符、需要强制执行系统冻结请求的时间段以及需要对其执行系统配置冻结的数据中心实体。可以使用开始时间和结束时间或者通过使用开始时间和时间区间的长度来指定时间区间。系统配置冻结元数据存储1130还存储从服务到锁的映射,该映射可以由用于对服务强制执行冻结的系统配置冻结模块350获取,或者由用于对服务配置进行修改的流水线获取。描述锁的元数据包括对请求锁的时间段长度的估计。
锁管理器1120接收获取锁的请求并获取所请求的锁。锁管理器从冻结请求处理模块1110或从流水线执行模块接收获取锁的请求。在一个实施方案中,锁管理器是分布式锁服务,其可以在不同于运行冻结请求处理模块1110的计算系统的系统上运行。锁管理器1120还接收释放先前获取的锁的请求并释放该锁。在特定时间段内获取与服务相关联的锁确保在该时间段内没有配置为修改服务的流水线能够进行。在该时间区间之后释放锁允许任何试图修改服务配置的流水线继续进行,从而结束服务的系统配置冻结。
流水线生成器模块320生成用于对数据中心实体的系统配置进行改变的流水线。所生成的流水线被配置成允许系统配置冻结模块350冻结任何服务的配置。
图12示出根据实施方案的用于强制执行系统配置冻结的示例性流水线。图12示出为修改服务的服务配置而生成的流水线的一些阶段,例如,用于修改与服务相关联的软件工件。所生成的流水线可以包括图12中未示出的其他阶段。图12中所示的流水线可以是图10中所示的服务流水线1030的一部分。
因此,所生成的流水线1200包括变更前阶段1210、变更阶段1220和变更后阶段1230。变更阶段1220包括可以由软件发布管理模块230实现的各种类型的系统配置改变。这些系统配置改变包括但不限于在数据中心实体中部署新服务、销毁数据中心实体中的服务、在数据中心实体中提供资源、销毁数据中心实体中的资源、执行任何实用程序操作、或通过恢复到服务或软件工件的早期版本来执行服务部署的回滚。系统配置冻结模块350配置为在时间区间期间冻结对数据中心实体的所有这些类型的改变。
变更前阶段1210包括用于获取与服务相关联的锁的指令。变更后阶段1230包括用于释放在变更前阶段1210中获取的锁的指令。在一个实施方案中,将标识与每个服务相关联的锁的信息存储在系统配置冻结元数据存储1130中。因此,流水线生成器模块320可以访问与流水线相关联的锁,并生成用于获取锁的指令,并且将生成的指令包括在变更前流水线中。可替代地,流水线生成器模块320可以生成用于访问系统配置冻结元数据存储1130以获取与服务相关联的锁的标识符并且然后获取锁的指令。如果无法获取锁,例如,如果锁先前已经被另一实体获取并且还没有被释放,则在变更前阶段1210中用于获取锁的指令导致流水线执行被暂停。例如,系统配置冻结模块350获取在时间区间期间需要冻结的所有服务的锁,从而暂停在时间区间期间试图改变服务的系统配置的任何流水线的执行。在一个实施方案中,如果不能获取与服务相关联的锁,则变更前阶段1210指令导致流水线1200的执行失败。在一个实施方案中,如果不能在阈值时间段内获取与服务相关联的锁,则变更前阶段1210指令导致流水线1200的执行失败。因此,流水线的执行超时并在一段时间后失败。如果流水线的执行失败,则不执行后续阶段,例如,变更阶段1220和变更后阶段1230。
系统配置冻结的过程
图13示出根据实施方案的用于对部署在云平台中的数据中心上的服务的系统配置进行改变的过程。数据中心生成模块220基于独立于云平台的声明性规范生成1310一个或多个数据中心,例如,如图6和7中所示的过程中所示。每个数据中心都有部署在数据中心中的服务集。软件发布管理模块230接收1320工件版本映射,该工件版本映射包括描述需要对在数据中心中安装和执行的服务进行的任何改变的信息。例如,改变可以包括向数据中心添加新服务、移除当前部署在数据中心中的服务、改变服务的配置、为服务部署软件工件的新版本等。
软件发布管理模块230生成1330独立于云平台的主流水线,该主流水线包括变更管理阶段,例如,如图12中所示的主流水线。软件发布管理模块230编译1340独立于云平台的主流水线,以生成特定于云平台的详细流水线,该流水线包括用于根据部署在目标云平台上的数据中心上的工件版本映射来部署服务的指令。
软件发布管理模块230接收1350用于修改部署在数据中心实体上的服务的系统配置的指令。软件发布管理模块230执行1360特定于云平台的详细流水线,以根据工件版本映射对服务的系统配置进行适当的修改。特定于云平台的详细流水线包括变更阶段,其包括用于做出与数据中心实体的一个或多个软件工件相关联的改变的指令,变更前阶段,其包括用于获取锁的指令,以及变更后阶段,其用于在做出改变后释放锁。如果变更前阶段未能获取锁,则流水线的执行被暂停。
图14示出根据实施方案的用于执行配置在云平台上的数据中心的数据中心实体的系统配置冻结的整体过程。系统配置冻结模块350接收1410对数据中心实体执行持续时间区间的系统配置冻结的请求。系统配置冻结模块350识别配置用于在数据中心实体内执行的所有服务。系统配置冻结模块350可以基于数据中心实体所属的数据中心的声明性规范来识别服务。执行系统配置冻结的请求指定了请求强制执行系统配置冻结的时间区间。
系统配置冻结模块350获取1430与时间区间内的数据中心实体的服务相关联的锁。在一个实施方案中,一旦系统配置冻结的时间区间开始,系统配置冻结模块350访问系统配置冻结元数据存储1130,以确定对应于所标识的每个服务的锁的标识符1420,并获取对应于锁标识符的锁。
在时间区间开始之后和时间区间结束之前,软件发布管理模块230接收1440对修改在时间区间期间在数据中心上运行的服务的系统配置的请求。软件发布管理模块230执行1450用于部署与在数据中心实体上运行的服务相关联的软件工件的流水线。流水线的执行导致流水线的变更前阶段的执行,从而导致流水线执行暂停,直到获取锁。在时间区间完成之后,系统配置冻结模块350释放1460为在数据中心实体上运行的服务获取的锁。结果,流水线的变更前阶段能够获取锁并导致流水线执行完成1470,从而允许在时间区间之后执行所请求的对服务的改变。根据一些实施方案,在变更阶段完成并且对系统配置进行所请求的修改之后,变更后阶段释放为服务获取的锁。此过程确保阻止任何试图修改数据中心实体上运行的服务的流水线在时间区间期间进行修改。
根据一些实施方案,变更前阶段包括确定流水线的变更前阶段是否超过阈值时间未能获取锁的指令。如果流水线的变更前阶段超过阈值时间未能获取锁,则流水线的执行失败。因此,向用户提供流水线执行失败的指示,并且用户必须发送后续指令以对服务进行系统配置修改。
在一个实施方案中,如果当请求数据中心实体的系统配置冻结时,正在执行修改数据中心实体的服务的系统配置的流水线,则系统推迟系统配置冻结,并相应地延迟发生系统配置冻结的区间,直到当前流水线执行完成。然而,系统阻止任何可能改变数据中心实体的服务的系统配置的新流水线执行开始,直到系统配置冻结完成。这是因为当前执行的流水线具有与服务相关联的锁,从而导致当系统配置冻结模块350试图获取数据中心实体的服务上的锁时,系统配置冻结请求被搁置。系统管理员可以手动销毁当前正在运行的流水线,以允许系统配置冻结继续进行。
在一个实施方案中,如果当对数据中心实体强制执行系统配置冻结时,在流水线执行期间发生故障,则流水线执行可以导致锁被获取但未被释放。锁管理器1120执行锁垃圾收集过程,该过程检查在系统配置冻结的时间区间之后是否有任何锁仍然未被释放。如果锁管理器1120在时间区间之后识别出与数据中心实体的服务相关联的任何锁,则锁管理器1120释放这些锁。
在一些实施方案中,锁与表示预期获取锁的时间长度的估计的持续时间相关联。系统可以使用锁的持续时间作为流水线执行所花费的时间的估计。系统可以基于某些流水线执行的预期持续时间对其进行优先级排序,例如,较短的流水线可以优先于花费明显较长的流水线。然而,如果流水线执行花费的时间比为锁指定的持续时间长,系统只会记录差异。系统维护服务列表,对于该服务列表,指定的锁持续时间明显低于获取锁的实际持续时间。系统对这些流水线进行优先级排序,不同于具有为锁指定的精确持续时间的其他流水线。在一个实施方案中,系统基于流水线的过去执行时间自动确定锁持续时间。
在一个实施方案中,系统配置冻结与优先级相关联。修改服务的请求也与优先级测量相关联。如果在系统配置冻结区间期间,软件发布管理模块230接收到服务修改请求,使得服务修改请求的优先级高于系统配置冻结的优先级,则允许数据中心实体的服务修改请求在时间区间期间进行,而不管系统配置冻结。系统提供这种机制,以便如果在系统配置冻结(例如暂停)期间可能发生的问题需要一些紧急修复,则允许继续进行修复。
变更处理模块的系统架构
图15示出根据实施方案的变更处理模块的系统架构。变更处理模块355包括变更确定模块1510、变更管理客户端1520、事件队列管理器1530、事件监听器和事件队列存储1550。其他实施方案可以包括比图15中本文所指示的部件更多或更少的部件。
变更确定模块1510识别正在对安装在一个或多个数据中心中的服务执行的改变。在一个实施方案中,变更确定模块1510接收指令集,该指令集识别与数据中心上的服务的当前配置相比要执行的改变。例如,改变可以指定要添加的新服务、要删除的现有服务、需要修改的服务配置等。
在一个实施方案中,变更确定模块1510存储工件版本映射的各种版本。软件发布管理模块230在目标云计算机上存储与数据中心的当前配置相对应的工件版本映射的版本V1。软件发布管理模块230接收需要在目标云计算机上实现的工件版本映射的版本V2。工件版本映射的版本V2与版本V1相比有差异。变更确定模块1510比较工件版本映射的两个版本以确定它们之间的差异。因此,变更确定模块1510将接收到的工件版本映射的新版本与当前正在部署的工件版本映射的先前版本进行比较,以识别在工件版本映射的新版本中请求的改变。这些改变可以包括需要安装在特定数据中心实体上的新服务、需要在特定数据中心实体上改变(例如升级)的现有服务的版本、需要从特定数据中心实体中移除的服务等。流水线生成器生成主流水线来实现请求的对服务配置的改变。
变更管理客户端1520与变更管理系统交互,以存储描述正在执行的改变的信息。变更管理系统可以是存储描述改变的记录并管理与改变相关的任务的任何系统,例如,发送与改变相关的警报或消息、接收对特定改变的批准等。变更管理客户端1520调用变更管理系统的API来与变更管理系统交互。变更管理系统可以是作为服务提供变更管理的外部系统。
事件队列管理器1530创建并管理存储与部署任务相关的事件的队列。事件队列管理器1530可以为需要被通知特定事件的各种团队创建队列。例如,团队可能负责数据中心声明性规范中定义的数据中心实体。变更处理模块识别特定事件,如在数据中心实体中安装的服务的失败或成功事件,并通知团队。事件监听器1540监听流水线执行引擎360中的事件。事件描述了为每个流水线执行的详细动作,例如,特定阶段是成功执行还是失败执行,或者特定阶段是否生成了消息,等。事件监听器1540对事件进行分类,并将它们与特定的数据中心实体相关联。因此,事件监听器1540将描述事件的信息提供给事件队列管理器1530以存储在事件队列中。事件队列存储1550存储不同的队列,例如,在数据中心的声明性规范中定义的一个或多个团队的队列。
图16示出根据实施方案的用于管理改变的示例性主流水线。主流水线包括类似于图8中所示的与不同系统环境相对应的那些阶段,通过这些阶段,软件工件被推进以部署到数据中心。因此,主流水线1600包括数据中心不同环境的阶段,包括开发环境、测试环境、金丝雀环境和生产环境。主流水线还包括变更管理阶段,因此,主流水线1600包括开发环境阶段810,该开发环境阶段馈送到测试环境阶段820,该测试环境阶段馈送到变更管理阶段1610,该变更管理阶段馈送到金丝雀环境流水线830,该金丝雀环境流水线馈送到生产环境流水线840,该生产环境流水线馈送到变更关闭阶段1620。每个阶段表示为该阶段执行的流水线。
主流水线表示形成层次结构的流水线集,例如,对应于由数据中心形成的数据中心实体的层次结构中的每个数据中心实体的流水线,如用于生成数据中心的声明性规范所指定的。每个流水线的变更管理阶段执行与管理由主流水线表示的改变相关的动作。例如,变更管理阶段包括用于执行与变更管理系统的交互的指令。
在一个实施方案中,变更管理阶段包括用于在变更管理系统中创建变更案例的指令,该变更案例表示由主流水线执行的变更集合。变更管理系统的变更案例表示描述对数据中心的服务执行的变更集合的信息。变更集合可以作为一个或多个记录存储在变更管理系统的数据库中。
在一个实施方案中,配置文件(例如,工件版本映射)包括描述现有变更情况的信息,该现有变更情况将用于存储描述对数据中心的服务执行的变更集合的信息。例如,用户(如系统管理员)可以创建变更案例,并在配置文件中提供以供变更管理阶段使用。
由主流水线表示的各种流水线的变更管理阶段向变更管理系统提供各种服务的部署状态,以便与变更案例相关联地进行存储。例如,特定服务的流水线向变更管理系统提供该服务的部署状态。状态可以指示部署是否成功、部署是否失败、部署是否生成错误或警告,等。
如果工件版本映射指定的所有服务的部署成功,则变更关闭阶段关闭变更案例。关闭变更案例防止对变更案例进行进一步的修改,例如,可能不会在变更案例中存储进一步的信息。然而,用户可以查看存储在变更案例中的信息,例如,用于审核对服务所做的特定改变。
变更管理的过程
图17示出根据实施方案的配置在云平台上的数据中心上部署的服务的变更管理的整体过程。数据中心生成模块220基于独立于云平台的声明性规范生成1710一个或多个数据中心,例如,如图6和7中所示的过程中所示。每个数据中心都有部署在数据中心中的服务集。软件发布管理模块230接收1720工件版本映射,该工件版本映射包括描述需要对在数据中心中安装和执行的服务进行的任何改变的信息。例如,改变可以包括向数据中心添加新服务、移除当前部署在数据中心中的服务、改变服务的配置、为服务部署软件工件的新版本等。
软件发布管理模块230生成1730独立于云平台的主流水线,该主流水线包括变更管理阶段,例如,如图16中所示的主流水线。独立于云平台的主流水线还可以包括流水线末端的变更关闭阶段。软件发布管理模块230编译1740独立于云平台的主流水线,以生成特定于云平台的详细流水线,该流水线包括用于根据部署在目标云平台上的数据中心上的工件版本映射来部署服务的指令。
软件发布管理模块230接收1750源代码,用于编译以构建软件工件并将它们部署在目标云平台上。软件发布管理模块230执行1760特定于云平台的详细流水线,以根据工件版本映射部署软件工件的适当版本。特定于云平台的详细流水线的执行导致根据工件版本映射部署的每个服务的变更管理阶段的执行。主流水线的变更管理阶段的执行可以导致变更管理系统中变更案例的创建。用于单个服务的流水线的变更管理阶段的执行发送流水线的执行状态,用于与变更管理系统中的变更案例相关联地存储。用于单个服务的流水线的变更管理阶段的执行可以导致流水线在将流水线处理的软件工件推进至后续阶段之前等待批准,例如,从测试阶段到金丝雀阶段或者从金丝雀阶段到生产阶段。主流水线的变更关闭阶段的执行导致变更案例被关闭,使得在变更案例中不能记录更多的修改。
图18示出根据实施方案的由主流水线的变更管理阶段执行的过程。软件发布管理模块230在变更管理系统中创建1810变更案例。独立于云平台的主流水线包括流水线集,其包括用于在数据中心中部署或修改的每个服务的至少一个流水线。该集中的每个流水线都包括变更管理阶段。
软件发布管理模块230对与数据中心中的服务相关联的每个流水线重复步骤1820、1830和1840。软件发布管理模块230执行1820与服务相关联的流水线。软件发布管理模块230向变更管理系统发送1830流水线的执行状态。软件发布管理模块230接收进入下一阶段的批准。可以从与服务相关联的用户或团队接收批准。如果软件发布管理模块230接收到未批准推进至下一阶段的指示,则软件发布管理模块230执行步骤以重复流水线的一些步骤,例如,在接收到修订的源代码或修改的软件工件之后。例如,如果通过的测试用例的数量低于阈值,则可能会拒绝批准。因此,修改源代码,并重复步骤,以便至少通过阈值数量的测试用例,从而接收批准。一旦批准流水线集中的所有流水线并且成功执行流水线集,软件发布管理模块230就执行关闭变更阶段,该关闭变更阶段导致变更案例被关闭。
在一个实施方案中,软件发布管理模块230监测流水线执行引擎记录的事件,这些事件指示流水线执行引擎执行的每个动作的状态。软件发布管理模块230分析数据中心上下文中的每个事件,以确定该事件是否足够重要以记录在变更案例中,然后将描述该事件的信息发送到队列以报告给与服务相关联的团队。
图19示出根据实施方案的用于管理用于收集与服务配置中的改变相关的事件信息的队列的过程。变更处理模块355的事件监听器1940监听1910来自流水线执行引擎的事件。对于每个事件,变更处理模块355执行以下步骤1920、1930、1940和1940。变更处理模块355确定为其生成事件的服务。因此,变更处理模块355评估该事件,以确定该事件是否足够重要以被变更管理系统记录并报告给与该服务相关联的团队。如果变更处理模块355确定事件足够重要以被记录和报告,则变更处理模块355识别1930与该服务相关联的团队的队列。变更处理模块355向所识别的队列发送1940事件信息。该事件经由队列报告给与服务相关联的团队。变更处理模块355基于与变更案例相关联的用于存储的事件向变更管理系统发送1950状态更新。
计算机架构
图20是示出根据实施方案的用作图1的环境100中所示的实体之一的典型计算机系统的功能视图的高级框图。示出联接到芯片组2004的至少一个处理器2002。还联接到芯片组2004的是存储器2006、存储设备2008、键盘2010、图形适配器2012、指示设备2014和网络适配器2016。显示器2018联接到图形适配器2012。在一个实施方案中,由存储器控制器集线器2020和I/O控制器集线器2022提供芯片组2004的功能。在另一个实施方案中,存储器2006直接联接到处理器2002而不是芯片组2004。
存储设备2008是非暂时性计算机可读存储介质,如硬盘驱动器、光盘只读存储器(CD-ROM)、DVD或固态存储器设备。存储器2006保存由处理器2002使用的指令和数据。指示设备2014可以是鼠标、轨迹球或其他类型的指示设备,并且与键盘2010结合使用以将数据输入到计算机系统200中。图形适配器2012在显示器2018上显示图像和其他信息。网络适配器2016将计算机系统2000联接到网络。
如本领域中已知的,计算机2000可以具有与图20中所示的那些不同的和/或其他部件。此外,计算机2000可以缺少某些图示的部件。例如,充当多租户系统110的计算机系统2000可以缺少键盘2010和指示设备2014。此外,存储设备2008可以是本地的和/或远离计算机2000的(例如体现在存储区域网络(SAN)内)。
计算机2000适于执行用于提供本文描述的功能的计算机模块。如本文所使用的,术语“模块”指的是用于提供指定功能的计算机程序指令和其他逻辑。模块可以用硬件、软件和/或固件来实现。模块可以包括一个或多个过程,和/或仅由过程的一部分提供。模块通常存储在存储设备2008上,加载到存储器2006中,并由处理器2002执行。
系统环境的实体所使用的计算机系统2000的类型可以根据实施方案和实体所使用的处理能力而变化。例如,客户端设备可以是具有有限处理能力的移动电话、小型显示器2018,并且可以缺少指示设备2014。相比之下,多租户系统或云平台可以包括协同工作以提供本文描述的功能的多个刀片服务器。
其他注意事项
部件的特定命名、术语的大写、属性、数据结构或任何其他编程或结构方面不是强制性的或重要的,并且实现所描述的实施方案的机制可以具有不同的名称、格式或协议。此外,如所描述的,系统可以经由硬件和软件的组合来实现,或者完全以硬件元件来实现。此外,本文描述的各种系统部件之间的功能的特定划分仅仅是示例性的,而不是强制性的;由单个系统部件执行的功能可以替代地由多个部件执行,并且由多个部件执行的功能可以替代地由单个部件执行。
以上描述的一些部分根据对信息的操作的算法和符号表示来呈现特征。这些算法描述和表示是数据处理技术领域的技术人员用来最有效地将其工作的实质传达给本领域的其他技术人员的方式。虽然在功能上或逻辑上描述了这些操作,但被理解为由计算机程序来实现。此外,在不丧失通用性的情况下,将这些操作安排称为模块或功能名称有时也被证明是方便的。
除非从上面的讨论中明确地说明,否则应该理解,在整个描述中,利用诸如“处理”或“计算)”或“算数”或“确定”或“显示”等术语的讨论是指计算机系统或类似电子计算设备的动作和过程,其操纵和转换计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内表示为物理(电子)量的数据。
本文描述的某些实施方案包括以算法形式描述的处理步骤和指令。应当注意,实施方案的处理步骤和指令可以体现在软件、固件或硬件中,并且当体现在软件中时,可以下载以驻留在实时网络操作系统使用的不同平台上并从其进行操作。
所描述的实施方案还涉及用于执行本文的操作的装置。装置可以为所需目的而特别构造,或者其可以包括通用计算机,该通用计算机由存储在计算机可读介质上的计算机程序选择性地激活或重新配置,该计算机可读介质可以被计算机访问。这种计算机程序可以存储在非暂时性计算机可读存储介质中,例如但不限于包括软盘、光盘、CD-ROM、磁光盘的任何类型的盘、只读存储器、随机存取存储器、EPROM、EEPROM、磁卡或光卡、专用集成电路(ASIC)、或适用于存储电子指令的任何类型的介质,并且每种介质都联接到计算机系统总线。此外,说明书中提到的计算机可以包括单个处理器,或者可以是采用多个处理器设计以提高计算能力的架构。
本文提出的算法和操作与任何具体计算机或其他装置没有本质的关系。各种通用系统也可以与根据本文教导的程序一起使用,或者可以证明构造更专用的装置来执行所需的方法步骤是方便的。对于本领域的技术人员来说,各种这些系统所需的结构以及等效的变体将是显而易见的。此外,本实施方案不参考任何具体编程语言来描述。应当理解,可以使用各种编程语言来实现如本文所描述的实施方案的教导。
实施方案非常适用于多种拓扑上的各种各样的计算机网络系统。在该领域中,大型网络的配置和管理包括存储设备和计算机,其通过网络(如互联网)通信地联接到不同计算机和存储设备。
最后,应当注意,说明书中使用的语言主要是为了可读性和指导性目的而选择的,并且可以不是为了描绘或限定本发明主题而选择的。因此,实施方案的公开旨在是说明性的,但不是限制性的。
Claims (68)
1.一种用于对部署在云平台中的服务强制执行系统配置冻结的计算机实现的方法,所述方法包括:
访问配置在目标云平台上的数据中心,所述数据中心执行服务集,所述数据中心包括数据中心实体的层次结构,其中每个数据中心实体包括(1)一个或多个服务或(2)一个或多个其他数据中心实体;
生成用于在数据中心实体上部署服务的流水线,所述流水线包括:
变更阶段,其包括用于做出与所述数据中心实体的一个或多个软件工件相关联的改变的指令;和
变更前阶段,其包括用于获取锁的指令,其中响应于所述变更前阶段未能获取所述锁而暂停流水线执行;
接收对所述数据中心实体执行持续时间区间的系统配置冻结的请求;
持续所述时间区间获取与所述数据中心实体的服务相关联的一个或多个锁;和
在所述时间区间期间执行所述流水线以便在所述数据中心实体上部署与所述服务相关联的软件工件,包括:
执行所述流水线的所述变更前阶段,使得所述流水线执行暂停,直到获取所述锁。
2.根据权利要求1所述的计算机实现的方法,还包括:
在所述时间区间之后由所述流水线获取所述锁;和
执行所述变更阶段,以便做出与所述数据中心实体的一个或多个软件工件相关联的所述改变。
3.根据权利要求1所述的计算机实现的方法,还包括:
确定所述流水线的所述变更前阶段超过阈值时间未能获取所述锁;和
响应于确定所述流水线的所述变更前阶段超过阈值时间未能获取所述锁,所述流水线的执行失败。
4.根据权利要求1所述的计算机实现的方法,其中所述流水线还包括变更后阶段,其包括用于释放与所述数据中心实体相关联的所述锁的指令,其中执行所述流水线包括:
在完成用于做出与所述数据中心实体的所述一个或多个软件工件相关联的所述改变的所述变更阶段的执行之后,释放所述锁。
5.根据权利要求1所述的计算机实现的方法,其中所述系统配置冻结与优先级相关联,所述方法还包括:
接收用于在所述系统配置冻结的所述时间区间期间修改所述数据中心实体的服务的请求,所述请求具有比所述系统配置冻结的优先级更高的优先级;和
允许在所述时间区间期间进行所述服务的所述修改,而不管所述系统配置冻结。
6.根据权利要求1所述的计算机实现的方法,其中响应于确定在所述时间区间期间预期到大于阈值量的工作负载而执行所述系统配置冻结。
7.根据权利要求1所述的计算机实现的方法,其中响应于确定在所述时间区间期间正在诊断与所述数据中心实体相关联的问题而执行所述系统配置冻结。
8.根据权利要求1所述的计算机实现的方法,其中响应于确定在所述时间区间期间正在执行特定系统配置改变而执行所述系统配置冻结,所述系统配置冻结防止在所述时间区间期间的任何其他系统配置改变。
9.根据权利要求1所述的计算机实现的方法,在所述时间区间之后,执行包括以下的步骤:
识别未能通过任何流水线释放的一个或多个锁;和
释放所识别的锁。
10.根据权利要求1所述的计算机实现的方法,还包括:
响应于接收到系统配置冻结的请求,接收对所述数据中心实体的软件工件进行更新的请求;并且
响应于确定执行更新所述软件工件的所述请求的预期时间低于阈值,延迟系统配置冻结的所述请求的执行,直到完成对所述数据中心实体的所述软件工件进行更新的所述请求的执行。
11.根据权利要求1所述的计算机实现的方法,其中所述锁与请求所述锁的时间区间的长度相关联,所述方法还包括:
监测是否在指定的时间区间的长度之前释放所述锁;和
响应于确定在指定的时间区间的长度之前未释放所述锁,发送警报消息。
12.根据权利要求11所述的计算机实现的方法,其中所述锁与请求所述锁的时间区间的长度相关联,所述方法还包括:
基于流水线的过去执行而确定用于获取锁的时间区间的长度。
13.根据权利要求1所述的计算机实现的方法,其中配置在所述云平台上的所述数据中心与多租户系统的租户相关联,其中系统配置冻结的所述请求是由与所述租户相关联的客户端设备请求的。
14.根据权利要求1所述的计算机实现的方法,还包括:
接收用于多租户系统的租户的数据中心的独立于云平台的声明性规范,所述数据中心表示由与所述租户相关联的用户集使用的计算资源集,所述独立于云平台的声明性规范配置为在多个云平台中的任意云平台上生成所述数据中心并且使用云平台基础设施语言进行指定。
15.根据权利要求14所述的计算机实现的方法,还包括:
编译所述独立于云平台的声明性规范,以生成用于在所述目标云平台上创建所述数据中心的特定于云平台的数据中心表示;和
发送所述特定于云平台的数据中心表示和用于在所述目标云平台上执行的指令集,其中所述目标云平台执行所述指令以使用所述特定于云平台的数据中心表示来配置所述数据中心。
16.一种用于存储指令的非暂时性计算机可读存储介质,当由计算机处理器执行时,所述指令使得所述计算机处理器执行用于在云平台中配置数据中心的步骤,所述步骤包括:
访问配置在目标云平台上的数据中心,所述数据中心执行服务集,所述数据中心包括数据中心实体的层次结构,其中每个数据中心实体包括(1)一个或多个服务或(2)一个或多个其他数据中心实体;
生成用于在数据中心实体上部署服务的流水线,所述流水线包括:
变更阶段,其包括用于做出与所述数据中心实体的一个或多个软件工件相关联的改变的指令;和
变更前阶段,其包括用于获取锁的指令,其中响应于所述变更前阶段未能获取所述锁而暂停所述流水线执行;
接收对所述数据中心实体执行持续时间区间的系统配置冻结的请求;
持续所述时间区间获取与所述数据中心实体的服务相关联的一个或多个锁;和
在所述时间区间期间执行所述流水线以便在所述数据中心实体上部署与所述服务相关联的软件工件,包括:
执行所述流水线的所述变更前阶段,使得所述流水线执行暂停,直到获取所述锁。
17.根据权利要求16所述的非暂时性计算机可读存储介质,其中所述指令还使得所述计算机处理器执行包括以下的步骤:
在所述时间区间之后由所述流水线获取所述锁;和
执行所述变更阶段,以便做出与所述数据中心实体的一个或多个软件工件相关联的所述改变。
18.根据权利要求16所述的非暂时性计算机可读存储介质,其中所述系统配置冻结与优先级相关联,其中所述指令还使得所述计算机处理器执行包括以下的步骤:
接收用于执行的任务,所述任务具有比所述系统配置冻结的优先级更高的优先级,高优先级任务在所述时间区间期间引起对所述数据中心实体的软件工件的改变;和
允许在所述时间区间期间执行所述高优先级任务,而不管所述系统配置冻结。
19.根据权利要求16所述的非暂时性计算机可读存储介质,其中所述指令还使得所述计算机处理器执行包括以下的步骤:
响应于接收到系统配置冻结的请求,接收对所述数据中心实体的软件工件进行更新的请求;和
响应于确定执行更新所述软件工件的所述请求的预期时间低于阈值,延迟系统配置冻结的所述请求的执行,直到完成对所述数据中心实体的所述软件工件进行更新的所述请求的执行。
20.一种计算机系统,包括:
计算机处理器;和
用于存储指令的非暂时性计算机可读存储介质,当由所述计算机处理器执行时,所述指令使得所述计算机处理器执行用于在云平台中配置数据中心的步骤,所述步骤包括:
访问配置在目标云平台上的数据中心,所述数据中心执行服务集,所述数据中心包括数据中心实体的层次结构,其中每个数据中心实体包括(1)一个或多个服务或(2)一个或多个其他数据中心实体;
生成用于在数据中心实体上部署服务的流水线,所述流水线包括:
变更阶段,其包括用于做出与所述数据中心实体的一个或多个软件工件相关联的改变的指令;和
变更前阶段,其包括用于获取锁的指令,其中响应于所述变更前阶段未能获取所述锁而暂停所述流水线执行;
接收对所述数据中心实体执行持续时间区间的系统配置冻结的请求;
持续所述时间区间获取与所述数据中心实体的服务相关联的一个或多个锁;和
在所述时间区间期间执行所述流水线以便在所述数据中心实体上部署与服务相关联的软件工件,包括:
执行所述流水线的所述变更前阶段,使得所述流水线执行暂停,直到获取所述锁。
21.一种用于管理对配置在云平台上的数据中心中执行的服务的改变的计算机实现的方法,所述方法包括:
访问配置在目标云平台上的数据中心,所述数据中心执行服务集,所述数据中心包括数据中心实体的层次结构,其中每个数据中心实体包括(1)一个或多个服务或(2)一个或多个其他数据中心实体;
接收在所述数据中心上执行的所述服务集的修改;
生成用于在目标云平台上部署服务的主流水线,所述主流水线包括:
多个阶段,其包括用于部署服务的指令,每个阶段对应于系统环境,其中所述系统环境中的至少一些属于包括开发环境、测试环境和生产环境的列表;和
变更管理阶段,其包括用于与变更管理系统交互的指令;
编译所述主流水线以生成对应于所述服务集的流水线集,每个生成的流水线包括变更管理阶段;和
执行所述流水线集中的每个,其中流水线的变更管理阶段的执行向变更管理系统提供一个或多个服务的部署状态。
22.根据权利要求21所述的方法,还包括:
接收针对部署在所述数据中心中的特定服务中的特定改变的审计请求;
响应于接收到所述审计请求,识别来自所述变更管理系统的所述特定服务的部署状态;和
响应于所述审计请求,提供所述特定服务的所识别的部署状态。
23.根据权利要求21所述的方法,其中所述主流水线的所述变更管理阶段发生在所述生产环境的阶段之前。
24.根据权利要求21所述的方法,其中所述流水线集形成与所述数据中心中的数据中心实体的所述层次结构相对应的层次结构。
25.根据权利要求21所述的计算机实现的方法,其中所述主流水线通过系统环境集来推进服务的软件工件。
26.根据权利要求25所述的计算机实现的方法,其中所述主流水线的阶段包括用于执行测试用例集以便确定是否将所述软件工件从当前阶段推进至下一阶段的指令。
27.根据权利要求21所述的计算机实现的方法,其中独立于云平台的主部署流水线包括流水线的层次结构,其与由所述独立于云平台的声明性规范指定的数据中心实体的所述层次结构相对应。
28.根据权利要求27所述的计算机实现的方法,其中所述流水线的层次结构包括数据中心实例流水线,所述数据中心实例流水线包括一个或多个服务组流水线,其中所述服务组流水线包括一个或多个服务流水线。
29.根据权利要求27所述的计算机实现的方法,其中生成的流水线的变更管理阶段包括等待批准以进行到下一阶段的指令。
30.根据权利要求21所述的计算机实现的方法,还包括:
接收所述独立于云平台的声明性规范;和
编译所述独立于云平台的声明性规范,以生成特定于云平台的数据中心表示。
31.根据权利要求21所述的计算机实现的方法,其中编译所述独立于云平台的声明性规范包括:
从原始声明性规范生成所述数据中心的所述独立于云平台的详细元数据表示的第一版本;和
从修改后的声明性规范生成所述数据中心的所述独立于云平台的详细元数据表示的第二版本。
32.根据权利要求31所述的计算机实现的方法,还包括:
基于所述独立于云平台的详细元数据表示的所述第一版本,针对所述目标云平台生成平台特定详细元数据表示;和
基于所述平台特定详细元数据表示,在所述目标云平台上部署所述数据中心。
33.根据权利要求21所述的计算机实现的方法,其中所述独立于云平台的声明性规范包括一个或多个数据中心实例的定义,每个数据中心实例包括一个或多个服务组,其中每个服务组包括服务集。
34.根据权利要求21所述的计算机实现的方法,其中经由工件版本映射指定在所述数据中心上执行的所述服务集的所述修改。
35.根据权利要求34所述的计算机实现的方法,还包括:
通过将所述工件版本映射与先前接收到的工件版本映射进行比较,确定在所述数据中心上执行的所述服务集的所述修改。
36.一种用于存储指令的非暂时性计算机可读存储介质,当由计算机处理器执行时,所述指令使得所述计算机处理器执行用于在云平台中配置数据中心的步骤,所述步骤包括:
访问配置在目标云平台上的数据中心,所述数据中心执行服务集,所述数据中心包括数据中心实体的层次结构,其中每个数据中心实体包括(1)一个或多个服务或(2)一个或多个其他数据中心实体;
接收在所述数据中心上执行的所述服务集的修改;
生成用于在目标云平台上部署服务的主流水线,所述主流水线包括:
多个阶段,其包括用于部署服务的指令,每个阶段对应于系统环境,其中所述系统环境中的至少一些属于包括开发环境、测试环境和生产环境的列表;和
变更管理阶段,其包括用于与变更管理系统交互的指令;
编译所述主流水线以生成对应于所述服务集的流水线集,每个生成的流水线包括变更管理阶段;和
执行所述流水线集中的每个,其中流水线的变更管理阶段的执行向变更管理系统提供一个或多个服务的部署状态。
37.根据权利要求36所述的非暂时性计算机可读存储介质,其中所述指令还使得所述处理器执行包括以下的步骤:
接收针对部署在所述数据中心中的特定服务中的特定改变的审计请求;
响应于接收到所述审计请求,识别来自所述变更管理系统的所述特定服务的部署状态;和
响应于所述审计请求,提供所述特定服务的所识别的部署状态。
38.根据权利要求36所述的非暂时性计算机可读存储介质,其中所述主流水线的所述变更管理阶段发生在所述生产环境的阶段之前。
39.根据权利要求36所述的非暂时性计算机可读存储介质,其中所述指令还使得所述处理器执行包括以下的步骤:
通过将所述工件版本映射与先前接收到的工件版本映射进行比较,确定在所述数据中心上执行的所述服务集的所述修改。
40.一种计算机系统,包括:
计算机处理器;和
用于存储指令的非暂时性计算机可读存储介质,当由所述计算机处理器执行时,所述指令使得所述计算机处理器执行用于在云平台中配置数据中心的步骤,所述步骤包括:
访问配置在目标云平台上的数据中心,所述数据中心执行服务集,所述数据中心包括数据中心实体的层次结构,其中每个数据中心实体包括(1)一个或多个服务或(2)一个或多个其他数据中心实体;
接收在所述数据中心上执行的所述服务集的修改;
生成用于在目标云平台上部署服务的主流水线,所述主流水线包括:
多个阶段,其包括用于部署服务的指令,每个阶段对应于系统环境,其中所述系统环境中的至少一些属于包括开发环境、测试环境和生产环境的列表;和
变更管理阶段,其包括用于与变更管理系统交互的指令;
编译所述主流水线以生成对应于所述服务集的流水线集,每个生成的流水线包括变更管理阶段;和
执行所述流水线集中的每个,其中流水线的变更管理阶段的执行向变更管理系统提供一个或多个服务的部署状态。
41.根据权利要求1或2所述的计算机实现的方法,还包括:
确定所述流水线的所述变更前阶段超过阈值时间未能获取所述锁;和
响应于确定所述流水线的所述变更前阶段超过阈值时间未能获取所述锁,所述流水线的执行失败。
42.根据权利要求1、2和41中任一项所述的计算机实现的方法,其中所述流水线还包括变更后阶段,所述变更后阶段包括用于释放与所述数据中心实体相关联的所述锁的指令,其中执行所述流水线包括:
在完成用于做出与所述数据中心实体的一个或多个软件工件相关联的所述改变的所述变更阶段的执行之后,释放所述锁。
43.根据权利要求1、2、41和42中任一项所述的计算机实现的方法,其中所述系统配置冻结与优先级相关联,所述方法还包括:
接收用于在所述系统配置冻结的所述时间区间期间修改所述数据中心实体的服务的请求,所述请求具有比所述系统配置冻结的优先级更高的优先级;和
允许在所述时间区间期间进行所述服务的所述修改,而不管所述系统配置冻结。
44.根据权利要求1、2和41-43中任一项所述的计算机实现的方法,其中响应于确定在所述时间区间期间预期到大于阈值量的工作负载而执行所述系统配置冻结。
45.根据权利要求1、2和41-44中任一项所述的计算机实现的方法,其中响应于确定在所述时间区间期间正在诊断与所述数据中心实体相关联的问题而执行所述系统配置冻结。
46.根据权利要求1、2和41-45中任一项所述的计算机实现的方法,其中响应于确定在所述时间区间期间正在执行特定系统配置改变而执行所述系统配置冻结,所述系统配置冻结防止在所述时间区间期间的任何其他系统配置改变。
47.根据权利要求1、2和41-46中任一项所述的计算机实现的方法,在所述时间区间之后,执行包括以下的步骤:
识别未能通过任何流水线释放的一个或多个锁;和
释放所识别的锁。
48.根据权利要求1、2和41-47中任一项所述的计算机实现的方法,还包括:
响应于接收到系统配置冻结的请求,接收对所述数据中心实体的软件工件进行更新的请求;和
响应于确定执行更新所述软件工件的所述请求的预期时间低于阈值,延迟系统配置冻结的所述请求的执行,直到完成对所述数据中心实体的所述软件工件进行更新的所述请求的执行。
49.根据权利要求1、2和41-48中任一项所述的计算机实现的方法,其中所述锁与请求所述锁的时间区间的长度相关联,所述方法还包括:
监测是否在指定的时间区间的长度之前释放所述锁;和
响应于确定在指定的时间区间的长度之前未释放所述锁,发送警报消息。
50.根据权利要求1、2和41-49中任一项所述的计算机实现的方法,其中所述锁与请求所述锁的时间区间的长度相关联,所述方法还包括:
基于流水线的过去执行而确定用于获取锁的所述时间区间的长度。
51.根据权利要求1、2和41-50中任一项所述的计算机实现的方法,其中配置在所述云平台上的所述数据中心与多租户系统的租户相关联,其中所述系统配置冻结请求是从与所述租户相关联的客户端设备请求的。
52.根据权利要求1、2和41-51中任一项所述的计算机实现的方法,还包括:
接收用于所述多租户系统的租户的数据中心的独立于云平台的声明性规范,所述数据中心表示由与所述租户相关联的用户集使用的计算资源集,所述独立于云平台的声明性规范配置为在多个云平台中的任意云平台上生成所述数据中心,并且使用云平台基础设施语言进行指定。
53.根据权利要求1、2和41-52中任一项所述的计算机实现的方法,还包括:
编译所述独立于云平台的声明性规范,以生成用于在所述目标云平台上创建所述数据中心的特定于云平台的数据中心表示;和
发送所述特定于云平台的数据中心表示和用于在所述目标云平台上执行的指令集,其中所述目标云平台执行所述指令以使用所述特定于云平台的数据中心表示来配置所述数据中心。
54.根据权利要求21或22所述的计算机实现的方法,其中所述主流水线的所述变更管理阶段发生在所述生产环境的阶段之前。
55.根据权利要求21、22和54中任一项所述的计算机实现的方法,其中所述流水线集形成与所述数据中心中的数据中心实体的所述层次结构相对应的层次结构。
56.根据权利要求21、22、54和55中任一项所述的计算机实现的方法,其中所述主流水线通过系统环境集来推进服务的软件工件。
57.根据权利要求21、22和54-56中任一项所述的计算机实现的方法,其中所述主流水线的阶段包括用于执行测试用例集以便确定是否将所述软件工件从当前阶段推进至下一阶段的指令。
58.根据权利要求21、22和54-57中任一项所述的计算机实现的方法,其中所述独立于云平台的主部署流水线包括流水线的层次结构,其与由所述独立于云平台的声明性规范指定的数据中心实体的所述层次结构相对应。
59.根据权利要求21、22和54-58中任一项所述的计算机实现的方法,其中所述流水线的层次结构包括数据中心实例流水线,所述数据中心实例流水线包括一个或多个服务组流水线,其中服务组流水线包括一个或多个服务流水线。
60.根据权利要求21、22和54-59中任一项所述的计算机实现的方法,其中生成的流水线的变更管理阶段包括等待批准以进行到所述下一阶段的指令。
61.根据权利要求21、22和54-60中任一项所述的计算机实现的方法,还包括:
接收所述独立于云平台的声明性规范;和
编译所述独立于云平台的声明性规范,以生成特定于云平台的数据中心表示。
62.根据权利要求21、22和54-61中任一项所述的计算机实现的方法,其中编译所述独立于云平台的声明性规范包括:
从原始声明性规范生成所述数据中心的所述独立于云平台的详细元数据表示的第一版本;和
从修改后的声明性规范生成所述数据中心的所述独立于云平台的详细元数据表示的第二版本。
63.根据权利要求21、22和54-62中任一项所述的计算机实现的方法,还包括:
基于所述独立于云平台的详细元数据表示的所述第一版本,针对所述目标云平台生成平台特定详细元数据表示;和
基于所述平台特定详细元数据表示,在所述目标云平台上部署所述数据中心。
64.根据权利要求21、22和54-63中任一项所述的计算机实现的方法,其中所述独立于云平台的声明性规范包括一个或多个数据中心实例的定义,每个数据中心实例包括一个或多个服务组,其中每个服务组包括服务集。
65.根据权利要求21、22和54-64中任一项所述的计算机实现的方法,其中经由工件版本映射指定在所述数据中心上执行的所述服务集的所述修改。
66.根据权利要求21、22和54-65中任一项所述的计算机实现的方法,还包括:
通过将所述工件版本映射与先前接收到的工件版本映射进行比较,确定在所述数据中心上执行的所述服务集的所述修改。
67.一种用于存储指令的非暂时性计算机可读存储介质,当由计算机处理器执行时,所述指令使得所述计算机处理器执行上述方法权利要求中任一项所述的步骤。
68.一种计算机系统,包括:
计算机处理器;和
用于存储指令的非暂时性计算机可读存储介质,当由所述计算机处理器执行时,所述指令使得所述计算机处理器执行上述方法权利要求中任一项所述的步骤。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/148,363 | 2021-01-13 | ||
US17/148,363 US11487546B2 (en) | 2021-01-13 | 2021-01-13 | Change management of services deployed on datacenters configured in cloud platforms |
US17/147,715 | 2021-01-13 | ||
PCT/US2021/015827 WO2022154811A1 (en) | 2021-01-13 | 2021-01-29 | System configuration freeze and change management of services deployed via continuous delivery on datacenters configured in cloud platforms |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117099079A true CN117099079A (zh) | 2023-11-21 |
Family
ID=82321814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180095275.6A Pending CN117099079A (zh) | 2021-01-13 | 2021-01-29 | 经由配置在云平台中的数据中心上的持续交付部署的服务的系统配置冻结和变更管理 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11487546B2 (zh) |
CN (1) | CN117099079A (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11018938B1 (en) * | 2020-11-06 | 2021-05-25 | Salesforce.Com, Inc. | Auditing metadata representation of a cloud-computing platform based datacenter |
US20220309418A1 (en) * | 2021-03-23 | 2022-09-29 | Opsera Inc | Using Scorecards Across DevOps Landscape |
US11265211B1 (en) * | 2021-04-02 | 2022-03-01 | Vmware, Inc. | Continuous delivery of management configurations |
US11880720B2 (en) * | 2021-09-27 | 2024-01-23 | Amazon Technologies, Inc. | Extensible change control management |
CN116107704B (zh) * | 2023-04-17 | 2023-06-06 | 北京邮电大学 | 区块链BaaS和多联盟部署方法、数据存储访问方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8843889B2 (en) * | 2012-04-04 | 2014-09-23 | International Business Machines Corporation | Managing application template artifacts in a networked computing environment |
US10733010B2 (en) | 2017-05-11 | 2020-08-04 | Vmware, Inc. | Methods and systems that verify endpoints and external tasks in release-pipeline prior to execution |
US10656927B2 (en) | 2017-10-27 | 2020-05-19 | Intuit Inc. | Methods, systems, and computer program products for automating releases and deployment of a softawre application along the pipeline in continuous release and deployment of software application delivery models |
US11055078B2 (en) * | 2018-09-28 | 2021-07-06 | Atlassian Pty Ltd. | Systems and methods for deploying software products to environments |
US11137998B2 (en) * | 2018-10-08 | 2021-10-05 | Ebay Inc. | Dependency lock in CICD pipelines |
US11221839B2 (en) * | 2020-06-15 | 2022-01-11 | Sap Se | Early software updates for multi-tenant integration service |
US11093227B1 (en) * | 2020-06-30 | 2021-08-17 | Td Ameritrade Ip Company, Inc. | Computer-automated software release and deployment architecture |
-
2021
- 2021-01-13 US US17/148,363 patent/US11487546B2/en active Active
- 2021-01-29 CN CN202180095275.6A patent/CN117099079A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220222079A1 (en) | 2022-07-14 |
US11487546B2 (en) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102370568B1 (ko) | 모놀리식 레거시 애플리케이션들에 기초한 마이크로서비스들의 컨테이너화된 전개 | |
US10430204B2 (en) | System and method for cloud provisioning and application deployment | |
US9535684B2 (en) | Management of software updates in a virtualized environment of a datacenter using dependency relationships | |
US8122106B2 (en) | Integrating design, deployment, and management phases for systems | |
CN117099079A (zh) | 经由配置在云平台中的数据中心上的持续交付部署的服务的系统配置冻结和变更管理 | |
US11561784B2 (en) | Versioning of pipeline templates for continuous delivery of services on datacenters configured in cloud platforms | |
US11356508B1 (en) | Retry strategies for handling failures during continuous delivery of software artifacts in a cloud platform | |
US11573786B1 (en) | Deployment strategies for continuous delivery of software artifacts in cloud platforms | |
US20230035486A1 (en) | Managing execution of continuous delivery pipelines for a cloud platform based data center | |
US20220236975A1 (en) | Optimized compilation of pipelines for continuous delivery of services on datacenters configured in cloud platforms | |
US11392361B2 (en) | Software release orchestration for continuous delivery of features in a cloud platform based data center | |
US11349958B1 (en) | Deployment of software releases on datacenters configured in cloud platforms | |
US20220239736A1 (en) | Multi-substrate fault tolerant continuous delivery of datacenter builds on cloud computing platforms | |
US11733987B2 (en) | Executing shared pipelines for continuous delivery of services in cloud platforms | |
WO2022250864A1 (en) | Deploying a cloud service based on component dependencies | |
US11848829B2 (en) | Modifying a data center based on cloud computing platform using declarative language and compiler | |
US20220147399A1 (en) | Declarative language and compiler for provisioning and deploying data centers on cloud platforms | |
US11403145B1 (en) | Enforcing system configuration freeze of services deployed via continuous delivery on datacenters configured in cloud platforms | |
JP2024503440A (ja) | クラウドプラットフォームに構成されたデータセンタ上に継続的配信を介して配備されるサービスのシステム構成フリーズ及び変更管理 | |
US11868750B2 (en) | Orchestration of datacenter creation on a cloud platform | |
JP2023551963A (ja) | クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ | |
US20240036929A1 (en) | Orchestration of operations on a cloud platform based on multiple version maps of services | |
Hunter II et al. | Deployments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information |
Address after: California, USA Applicant after: Shuo Power Co. Address before: California, USA Applicant before: SALESFORCE.COM, Inc. |
|
CB02 | Change of applicant information | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |