CN116783581A - 在云平台中配置的数据中心上部署软件发布 - Google Patents
在云平台中配置的数据中心上部署软件发布 Download PDFInfo
- Publication number
- CN116783581A CN116783581A CN202180091179.4A CN202180091179A CN116783581A CN 116783581 A CN116783581 A CN 116783581A CN 202180091179 A CN202180091179 A CN 202180091179A CN 116783581 A CN116783581 A CN 116783581A
- Authority
- CN
- China
- Prior art keywords
- cloud platform
- data center
- independent
- pipeline
- service
- 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
- 238000000034 method Methods 0.000 claims description 69
- 238000012360 testing method Methods 0.000 claims description 47
- 238000003860 storage Methods 0.000 claims description 34
- 238000011161 development Methods 0.000 claims description 28
- 238000013507 mapping Methods 0.000 claims description 26
- 238000004519 manufacturing process Methods 0.000 claims description 24
- 230000009471 action Effects 0.000 claims description 12
- 230000001419 dependent effect Effects 0.000 claims description 10
- 238000007726 management method Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 22
- 241000287219 Serinus canaria Species 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 230000015654 memory Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000008520 organization Effects 0.000 description 8
- 230000007613 environmental effect Effects 0.000 description 7
- 230000014509 gene expression Effects 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000012384 transportation and delivery Methods 0.000 description 5
- 238000004590 computer program Methods 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
- 238000012423 maintenance Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 238000007796 conventional method Methods 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
- 230000003287 optical effect Effects 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000012550 audit 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
- 230000007547 defect 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
- 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
- 230000000644 propagated effect Effects 0.000 description 1
- 238000005067 remediation Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
计算系统,例如多租户系统,使用独立于云平台的云平台基础设施语言,在云平台中创建的数据中心中部署软件工件。该系统接收工件版本映射和独立于云平台的主管线,工件版本映射标识用于数据中心的数据中心实体的软件工件的版本,独立于云平台的主管线包括用于执行与数据中心上的服务相关的操作的指令,例如,部署软件工件、供应计算资源等等。该系统结合工件版本映射来编译独立于云平台的主管线,以生成特定于云平台的详细管线,该管线根据工件版本映射在数据中心实体上部署适当版本的部署工件。该系统将特定于云平台的详细管线发送给目标云平台以便执行。
Description
背景技术
技术领域
公开文本总体上涉及在云计算平台中管理软件发布,并且具体地,涉及在云计算平台中配置的数据中心上部署软件发布。
相关技术描述
组织越来越多地在云平台(或云计算平台)上响应,如AWS(亚马逊网络服务)、谷歌云平台、微软AZURE等,以满足其基础设施需求。云平台通过互联网向组织提供服务器、存储、数据库、网络、软件等等。通常,组织维护包含组织使用的硬件和软件的数据中心。然而,维护数据中心可能会导致在维护、人员等方面的巨大开销。因此,组织正在将其数据中心转移到云平台,以提供计算资源的可扩展性和弹性。
组织使用可以在云平台上管理和部署应用程序的持续交付平台来维护云平台上的云基础设施。这种持续交付平台允许组织简化软件部署过程,并管理云平台上的应用程序、防火墙、集群、服务器、负载均衡器和其他计算基础设施。然而,使用持续交付平台为云平台上提供的服务部署软件发布可能会很复杂。例如,不同版本的软件可能必须部署在于不同云计算资源上运行的不同服务上。此外,每个云平台使用不同的工具来管理资源。
诸如多租户系统的大型系统可以为代表多租户系统的租户的大量组织管理服务,并且可以与多个云平台交互。多租户系统可能必须在云平台上维护几千个这样的数据中心。每个数据中心对软件发布可能有不同的要求。此外,每个云平台支持的软件、语言和特征可能不同。例如,不同的云平台可能支持不同的机制来实施网络策略或访问控制。因此,取决于数据中心支持的云平台的数量,多租户系统必须维护用于在数据中心上发布和部署服务的机制的不同实现方式。这导致支持在跨多个云平台的数据中心上的软件发布的多租户系统的维护成本高。
附图说明
图1是示出根据实施方案的在云平台上配置数据中心的多租户系统的系统环境的框图。
图2A是示出根据实施方案的部署模块210的架构的框图。
图2B示出了根据实施方案的用于在数据中心中部署软件工件的整体过程。
图3是示出根据一个实施方案的软件发布管理模块的架构的框图。
图4示出了根据一个实施方案的数据中心声明性规范的实施例。
图5示出了根据一个实施方案的基于声明性规范在云平台上创建的示例性数据中心。
图6是示出根据一个实施方案的基于声明性规范在云平台上生成数据中心的框图。
图7示出了根据实施方案的生成用于在云平台上配置的数据中心上部署软件工件的管线的整体过程。
图8示出了根据实施方案的示例性主管线。
图9示出了根据实施方案的由云平台上的主管线的环境的阶段执行的整体过程。
图10示出了根据实施方案的示例性主管线。
图11示出了根据实施方案的用于数据中心的示例性主管线。
图12示出了根据实施方案如何基于工件版本映射来修改主管线的执行。
图13示出了根据实施方案的用于在云平台上配置的数据中心上部署软件工件的整体过程。
图14是示出根据一个实施方案的在图1的环境中使用的典型计算机系统的功能视图的框图。
附图仅出于示出的目的描绘了各种实施方案。本领域的技术人员将容易地从以下讨论中认识到,在不偏离本文描述的实施方案的原理的情况下,可以采用本文所示的结构和方法的替代实施方案。
图使用相似的参考数字来标识相似的要素。参考数字后面的字母,如“115a”,指示该文本具体指的是具有该特定参考数字的要素。文本中没有后面的字母的参考数字,如“115”,指的是图中带有该参考数字的任何或所有要素。
具体实施方式
云平台经由互联网等公共网络按需向计算系统提供计算资源,如存储、计算资源、应用程序等。云平台允许企业最大限度地降低建立计算基础设施的前期成本,还允许企业以更少的维护开销更快地启动和运行应用程序。云平台还允许企业调整计算资源,以适应快速波动和不可预测的需求。企业可以使用云平台创建数据中心,以便企业的用户使用。然而,在每个云平台上实现数据中心需要云平台技术方面的专业知识。
实施方案使用独立于云平台的云平台基础设施语言,在云平台中创建数据中心。该系统接收数据中心的独立于云平台的声明性规范。该声明性规范描述了数据中心的结构,并且可能不提供指定如何创建数据中心的指令。独立于云平台的声明性规范配置为在多个云平台中的任何一个上生成数据中心,并且其使用云平台基础设施语言来指定。该系统接收标识用于创建数据中心的目标云平台的信息,并编译独立于云平台的声明性规范,以生成特定于云平台的数据中心表示。该系统发送特定于云平台的数据中心表示和用于在目标云平台上执行的指令集。目标云平台使用特定于平台的数据中心表示来执行配置数据中心的指令。该系统为用户提供对云平台配置的数据中心计算资源的访问。
在一个实施方案中,该系统执行与配置在云平台上的数据中心上的软件发布相关的操作,例如,部署软件发布、提供资源、执行软件发布的回滚等等。该系统访问配置在目标云平台上的数据中心。数据中心是基于独立于云平台的声明性规范生成的,该规范包括数据中心实体的层级。每个数据中心实体包括(1)服务和(2)一个或多个其他数据中心实体中的一个或多个。该系统生成独立于云平台的主管线,该主管线包括:(1)用于部署软件工件的阶段序列,例如,开发阶段、测试阶段和生产阶段,以及(2)用于将软件工件从一个阶段推进至阶段序列的后续阶段的标准。该系统编译独立于云平台的主管线,以针对所述目标云平台生成依赖于云平台的详细管线,该详细管线具有用于根据声明性规范定义的数据中心布局执行与服务相关的操作的指令。该系统在目标云平台上执行依赖于云平台的详细管线,例如,在数据中心的数据中心实体上部署软件发布。
在一个实施方案中,该系统访问配置在目标云平台上的数据中心。该系统接收独立于云平台的工件版本映射,该工件版本映射将数据中心的数据中心实体与以部署在数据中心实体上为目标的软件工件的版本相关联。每个软件工件包括与配置用于在一个或多个云平台上执行的服务相关联的可执行指令。该系统基于独立于云平台的工件版本映射,针对目标云平台生成特定于云平台的主管线。特定于云平台的主管线包括指令,以执行例如根据独立于云平台的版本映射,针对数据中心实体上的服务构建和部署适当版本的部署工件的操作。该系统将特定于云平台的部署管线传输至目标云平台以便执行。工件版本映射和主管线可以用于执行与服务相关的各种动作,包括部署服务、销毁服务、提供服务资源、销毁服务资源等等。
云平台在本文中也被称为基板。数据中心的声明性规范是独立于基板的或与基板无关的。如果使用传统技术执行与数据中心相关的操作,如部署软件发布、提供资源等,则用户必须提供特定于云平台的指令。因此,用户需要所使用的云平台的专业知识。此外,这些指令是特定于云平台的,并且不能跨多个平台移植。例如,在AWS云平台上部署软件的指令不同于在GCP云平台上的指令。开发人员需要了解如何在特定的云平台上实施每个特征的详细信息。所公开的系统提供了一种云平台基础设施语言,其允许用户使用独立于云平台并且可以在从多个云平台中选择的任何云平台上执行的指令在数据中心上执行操作。云平台基础设施语言的编译器为目标云平台生成特定于云平台的详细指令。
云平台基础设施语言可以被称为领域特定语言(DSL)。该系统可以表示多租户系统,但不限于多租户系统,并且可以是任何在线系统或具有对云平台的网络访问的任何计算系统。
系统环境
图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中所示的每个部件表示一个或多个计算设备。例如,计算设备可以是执行MicrosoftTM、WindowsTM兼容的操作系统(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和管线执行引擎360。其他实施方案可以包括比图3中本文所指示的模块更多、更少或不同的模块。
解析模块310解析各种类型的用户输入,包括数据中心的声明性规范、工件版本映射225和主管线235。解析模块310生成所处理的输入的数据结构和元数据表示,并将生成的数据结构和元数据表示提供给软件发布管理模块230的其他模块以便进一步处理。
元数据存储340存储由软件发布管理模块230生成的数据中心的各种转换的元数据表示。如果在数据中心的当前版本中遇到问题,则可以使用转换的元数据表示执行回滚到先前版本。转换的元数据表示可以在转换过程的各个阶段用于验证、审计、治理等。
管线生成器模块320结合作为输入接收的工件版本映射来处理主管线,以生成用于目标云平台的详细管线。管线包括阶段,该阶段包括用于提供服务或部署应用的指令,用于根据工件版本映射针对云平台上的各种服务的部署软件发布的版本。工件版本映射存储330存储从用户接收的工件版本映射,并且管线存储340存储主管线以及由管线生成器模块320生成的管线。
管线执行引擎360执行由管线生成器模块320生成的详细管线。在一个实施方案中,管线执行引擎360是诸如SPINNAKER的系统,其执行用于发布/部署软件的管线。管线执行引擎360解析管线并在目标云计算平台上执行管线的每个阶段。
基于云平台的数据中心生成
图4示出了根据一个实施方案的数据中心的声明性规范的实施例。声明性规范410包括多个数据中心实体。数据中心实体是数据中心实体类型的实例,并且每个数据中心实体类型可以有多个实例。数据中心实体的实施例包括数据中心、服务组、服务、团队、环境和模式。
声明性规范410包括各种类型的数据中心实体的定义,包括服务组、服务、团队、环境和模式。声明性规范包括数据中心的一个或多个实例。以下是对各种类型的数据中心实体及其实施例的描述。这些实施例是说明性的,显示了数据中心实体的一些属性。其他实施方案可以包括不同的属性,并且具有相同功能的属性可以被赋予与本文所指示的名称不同的名称。在一个实施方案中,使用符合预定义模式的分层对象(例如,JSON(Javascript对象符号))来指定声明性规范。
根据一个实施方案,服务组520表示由一个或多个计算系统提供的可以独立地构建和交付能力、特征和服务集。服务组也可以被称为逻辑服务组、功能单元或有界上下文。服务组520还可以被视为由一个或多个计算系统提供的内聚技术用例功能集的服务集。服务组520强制执行安全边界。服务组520定义修改的范围。因此,对实体的任何修改,例如由服务组520内的一个或多个计算系统提供的能力、特征或服务,可以根据需要或适合于服务组内的实体而传播,但是不传播到驻留在服务组520的有界定义之外的实体。数据中心可以包括多个服务组520。服务组定义指定属性,包括名称、描述、标识符、模式版本和服务集实例。服务组的实施例是区块链服务组,其包括用于提供区块链功能的服务集。类似地,安全服务组提供安全特征。用户界面服务组提供特定用户界面特征的功能。共享文档服务组提供跨用户共享文档的功能。类似地,可以有几个其他服务组。
服务组支持规范的可重用性,以便对开发数据中心感兴趣的租户或用户拥有他们可以随时使用的服务组库。围绕服务组的服务的边界基于安全问题和网络问题等。服务组与用于执行与服务组的交互的协议相关联。在一个实施方案中,服务组提供API(应用程序编程接口)和实施这些API的服务的集合。此外,服务组是独立于基板的。服务组为服务组内的服务提供爆炸半径范围,使得服务组内的任何服务故障的影响仅限于服务组内的服务,而在服务组外的影响最小。
以下是服务组的规范的实施例。服务组指定表示服务组元数据的各种属性,并且包括服务组内的服务集。可能存在为服务组指定的其他类型的元数据,本文没有指示。
如上面的实施例所示,服务组可以指定一组集群。集群表示一组计算节点,例如,一组服务器、一组虚拟机或一组容器(如KUBERNETES容器)。物理服务器可以运行多个容器,其中每个容器都有自己的文件系统、CPU、内存、进程空间等的份额。
该服务组指定服务集。服务组可以为服务指定集群,使得部署在云平台上的数据中心运行计算节点的集群,并且如果指定的映射包括在声明性规范中,则基于该指定的映射将该服务映射到集群。例如,在上面显示的服务组实施例中,服务实例serviceinstance0002被指定为在集群实例cluster1上运行。
服务组可以指定安全组,每个安全组指定允许彼此交互的服务集。安全组外的服务需要通过额外的认证才能与安全组内的服务通信。可替代地,安全组内的服务使用一种协议彼此交互,而安全组外的服务使用不同的协议,需要增强认证才能与安全组内的服务交互。因此,安全组指定了确定服务如何相互交互的策略。安全策略可以指定安全策略适用的一个或多个环境。例如,安全策略policy1可以应用于特定环境env1(例如,生产环境),并且另一安全策略policy2可以应用于另一环境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,则服务B在服务A启动之前启动。
数据中心生成模块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的环境管线包括用于在一组数据中心实体(例如,被指定为具有环境E的一组数据中心实体)上部署910软件的指令。在实施方案中,通过编译服务的源代码来生成软件工件。可以从版本控制软件获得源代码。该组数据中心实体可以包括数据中心实例、服务组、单元格、服务或这些的任意组合。
用于环境E的环境管线还包括用于运行920测试的指令,该测试用于测试一组数据中心实体上部署的软件工件。用于环境E的环境管线还包括用于例如使用推进决策管线815对照推进标准来评估930测试结果的指令。如果不满足推进标准,则可以使用修订的软件工件来重复步骤910、920、930和940,该修订的软件工件例如是从源代码生成的软件工件,该软件工件包括对在测试920期间识别的某些缺陷的修复。用于环境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文件或使用用于表示嵌套对象的任何其他语法的文件。工件版本映射可以包括与分布在数据中心的层级上的各种数据中心实体相关联的一组<服务>:<版本>密钥对。工件版本映射密钥对充当对应管线的白名单。如果在工件版本映射中没有包括一服务的密钥,那么在管线的执行期间,该服务的所有管线都被排除在外。不同的工件版本映射可以应用于相同的主管线,导致在主管线的执行期间包括/排除不同的服务。
以下是示例性工件版本映射。工件版本映射使用属性“环境_类型”指定环境类型。在以下的实施例中,指定了环境类型开发。环境类型可以包括一个或多个数据中心实例;数据中心实例可以包括一个或多个服务组,服务组可以包括一个或多个服务。在以下的实施例中,软件工件名称被指定为library1,版本被指定为version1,并且与服务实例instance001相关联。然而,软件工件名称和版本可以与层级中的任何级别的数据中心实体相关联。例如,对于指定的软件工件名称和版本或服务组,软件工件名称和版本适用于服务组内的所有服务,除非软件工件名称和版本被针对服务组内的特定服务实例指定的软件工件名称和版本的不同值覆盖。
类似地,除非为服务组指定了覆盖值,否则软件工件名称和版本可以为数据中心实例指定并且适用于数据中心实例内的所有服务组或单元格。
/>
在实施方案中,工件版本映射使用数据中心实体的完整路径,例如“stagger_group1/datacenter1/service_group2/service1”来指定数据中心实体。在实施方案中,工件版本映射使用数据中心实体的完整路径中的正则表达式来指定一组数据中心实体。例如,包括service_group[?]的完整路径包括service_group1、service_group2、service_group3等等。
以下是工件版本映射的实施例,其指定正则表达式来定义服务集。环境类型被指定为开发和测试,并且完整路径中的数据中心实体(包括数据中心实例和服务组)被指定为通配符,并且服务实例被指定为“service*”。因此,对于开发和测试环境的所有数据中心实例、所有服务组、与service*匹配的服务名称,将部署应用程序app1的版本V1。
在一些实施方案中,工件版本映射可以指定管线使用的参数。因此,指定的参数将适用于为其指定参数的交错组。
图11示出了根据实施方案的用于数据中心的示例性主管线。如图11中所示,主管线在部署组(也被称为交错组)上执行,该部署组指由声明性规范定义的数据中心实体的集合。工件版本映射可以指定交错组属性,以定义可以与特定工件版本相关联的一组数据中心实体。可以通过指定来自数据中心的层级中的根节点的路径来标识数据中心实体,例如,数据中心实例。如图11所示,主管线为不同的环境定义了不同的阶段。每个阶段在被称为部署组1110的一组数据中心实体上执行动作。图11示出了包括数据中心实体的开发部署组1110a,其包括服务组S11、S12和S13;包括数据中心实体的测试部署组1110b,其包括服务组S21、S22和S23;以及包括数据中心实体的生产部署组1110b,其包括服务组S31、S32、S33和S34。评估1120a在开发部署组1110a的数据中心实体上的测试结果,以确定在开发部署组1110a中测试的软件工件是否被推进至测试部署组1110b。类似地,评估1120b在测试部署组1110a的数据中心实体上的测试结果,以确定在测试部署组1110a中测试的软件工件是否被推进至生产部署组1110c。
图12示出了根据实施方案如何基于工件版本映射来修改主管线的执行。工件版本映射将软件工件的版本与数据中心实体相关联。系统修改在数据中心实体上执行的详细管线,以确保在每个数据中心实体上执行与软件工件的适当版本相关的动作。例如,图12示出了用于服务SVC1的软件工件的版本V1和V2。版本V1与服务组S11、S23和S31相关联,并且版本V2与服务组S11、S21和S32相关联。假设主管线正在数据中心上部署服务SVC1的版本。因此,系统修改执行的管线,以在服务组S11、S23和S31上部署版本V1和在服务组S11、S21和S32上部署版本V2。在一个实施方案中,系统在图11中所示的主管线的阶段之前引入版本映射过滤器。主管线的执行基于版本映射过滤器针对每个数据中心实体选择软件工件的版本。例如,版本映射过滤器包括对该特定动作跳过服务组S13、S22、S33和S34的指令。版本映射过滤器指定版本V1部署在服务组S11、S23和S31上,并且版本V2部署在服务组S11、S21和S32上。
图13示出了根据实施方案的用于在云平台上配置的数据中心上部署软件工件的整体过程。数据中心生成模块在目标云平台上生成1310一个或多个数据中心。每个数据中心都是根据独立于云平台的声明性规范生成的,并且具有数据中心实体的层级。
软件发布管理模块230接收将数据中心实体映射到软件工件的版本的工件版本映射作为输入。软件发布管理模块230还接收1330独立于云平台的主管线作为输入。
软件发布管理模块230结合工件版本映射编译1340独立于云平台的主管线,以生成特定于云平台的详细管线。在一个实施方案中,生成的特定于云平台的详细管线包括某些阶段之前的工件版本映射过滤器,以根据工件版本映射确定是否应该启用或禁用某些阶段。
软件发布管理模块230进一步接收1350用于发布部署在数据中心上的服务的一个或多个特征的代码。例如,代码可以表示从版本控制管理系统获得的源代码,该版本控制管理系统存储由开发人员向其提交更改的源代码存储库。软件发布管理模块230执行1360特定于云平台的部署管线,以基于接收到的代码部署软件工件。
工件版本映射和主管线可以用于编排与基于云的数据中心中软件工件的持续交付相关的各种类型的操作。工件版本映射和主管线可以配置为对服务或服务组或任何数据中心实体执行聚合重试操作。工件版本映射包括对数据中心实体的重试操作的配置,该配置包括重试策略、在执行管线的一阶段失败的情况下要执行的重试的阈值数量、在重试之前是否需要来自用户的确认或自动执行重试,等等。例如,重试策略可以是在重试之前暂停执行一段固定时间的固定回退策略。可以使用工件版本映射和主管线来配置其他重试策略。在实施方案中,管线生成器在聚合管线内引入调用重试阶段,以在先前管线阶段失败时触发重试策略。为数据中心实体指定的重试策略和配置参数适用于数据中心实体内的所有数据中心实体和服务,除非该值被嵌套的数据中心实体覆盖。
计算机架构
图14是示出根据实施方案的用作图1的环境100中所示的实体之一的典型计算机系统的功能视图的高级框图。示出了联接到芯片组1404的至少一个处理器1402。还联接到芯片组1404的是存储器1406、存储设备1408、键盘1410、图形适配器1412、定点设备1414和网络适配器1416。显示器1418联接到图形适配器1412。在一个实施方案中,由存储器控制器集线器1420和I/O控制器集线器1422提供芯片组1404的功能。在另一个实施方案中,存储器1406直接联接到处理器1402而不是芯片组1404。
存储设备1408是非暂时性计算机可读存储介质,如硬盘驱动器、光盘只读存储器(CD-ROM)、DVD或固态存储器设备。存储器1406保存由处理器1402使用的指令和数据。定点设备1414可以是鼠标、轨迹球或其他类型的定点设备,并且与键盘1410结合使用以将数据输入到计算机系统200中。图形适配器1412在显示器1418上显示图像和其他信息。网络适配器1416将计算机系统1400联接到网络。
如本领域中已知的,计算机1400可以具有与图14中所示的那些不同的和/或其他部件。此外,计算机1400可以缺少某些图示的部件。例如,充当多租户系统110的计算机系统1400可以缺少键盘1410和定点设备1414。此外,存储设备1408可以是本地的和/或远离计算机1400的(例如体现在存储区域网络(SAN)内)。
计算机1400适于执行用于提供本文描述的功能的计算机模块。如本文所使用的,术语“模块”指的是用于提供指定功能的计算机程序指令和其他逻辑。模块可以用硬件、软件和/或固件来实施。模块可以包括一个或多个过程,和/或仅由过程的一部分提供。模块通常存储在存储设备1408上,加载到存储器1406中,并由处理器1402执行。
系统环境的实体所使用的计算机系统1400的类型可以根据实施方案和实体所使用的处理能力而变化。例如,客户端设备可以是具有有限处理能力的移动电话、小型显示器1418,并且可以缺少定点设备1414。相比之下,多租户系统或云平台可以包括协同工作以提供本文描述的功能的多个刀片服务器。
其他注意事项
部件的特定命名、术语的大写、属性、数据结构或任何其他编程或结构方面不是强制性的或重要的,并且实施所描述的实施方案的机制可以具有不同的名称、格式或协议。此外,如所描述的,系统可以经由硬件和软件的组合来实施,或者完全以硬件元件来实施。此外,本文描述的各种系统部件之间的功能的特定划分仅仅是示例性的,而不是强制性的;由单个系统部件执行的功能可以替代地由多个部件执行,并且由多个部件执行的功能可以替代地由单个部件执行。
以上描述的一些部分根据对信息的操作的算法和符号表示来呈现特征。这些算法描述和表示是数据处理技术领域的技术人员用来最有效地将其工作的实质传达给本领域的其他技术人员的方式。虽然在功能上或逻辑上描述了这些操作,但被理解为由计算机程序来实施。此外,在不丧失通用性的情况下,将这些操作安排称为模块或功能名称有时也被证明是方便的。
除非从上面的讨论中明确地说明,否则应该理解,在整个描述中,利用诸如“处理”或“算”或“计算”或“确定”或“显示”等术语的讨论是指计算机系统或类似电子计算设备的动作和过程,其操纵和转换计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内表示为物理(电子)量的数据。
本文描述的某些实施方案包括以算法形式描述的处理步骤和指令。应当注意,实施方案的处理步骤和指令可以体现在软件、固件或硬件中,并且当体现在软件中时,可以下载以驻留在实时网络操作系统使用的不同平台上并从其进行操作。
所描述的实施方案还涉及用于执行本文的操作的装置。装置可以为所需目的而特别构造,或者其可以包括通用计算机,该通用计算机由存储在计算机可读介质上的计算机程序选择性地激活或重新配置,该计算机可读介质可以被计算机访问。这种计算机程序可以存储在非暂时性计算机可读存储介质中,例如但不限于包括软盘、光盘、CD-ROM、磁光盘的任何类型的盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、专用集成电路(ASIC)、或适用于存储电子指令的任何类型的介质,并且每种介质都耦合到计算机系统总线。此外,说明书中提到的计算机可以包括单个处理器,或者可以是采用多个处理器设计以提高计算能力的架构。
本文提出的算法和操作与任何具体计算机或其他装置没有本质的关系。各种通用系统也可以与根据本文教导的程序一起使用,或者可以证明构造更专用的装置来执行所需的方法步骤是方便的。对于本领域的技术人员来说,各种这些系统所需的结构以及等效的变体将是显而易见的。此外,本实施方案不参考任何具体编程语言来描述。应当理解,可以使用各种编程语言来实施如本文所描述的实施方案的教导。
实施方案非常适用于多种拓扑上的各种各样的计算机网络系统。在该领域中,大型网络的配置和管理包括存储设备和计算机,其通过网络(如互联网)通信地联接到不同计算机和存储设备。
最后,应当注意,说明书中使用的语言主要是为了可读性和指导性目的而选择的,并且可以不是为了描绘或限定本发明主题而选择的。因此,实施方案的公开旨在是说明性的,但不是限制性的。
Claims (57)
1.一种针对配置在云平台上的数据中心中执行的服务部署软件工件的计算机实施的方法,所述方法包括:
访问配置在目标云平台上的数据中心,所述数据中心基于独立于云平台的声明性规范生成,所述声明性规范包括数据中心实体的层级,其中每个数据中心实体包括(1)服务或(2)一个或多个其他数据中心实体中的一个或多个;
接收独立于云平台的工件版本映射,所述工件版本映射将所述数据中心的数据中心实体与以部署在所述数据中心实体上为目标的软件工件的版本相关联,每个软件工件包括与配置用于在一个或多个云平台上执行的服务相关联的可执行指令;
基于所述独立于云平台的工件版本映射,针对所述目标云平台生成特定于云平台的部署管线,所述特定于云平台的部署管线包括根据所述独立于云平台的工件版本映射,针对数据中心实体上的服务构建和部署适当版本的部署工件的指令;
将所述特定于云平台的部署管线传输至所述目标云平台以便执行。
2.根据权利要求1所述的计算机实施的方法,还包括:
生成独立于云平台的部署管线,所述独立于云平台的部署管线包括用于在所述数据中心上构建和部署软件工件的指令;和
结合所述独立于云平台的工件版本映射,编译所述独立于云平台的部署管线。
3.根据权利要求2所述的计算机实施的方法,其中所述独立于云平台的部署管线包括在一个或多个阶段之前的版本映射过滤器,其中主管线的执行使得基于所述版本映射过滤器针对每个数据中心实体选择软件工件的版本。
4.根据权利要求1所述的计算机实施的方法,还包括:
接收所述独立于云平台的声明性规范;和
编译所述独立于云平台的声明性规范,以生成特定于云平台的数据中心表示。
5.根据权利要求1所述的计算机实施的方法,其中编译所述独立于云平台的声明性规范包括:
从原始声明性规范生成所述数据中心的独立于云平台的详细元数据表示的第一版本;和
从修改的声明性规范生成所述数据中心的所述独立于云平台的详细元数据表示的第二版本。
6.根据权利要求5所述的计算机实施的方法,还包括:
基于所述独立于云平台的详细元数据表示的所述第一版本,针对所述目标云平台生成特定于平台的详细元数据表示;和
基于所述特定于平台的详细元数据表示,在所述目标云平台上部署所述数据中心。
7.根据权利要求1所述的计算机实施的方法,其中所述独立于云平台的声明性规范包括一个或多个数据中心实例的定义,每个数据中心实例包括一个或多个服务组,其中每个服务组包括服务集。
8.根据权利要求1所述的计算机实施的方法,其中生成的指令包括一个或多个管线,每个管线包括阶段的序列,每个阶段执行用于在数据中心实体上部署软件工件的一个或多个动作。
9.一种用于存储指令的非暂时性计算机可读存储介质,当由计算机处理器执行时,所述指令使得所述计算机处理器执行用于在云平台中配置数据中心的步骤,所述步骤包括:
访问配置在目标云平台上的数据中心,所述数据中心基于独立于云平台的声明性规范生成,所述声明性规范包括数据中心实体的层级,其中每个数据中心实体包括(1)服务和(2)一个或多个其他数据中心实体中的一个或多个;
接收独立于云平台的工件版本映射,所述工件版本映射将所述数据中心的数据中心实体与以部署在所述数据中心实体上为目标的软件工件的版本相关联,每个软件工件包括与配置用于在一个或多个云平台上执行的服务相关联的可执行指令;
基于所述独立于云平台的工件版本映射,针对所述目标云平台生成特定于云平台的部署管线,所述特定于云平台的部署管线包括根据所述独立于云平台的工件版本映射,针对数据中心实体上的服务构建和部署适当版本的部署工件的指令;
将所述特定于云平台的部署管线传输至所述目标云平台以便执行。
10.根据权利要求9所述的非暂时性计算机可读存储介质,其中所述指令还使得所述处理器执行包括如下的步骤:
生成独立于云平台的部署管线,所述独立于云平台的部署管线包括用于在所述数据中心上构建和部署软件工件的指令;和
结合所述独立于云平台的工件版本映射,编译所述独立于云平台的部署管线。
11.根据权利要求10所述的非暂时性计算机可读存储介质,其中所述独立于云平台的部署管线包括在一个或多个阶段之前的版本映射过滤器,其中主管线的执行使得基于所述版本映射过滤器针对每个数据中心实体选择软件工件的版本。
12.根据权利要求9所述的非暂时性计算机可读存储介质,其中所述指令还使得所述处理器执行包括如下的步骤:
接收所述独立于云平台的声明性规范;和
编译所述独立于云平台的声明性规范,以生成特定于云平台的数据中心表示。
13.根据权利要求9所述的非暂时性计算机可读存储介质,其中编译所述独立于云平台的声明性规范使得所述处理器执行包括如下的步骤:
从原始声明性规范生成所述数据中心的独立于云平台的详细元数据表示的第一版本;和
从修改的声明性规范生成所述数据中心的所述独立于云平台的详细元数据表示的第二版本。
14.根据权利要求13所述的非暂时性计算机可读存储介质,其中所述指令还使得所述处理器执行包括如下的步骤:
基于所述独立于云平台的详细元数据表示的所述第一版本,针对所述目标云平台生成特定于平台的详细元数据表示;和
基于所述特定于平台的详细元数据表示,在所述目标云平台上部署所述数据中心。
15.根据权利要求9所述的非暂时性计算机可读存储介质,其中所述独立于云平台的声明性规范包括一个或多个数据中心实例的定义,每个数据中心实例包括一个或多个服务组,其中每个服务组包括服务集。
16.根据权利要求9所述的非暂时性计算机可读存储介质,其中生成的指令包括一个或多个管线,每个管线包括阶段的序列,每个阶段执行用于在数据中心实体上部署软件工件的一个或多个动作。
17.一种计算机系统,包括:
计算机处理器;和
用于存储指令的非暂时性计算机可读存储介质,当由所述计算机处理器执行时,所述指令使得所述计算机处理器执行用于在云平台中配置数据中心的步骤,所述步骤包括:
访问配置在目标云平台上的数据中心,所述数据中心基于独立于云平台的声明性规范生成,所述声明性规范包括数据中心实体的层级,其中每个数据中心实体包括(1)服务和(2)一个或多个其他数据中心实体中的一个或多个;
接收独立于云平台的工件版本映射,所述工件版本映射将所述数据中心的数据中心实体与以部署在所述数据中心实体上为目标的软件工件的版本相关联,每个软件工件包括与配置用于在一个或多个云平台上执行的服务相关联的可执行指令;
基于所述独立于云平台的工件版本映射,针对所述目标云平台生成特定于云平台的部署管线,所述特定于云平台的部署管线包括根据所述独立于云平台的工件版本映射,针对数据中心实体上的服务构建和部署适当版本的部署工件的指令;
将所述特定于云平台的部署管线传输至所述目标云平台以便执行。
18.根据权利要求17所述的计算机系统,其中所述指令还使得所述处理器执行包括如下的步骤:
生成独立于云平台的部署管线,所述独立于云平台的部署管线包括用于在所述数据中心上构建和部署软件工件的指令;和
结合所述独立于云平台的工件版本映射,编译所述独立于云平台的部署管线。
19.根据权利要求18所述的计算机系统,其中所述独立于云平台的部署管线包括在一个或多个阶段之前的版本映射过滤器,其中主管线的执行使得基于所述版本映射过滤器针对每个数据中心实体选择软件工件的版本。
20.根据权利要求17所述的计算机系统,其中所述指令还使得所述处理器执行包括如下的步骤:
接收所述独立于云平台的声明性规范;和
编译所述独立于云平台的声明性规范,以生成特定于云平台的数据中心表示。
21.一种针对配置在云平台上的数据中心中执行的服务部署软件工件的计算机实施的方法,所述方法包括:
访问配置在目标云平台上的数据中心,所述数据中心基于独立于云平台的声明性规范生成,所述声明性规范包括数据中心实体的层级,其中每个数据中心实体包括(1)服务和(2)一个或多个其他数据中心实体中的一个或多个;
生成独立于云平台的主管线,所述主管线包括用于部署软件工件的阶段的序列,所述阶段的序列包括开发阶段、测试阶段和生产阶段中的一个或多个,其中所述序列中的至少一些阶段指定用于将所述软件工件从所述序列中的所述阶段推进至所述序列中的后续阶段的标准;
编译所述独立于云平台的主部署管线,以针对所述目标云平台生成依赖于云平台的详细部署管线,所述详细部署管线具有用于由根据所述独立于云平台的声明性规范定义的数据中心的布局而部署服务的指令;和
通过在所述目标云平台上执行依赖于云平台的详细管线,针对一个或多个服务部署软件工件。
22.根据权利要求21所述的计算机实施的方法,还包括:
接收用于定制所述独立于云平台的主部署管线的信息,其中针对定制的独立于云平台的主部署管线,生成用于所述目标云平台的所述依赖于平台的详细部署管线。
23.根据权利要求22所述的计算机实施的方法,其中用于定制所述独立于云平台的主部署管线的所述信息修改用于将所述软件工件从所述序列中的第一阶段推进至所述序列中的第二阶段的所述标准。
24.根据权利要求21所述的计算机实施的方法,其中特定阶段包括用于执行测试用例集的指令,并且其中用于推进所述软件工件的所述标准包括执行所述测试用例的成功率。
25.根据权利要求21所述的计算机实施的方法,还包括:
向用户提供对部署在所述目标云平台上的所述数据中心中运行的所述服务的访问。
26.根据权利要求21所述的计算机实施的方法,其中所述独立于云平台的主部署管线包括管线的层级,其具有与由所述独立于云平台的声明性规范指定的数据中心实体的所述层级相对应的层级结构。
27.根据权利要求26所述的计算机实施的方法,其中所述管线的层级包括数据中心实例管线,所述数据中心实例管线包括一个或多个服务组管线,其中服务组管线包括一个或多个服务管线。
28.根据权利要求21所述的计算机实施的方法,还包括:
接收所述独立于云平台的声明性规范;和
编译所述独立于云平台的声明性规范,以生成特定于云平台的数据中心表示。
29.根据权利要求21所述的计算机实施的方法,其中编译所述独立于云平台的声明性规范包括:
从原始声明性规范生成所述数据中心的独立于云平台的详细元数据表示的第一版本;和
从修改的声明性规范生成所述数据中心的所述独立于云平台的详细元数据表示的第二版本。
30.根据权利要求29所述的计算机实施的方法,还包括:
基于所述独立于云平台的详细元数据表示的所述第一版本,针对所述目标云平台生成特定于平台的详细元数据表示;和
基于所述特定于平台的详细元数据表示,在所述目标云平台上部署所述数据中心。
31.根据权利要求21所述的计算机实施的方法,其中所述独立于云平台的声明性规范包括一个或多个数据中心实例的定义,每个数据中心实例包括一个或多个服务组,其中每个服务组包括服务集。
32.一种用于存储指令的非暂时性计算机可读存储介质,当由计算机处理器执行时,所述指令使得所述计算机处理器执行针对配置在云平台上的数据中心中执行的服务部署软件工件的步骤,所述步骤包括:
访问配置在目标云平台上的数据中心,所述数据中心基于独立于云平台的声明性规范生成,所述声明性规范包括数据中心实体的层级,其中每个数据中心实体包括(1)服务和(2)一个或多个其他数据中心实体中的一个或多个;
生成独立于云平台的主管线,所述主管线包括用于部署软件工件的阶段的序列,所述阶段的序列包括开发阶段、测试阶段和生产阶段中的一个或多个,其中所述序列中的至少一些阶段指定用于将所述软件工件从所述序列的所述阶段推进至所述序列的后续阶段的标准;
编译所述独立于云平台的主部署管线,以针对所述目标云平台生成依赖于云平台的详细部署管线,所述详细部署管线具有用于由根据所述独立于云平台的声明性规范定义的所述数据中心的布局而部署服务的指令;和
通过在所述目标云平台上执行所述依赖于云平台的详细管线,针对一个或多个服务部署软件工件。
33.根据权利要求32所述的非暂时性计算机可读存储介质,其中所述指令还使得所述处理器执行包括如下的步骤:
接收用于定制所述独立于云平台的主部署管线的信息,其中针对定制的所述独立于云平台的主部署管线,生成用于所述目标云平台的所述依赖于平台的详细部署管线。
34.根据权利要求33所述的非暂时性计算机可读存储介质,其中用于定制所述独立于云平台的主部署管线的所述信息修改用于将所述软件工件从所述序列的第一阶段推进至所述序列的第二阶段的所述标准。
35.根据权利要求32所述的非暂时性计算机可读存储介质,其中用于定制所述独立于云平台的主部署管线的信息修改用于将所述软件工件从所述序列的第一阶段推进至所述序列的第二阶段的所述标准。
36.根据权利要求32所述的非暂时性计算机可读存储介质,其中所述独立于云平台的主部署管线包括管线的层级,其具有与由所述独立于云平台的声明性规范指定的数据中心实体的所述层级相对应的层级结构。
37.根据权利要求36所述的非暂时性计算机可读存储介质,其中所述管线的层级包括数据中心实例管线,所述数据中心实例管线包括一个或多个服务组管线,其中服务组管线包括一个或多个服务管线。
38.根据权利要求32所述的非暂时性计算机可读存储介质,其中所述指令还使得所述处理器执行包括如下的步骤:
接收所述独立于云平台的声明性规范;和
编译所述独立于云平台的声明性规范,以生成特定于云平台的数据中心表示,其中编译所述独立于云平台的声明性规范使得所述处理器执行包括如下的步骤:
从原始声明性规范生成所述数据中心的独立于云平台的详细元数据表示的第一版本;和
从修改的声明性规范生成所述数据中心的所述独立于云平台的详细元数据表示的第二版本。
39.根据权利要求32所述的非暂时性计算机可读存储介质,其中所述独立于云平台的声明性规范包括一个或多个数据中心实例的定义,每个数据中心实例包括一个或多个服务组,其中每个服务组包括服务集。
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.根据权利要求21或22所述的计算机实施的方法,其中用于定制所述独立于云平台的主部署管线的信息修改用于将所述软件工件从所述序列的第一阶段推进至所述序列的第二阶段的所述标准。
48.根据权利要求21、22和47中任一项所述的计算机实施的方法,其中特定阶段包括用于执行测试用例集的指令,并且其中用于推进所述软件工件的所述标准包括执行所述测试用例的成功率。
49.根据权利要求21、22、47和48中任一项所述的计算机实施的方法,还包括:
向用户提供对部署在所述目标云平台上的所述数据中心中运行的所述服务的访问。
50.根据权利要求21、22和47-49中任一项所述的计算机实施的方法,其中所述独立于云平台的主部署管线包括管线的层级,其具有与由所述独立于云平台的声明性规范所指定的数据中心实体的所述层级相对应的层级结构。
51.根据权利要求21、22和47-50中任一项所述的计算机实施的方法,其中所述管线的层级包括数据中心实例管线,所述数据中心实例管线包括一个或多个服务组管线,其中服务组管线包括一个或多个服务管线。
52.根据权利要求21、22和47-51中任一项所述的计算机实施的方法,还包括:
接收所述独立于云平台的声明性规范;和
编译所述独立于云平台的声明性规范,以生成特定于云平台的数据中心表示。
53.根据权利要求21、22和47-52中任一项所述的计算机实施的方法,其中编译所述独立于云平台的声明性规范包括:
从原始声明性规范生成所述数据中心的独立于云平台的详细元数据表示的第一版本;和
从修改的声明性规范生成所述数据中心的所述独立于云平台的详细元数据表示的第二版本。
54.根据权利要求21、22和47-53中任一项所述的计算机实施的方法,还包括:
基于所述独立于云平台的详细元数据表示的第一版本,针对所述目标云平台生成特定于平台的详细元数据表示;和
基于所述特定于平台的详细元数据表示,在所述目标云平台上部署所述数据中心。
55.根据权利要求21、22和47-54中任一项所述的计算机实施的方法,其中所述独立于云平台的声明性规范包括一个或多个数据中心实例的定义,每个数据中心实例包括一个或多个服务组,其中每个服务组包括服务集。
56.一种用于存储指令的非暂时性计算机可读存储介质,当由计算机处理器执行时,所述指令使得所述计算机处理器执行上述方法权利要求中任一项所述的步骤。
57.一种计算机系统,包括:
计算机处理器;和
用于存储指令的非暂时性计算机可读存储介质,当由所述计算机处理器执行时,所述指令使得所述计算机处理器执行上述方法权利要求中任一项所述的步骤。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/110,224 | 2020-12-02 | ||
US17/112,974 | 2020-12-04 | ||
US17/112,974 US11392361B2 (en) | 2020-12-04 | 2020-12-04 | Software release orchestration for continuous delivery of features in a cloud platform based data center |
PCT/US2021/015822 WO2022119588A1 (en) | 2020-12-02 | 2021-01-29 | Deployment of software releases on datacenters configured in cloud platforms |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116783581A true CN116783581A (zh) | 2023-09-19 |
Family
ID=81848984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180091179.4A Pending CN116783581A (zh) | 2020-12-02 | 2021-01-29 | 在云平台中配置的数据中心上部署软件发布 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11392361B2 (zh) |
CN (1) | CN116783581A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11797351B2 (en) * | 2021-04-28 | 2023-10-24 | Salesforce, Inc. | High-availability continuous delivery of datacenter builds on cloud computing platforms |
US11733987B2 (en) * | 2021-10-01 | 2023-08-22 | Salesforce, Inc. | Executing shared pipelines for continuous delivery of services in cloud platforms |
US11941005B2 (en) * | 2022-04-05 | 2024-03-26 | Sap Se | Data artifact instances faciliating flexible data access |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8683430B2 (en) * | 2011-01-07 | 2014-03-25 | International Business Machines Corporation | Synchronizing development code and deployed executable versioning within distributed systems |
US9419856B1 (en) | 2014-12-01 | 2016-08-16 | Amazon Technologies, Inc. | Network device configuration deployment pipeline |
US9760366B2 (en) | 2015-12-21 | 2017-09-12 | Amazon Technologies, Inc. | Maintaining deployment pipelines for a production computing service using live pipeline templates |
US10334058B2 (en) * | 2015-12-21 | 2019-06-25 | Amazon Technologies, Inc. | Matching and enforcing deployment pipeline configurations with live pipeline templates |
US10409622B2 (en) * | 2016-08-10 | 2019-09-10 | Bank Of America Corporation | Orchestration pipeline for providing and operating segmented computing resources |
US20190332230A1 (en) * | 2016-12-15 | 2019-10-31 | Nutanix, Inc. | User interface view generation |
US11023215B2 (en) * | 2016-12-21 | 2021-06-01 | Aon Global Operations Se, Singapore Branch | Methods, systems, and portal for accelerating aspects of data analytics application development and deployment |
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 |
US10977005B2 (en) * | 2017-06-14 | 2021-04-13 | International Business Machines Corporation | Congnitive development of DevOps pipeline |
US10318285B1 (en) * | 2017-08-16 | 2019-06-11 | Amazon Technologies, Inc. | Deployment of infrastructure in pipelines |
US10776246B2 (en) * | 2017-08-18 | 2020-09-15 | Vmware, Inc. | Presenting a temporal topology graph of a computing environment at a graphical user interface |
US20190129712A1 (en) * | 2017-10-27 | 2019-05-02 | Intuit Inc. | Methods, systems, and computer program products for an integrated platform for continuous deployment of software application delivery models |
US10671368B2 (en) * | 2017-11-03 | 2020-06-02 | International Business Machines Corporation | Automatic creation of delivery pipelines |
US20200125344A1 (en) * | 2018-10-19 | 2020-04-23 | Oracle International Corporation | Persistent context for reusable pipeline components |
US11733990B2 (en) | 2019-08-27 | 2023-08-22 | Salesforce, Inc. | Generating software artifacts from a conceptual data model |
US11403094B2 (en) * | 2020-01-27 | 2022-08-02 | Capital One Services, Llc | Software pipeline configuration |
US11281476B2 (en) * | 2020-01-30 | 2022-03-22 | Hewlett Packard Enterprise Development Lp | Plugin framework to support zero touch management of heterogeneous infrastructure elements across distributed data centers |
US11093227B1 (en) | 2020-06-30 | 2021-08-17 | Td Ameritrade Ip Company, Inc. | Computer-automated software release and deployment architecture |
-
2020
- 2020-12-04 US US17/112,974 patent/US11392361B2/en active Active
-
2021
- 2021-01-29 CN CN202180091179.4A patent/CN116783581A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11392361B2 (en) | 2022-07-19 |
US20220179629A1 (en) | 2022-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11561784B2 (en) | Versioning of pipeline templates for continuous delivery of services on datacenters configured in cloud platforms | |
US11487546B2 (en) | Change management of services deployed on datacenters configured in cloud platforms | |
US11573786B1 (en) | Deployment strategies for continuous delivery of software artifacts in cloud platforms | |
US11356508B1 (en) | Retry strategies for handling failures during continuous delivery of software artifacts in a cloud platform | |
US11349958B1 (en) | Deployment of software releases on datacenters configured in cloud platforms | |
CN116783581A (zh) | 在云平台中配置的数据中心上部署软件发布 | |
US11388231B1 (en) | Multi-substrate fault tolerant continuous delivery of datacenter builds on cloud computing platforms | |
US11392366B1 (en) | Optimized compilation of pipelines for continuous delivery of services on datacenters configured in cloud platforms | |
US11733987B2 (en) | Executing shared pipelines for continuous delivery of services in cloud platforms | |
US20230035486A1 (en) | Managing execution of continuous delivery pipelines for a cloud platform based data center | |
US11677620B2 (en) | Declarative specification based override mechanism for customizing data centers deployed on cloud platforms | |
US11797351B2 (en) | High-availability continuous delivery of datacenter builds on cloud computing platforms | |
US11403145B1 (en) | Enforcing system configuration freeze of services deployed via continuous delivery on datacenters configured in cloud platforms | |
US11848829B2 (en) | Modifying a data center based on cloud computing platform using declarative language and compiler | |
US11570048B2 (en) | Declarative language and compiler for provisioning and deploying data centers on cloud platforms | |
US20220147399A1 (en) | Declarative language and compiler for provisioning and deploying data centers on cloud platforms | |
US11868750B2 (en) | Orchestration of datacenter creation on a cloud platform | |
JP2023551963A (ja) | クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ | |
WO2022154811A1 (en) | System configuration freeze and change management of services deployed via continuous delivery on datacenters configured in cloud platforms | |
US11240107B1 (en) | Validation and governance of a cloud computing platform based datacenter | |
US20240036929A1 (en) | Orchestration of operations on a cloud platform based on multiple version maps of services | |
US20240220222A1 (en) | Orchestration of datacenter creation on a cloud platform | |
WO2022098382A1 (en) | Declaratively provisioning resources on cloud platforms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40100729 Country of ref document: HK |