[go: up one dir, main page]

HK40104187B - System configuration freeze and change management of services deployed via continuous delivery on datacenters configured in cloud platforms - Google Patents

System configuration freeze and change management of services deployed via continuous delivery on datacenters configured in cloud platforms Download PDF

Info

Publication number
HK40104187B
HK40104187B HK62024091680.4A HK62024091680A HK40104187B HK 40104187 B HK40104187 B HK 40104187B HK 62024091680 A HK62024091680 A HK 62024091680A HK 40104187 B HK40104187 B HK 40104187B
Authority
HK
Hong Kong
Prior art keywords
data center
pipeline
service
cloud platform
services
Prior art date
Application number
HK62024091680.4A
Other languages
Chinese (zh)
Other versions
HK40104187A (en
Inventor
J·维加拉
A·K·帕坦
Original Assignee
硕动力公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 硕动力公司 filed Critical 硕动力公司
Publication of HK40104187A publication Critical patent/HK40104187A/en
Publication of HK40104187B publication Critical patent/HK40104187B/en

Links

Description

经由配置在云平台中的数据中心上的持续交付部署的服务的系统配置冻结和变更管理System configuration freeze and change management for services deployed via continuous delivery in data centers configured in a cloud platform

背景技术Background Technology

技术领域Technical Field

公开文本总体上涉及云计算平台中软件发布的管理,以及经由在云计算平台中配置的数据中心上的持续交付来强制执行服务的系统配置冻结,以及在云计算平台中配置的数据中心上部署的软件工件的变化的管理。The publicly available text generally addresses the management of software releases in cloud computing platforms, the enforcement of system configuration freezes for services via continuous delivery on data centers configured in cloud computing platforms, and the management of changes to software artifacts deployed on data centers configured in cloud computing platforms.

相关技术描述Related technical descriptions

组织越来越多地在云平台(或云计算平台)上响应,如AWS(亚马逊网络服务)、谷歌云平台、微软AZURE等,以满足其基础设施需求。云平台通过互联网向组织提供服务器、存储、数据库、网络、软件等。组织正在将其服务转移到云平台,以提供计算资源的可扩展性和弹性。Organizations are increasingly turning to cloud platforms (or cloud computing platforms), such as AWS (Amazon Web Services), Google Cloud Platform, and Microsoft Azure, to meet their infrastructure needs. Cloud platforms provide organizations with servers, storage, databases, networks, software, and more via the internet. Organizations are migrating their services to cloud platforms to provide the scalability and elasticity of computing resources.

组织使用可以在云平台上管理和部署应用程序的持续交付平台来维护云平台上的云基础设施。这种持续交付平台允许组织简化软件部署过程,并管理云平台上的应用程序、防火墙、集群、服务器、负载均衡器和其他计算基础设施。持续交付平台使开发人员更容易对影响系统上运行的服务的软件工件进行改变,并部署更新的软件工件。然而,有时不希望对系统上运行的服务进行任何改变。提供系统的组织可能倾向于在这样的时间段内施加系统冻结(也称为特征冻结或计算中止)。例如,如果系统期望特别高的流量。修改与服务相关联的软件工件可能会降低系统的稳定性,因为作为改变的结果,可能会遇到诸如软件缺陷或软件错误之类的不可预见的情况。Organizations use continuous delivery platforms (CDPs) that can manage and deploy applications on cloud platforms to maintain cloud infrastructure. These CDPs allow organizations to streamline software deployment processes and manage applications, firewalls, clusters, servers, load balancers, and other computing infrastructure on the cloud platform. CDPs make it easier for developers to make changes to software artifacts that affect services running on the system and to deploy updated software artifacts. However, sometimes it is undesirable to make any changes to the services running on the system. Organizations providing the system may tend to impose system freezes (also known as feature freezes or compute interruptions) for such periods. For example, if the system expects particularly high traffic. Modifying software artifacts associated with services can reduce system stability because unforeseen circumstances such as software defects or bugs may occur as a result of the changes.

诸如多租户系统的大型系统可以管理代表多租户系统的租户的大量组织的服务,并且可以与多个云平台交互。多租户系统可能必须在多个云平台之间维护数千个租户。此外,每个云平台支持的软件、语言和特征可能不同。因此,跟踪对部署配置在云平台上的数据中心上的服务所做的改变是一个繁琐并且容易出错的过程。结果,即使存在对在线系统中部署的服务的计算中止,开发者也很有可能改变与该服务相关联的软件工件,从而降低系统的稳定性。Large systems, such as multi-tenant systems, can manage services from numerous organizations representing tenants within the multi-tenant system and can interact with multiple cloud platforms. A multi-tenant system may need to maintain thousands of tenants across multiple cloud platforms. Furthermore, each cloud platform may support different software, languages, and features. Therefore, tracking changes made to services deployed and configured on data centers within cloud platforms is a tedious and error-prone process. Consequently, even if there is a computational outage affecting a service deployed in an online system, developers are likely to modify the software artifacts associated with that service, thus reducing system stability.

此外,几个用户和用户团队可能涉及与服务相关联的软件发布。因此,跟踪对部署配置在云平台上的数据中心上的服务所做的改变变得很复杂,因为可能会对源代码以及系统配置进行频繁的改变。跟踪对部署在大型系统中的服务的改变是很麻烦的,因为相关信息要么难以访问,要么不可用。这导致支持和跟踪云平台上配置的数据中心上的软件发布和对软件发布的改变的多租户系统的高维护成本。Furthermore, several users and user teams may be involved in software releases associated with the service. Therefore, tracking changes made to services deployed and configured on cloud platforms in data centers becomes complex because frequent changes to source code and system configurations are possible. Tracking changes to services deployed on large systems is cumbersome because relevant information is either difficult to access or unavailable. This leads to high maintenance costs for multi-tenant systems that support and track software releases and changes to software releases configured on cloud platforms in data centers.

附图说明Attached Figure Description

图1是示出根据实施方案配置在云平台上数据中心的多租户系统的系统环境的框图。Figure 1 is a block diagram illustrating the system environment of a multi-tenant system configured in a data center on a cloud platform according to the implementation scheme.

图2A是示出根据实施方案的部署模块210的系统架构的框图。Figure 2A is a block diagram illustrating the system architecture of deployment module 210 according to the implementation scheme.

图2B示出根据实施方案的用于在数据中心中部署软件工件的整体过程。Figure 2B illustrates the overall process for deploying software artifacts in a data center according to the implementation plan.

图3是示出根据一个实施方案的软件发布管理模块的架构的框图。Figure 3 is a block diagram illustrating the architecture of a software release management module according to one implementation scheme.

图4示出根据一个实施方案的数据中心声明性规范的实施例。Figure 4 illustrates an example of a data center declarative specification according to one implementation plan.

图5示出根据一个实施方案的基于声明性规范在云平台上创建的示例性数据中心。Figure 5 illustrates an exemplary data center created on a cloud platform based on a declarative specification according to one implementation scheme.

图6是示出根据一个实施方案的基于声明性规范在云平台上生成数据中心的框图。Figure 6 is a block diagram illustrating the generation of a data center on a cloud platform based on a declarative specification according to one implementation scheme.

图7示出根据实施方案的用于生成用于配置在云平台上的数据中心上部署软件工件的流水线的整体过程。Figure 7 illustrates the overall process, according to the implementation scheme, for generating a pipeline for configuring software artifacts for deployment on a data center on a cloud platform.

图8示出根据实施方案的示例性主流水线。Figure 8 illustrates an exemplary mainstream waterline according to an implementation scheme.

图9示出根据实施方案的云平台上的主流水线的环境的阶段执行的整体过程。Figure 9 illustrates the overall process of phased execution of the mainstream waterline environment on the cloud platform according to the implementation plan.

图10示出根据实施方案的示例性主流水线。Figure 10 illustrates an exemplary mainstream waterline according to an implementation scheme.

图11示出根据实施方案的系统配置冻结模块的系统架构。Figure 11 shows the system architecture of the system configuration freeze module according to the implementation scheme.

图12示出根据实施方案的用于强制执行系统配置冻结的示例性流水线。Figure 12 illustrates an exemplary pipeline for forcibly enforcing system configuration freeze according to an implementation scheme.

图13示出根据实施方案的用于对部署在云平台中的数据中心上的服务的系统配置进行改变的过程。Figure 13 illustrates the process for changing the system configuration of services deployed in a data center on a cloud platform, according to the implementation scheme.

图14示出根据实施方案的用于执行配置在云平台上的数据中心的数据中心实体的系统配置冻结的整体过程。Figure 14 illustrates the overall process for freezing the system configuration of a data center entity configured on a cloud platform, according to the implementation scheme.

图15示出根据实施方案的变更处理模块的系统架构。Figure 15 shows the system architecture of the change processing module according to the implementation plan.

图16示出根据实施方案的用于管理改变的示例性主流水线。Figure 16 illustrates an exemplary mainstream waterline for managing changes according to an implementation scheme.

图17示出根据实施方案的用于配置在云平台上的数据中心上部署的服务的变更管理的整体过程。Figure 17 illustrates the overall process for change management of services deployed on a cloud platform in a data center, according to the implementation plan.

图18示出根据实施方案的由主流水线的变更管理阶段执行的过程。Figure 18 illustrates the process executed during the change management phase of the main waterline according to the implementation plan.

图19示出根据实施方案的用于管理用于收集与改变相关的事件信息的队列的过程。Figure 19 illustrates the process for managing a queue for collecting and changing event information according to the implementation scheme.

图20是示出根据一个实施方案的在图1的环境中使用的典型计算机系统的功能视图的框图。Figure 20 is a block diagram showing a functional view of a typical computer system used in the environment of Figure 1 according to one embodiment.

这些图仅出于示出的目的描绘了各种实施方案。本领域的技术人员将容易地从以下讨论中认识到,在不偏离本文描述的实施方案的原理的情况下,可以采用本文所示的结构和方法的替代实施方案。These figures depict various embodiments for illustrative purposes only. Those skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods shown herein can be employed without departing from the principles of the embodiments described herein.

图使用相似的参考数字来标识相似的元件。参考数字后面的字母,如“115a”,指示该文本具体指的是具有该特定参考数字的元件。文本中没有后面的字母的参考数字,如“115”,指的是图中带有该参考数字的任何或所有元件。Figures use similar reference numerals to identify similar elements. A letter following the reference numeral, such as "115a," indicates that the text specifically refers to the element with that particular reference numeral. Reference numerals without a following letter, such as "115," refer to any or all elements in the figure that carry that reference numeral.

具体实施方式Detailed Implementation

云平台经由互联网等公共网络按需向计算系统提供计算资源,如存储、计算资源、应用程序等。云平台允许企业最大限度地降低建立计算基础设施的前期成本,还允许企业以更少的维护开销更快地启动和运行应用程序。云平台还允许企业调整计算资源,以适应快速波动和不可预测的需求。企业可以使用云平台创建数据中心,供企业的用户使用。然而,在每个云平台上实现数据中心需要云平台技术方面的专业知识。Cloud platforms provide computing resources, such as storage, computing resources, and applications, to computing systems on demand via public networks like the internet. Cloud platforms allow businesses to minimize the upfront costs of building computing infrastructure and enable them to launch and run applications faster with less maintenance overhead. They also allow businesses to adjust computing resources to adapt to rapidly fluctuating and unpredictable demands. Businesses can use cloud platforms to create data centers for their users. However, implementing a data center on each cloud platform requires expertise in the cloud platform technology.

实施方案使用独立于云平台的云平台基础设施语言,在云平台中创建数据中心。该系统接收数据中心的独立于云平台的声明性规范。声明性规范描述了数据中心的结构,并且可能不提供指定如何创建数据中心的指令。独立于云平台的声明性规范配置为在多个云平台中的任意云平台上生成数据中心,并且使用云平台基础设施语言进行指定。该系统接收标识用于创建数据中心的目标云平台的信息,并编译独立于云平台的声明性规范,以生成特定于云平台的数据中心表示。该系统发送特定于云平台的数据中心表示和用于在目标云平台上执行的指令集。目标云平台使用平台特定数据中心表示来执行配置数据中心的指令。该系统为用户提供对云平台配置的数据中心计算资源的访问。The implementation scheme uses a cloud platform infrastructure language (LPIL) to create data centers within a cloud platform. The system receives a cloud platform-independent declarative specification for the data center. This declarative specification describes the structure of the data center and may not provide instructions on how to create it. The cloud platform-independent declarative specification is configured to generate data centers on any cloud platform across multiple cloud platforms and is specified using the LPIL. The system receives information identifying the target cloud platform used to create the data center and compiles the cloud platform-independent declarative specification to generate a cloud platform-specific data center representation. The system sends the cloud platform-specific data center representation and a set of instructions for execution on the target cloud platform. The target cloud platform uses the platform-specific data center representation to execute instructions for configuring the data center. The system provides users with access to the data center computing resources configured on the cloud platform.

该系统执行与配置在云平台上的数据中心上的软件发布相关的操作,例如,部署软件发布、提供资源、执行软件发布的回滚等。该系统访问配置在目标云平台上的数据中心。数据中心是基于独立于云平台的声明性规范生成的,该规范包括数据中心实体的层次结构。每个数据中心实体包括(1)服务或(2)一个或多个其他数据中心实体中的一个或多个。该系统生成独立于云平台的主流水线,该主流水线包括:(1)用于部署软件工件的阶段序列,例如,开发阶段、测试阶段和生产阶段,以及(2)用于将软件工件从一个阶段推进至阶段的序列的后续阶段的标准。该系统根据声明性规范定义的数据中心布局,编译独立于云平台的主流水线,以生成用于目标云平台的依赖于云平台的详细流水线,以及用于执行与服务相关的操作的指令。该系统在目标云平台上执行依赖于云平台的详细流水线,例如,在数据中心的数据中心实体上部署软件发布。The system performs operations related to software releases configured on data centers on a cloud platform, such as deploying software releases, providing resources, and performing software release rollbacks. The system accesses data centers configured on the target cloud platform. Data centers are generated based on a cloud platform-independent declarative specification that includes a hierarchy of data center entities. Each data center entity includes (1) a service or (2) one or more other data center entities. The system generates a cloud platform-independent mainline pipeline that includes: (1) a sequence of phases for deploying software artifacts, such as development, testing, and production phases, and (2) standards for subsequent phases in a sequence of phases to advance software artifacts from one phase to another. Based on the data center layout defined by the declarative specification, the system compiles the cloud platform-independent mainline pipeline to generate a cloud platform-dependent detailed pipeline for the target cloud platform, as well as instructions for performing service-related operations. The system executes the cloud platform-dependent detailed pipeline on the target cloud platform, such as deploying software releases on data center entities within the data center.

该系统允许用户为配置在云平台上的数据中心中运行的服务指定一段时间区间的系统冻结(也称为计算中止)。在系统冻结期间,禁止或暂停对系统的改变。在系统冻结期间可以防止的改变包括对软件工件的升级、对系统使用的资源配置的改变(例如,基础设施资源,如负载均衡器、数据库、服务器、防火墙、网络资源等)、数据中心配置改变、对系统使用的库和其他系统工件的修改、对应用程序的修改等。尽管在线系统可以使用持续交付平台来允许开发者修改软件工件中使用的源代码,但是本文公开的实施方案允许组织在特定时间区间期间搁置任何这样的改变。This system allows users to specify a period of system freeze (also known as compute suspension) for services configured to run in a data center on a cloud platform. During the system freeze, changes to the system are prohibited or suspended. Changes that can be prevented during a system freeze include upgrades to software artifacts, changes to the configuration of resources used by the system (e.g., infrastructure resources such as load balancers, databases, servers, firewalls, network resources, etc.), changes to data center configuration, modifications to libraries and other system artifacts used by the system, and modifications to applications. While online systems can use continuous delivery platforms to allow developers to modify the source code used in software artifacts, the implementation disclosed herein allows organizations to postpone any such changes for a specific time interval.

例如,经由在线系统提供服务的组织可以确定在高流量时段期间,在线系统上运行的服务不应该受到干扰。因此,实施方案允许系统被冻结,使得系统继续运行并且不能对系统进行任何改变。这降低了遇到系统停机的可能性。For example, organizations providing services through online systems can determine that services running on those systems should not be disrupted during periods of high traffic. Therefore, the implementation plan allows the system to be frozen, ensuring it continues to operate without any changes being made. This reduces the likelihood of system downtime.

作为另一个实施例,系统可能有一些问题,需要团队来分析系统以确定问题的原因。然而,在分析系统以确定特定问题的原因的时间段期间,系统管理员可能更喜欢冻结系统的服务,使得在监测和调试系统时不能对软件工件进行改变。这有助于隔离在监测和调试系统时对系统的修改的问题,该修改使得难以确定问题是由服务的原始软件引起的,还是由调试问题时对软件所做的任何改变引起的。As another example, the system may have some issues that require team analysis to determine the cause. However, during the period of system analysis to determine the cause of a specific problem, the system administrator may prefer to freeze the system's services, preventing changes to software artifacts while the system is being monitored and debugged. This helps isolate problems arising from modifications made to the system during monitoring and debugging, making it difficult to determine whether the problem is caused by the original software of the service or by any changes made to the software during debugging.

作为另一个实施例,系统内可能有多个子系统在运行。所公开的实施方案允许以互斥的方式修改子系统,使得一次只修改一个子系统(或小的子系统集)。可以通过为特定子系统部署软件工件来一次修改该子系统。系统管理员可能倾向于对剩余的子系统施加暂停,从而一次只修改一个子系统。一旦部署和测试了子系统,就取消了暂停,以确保在允许其他子系统继续对它们相应的软件工件进行改变之前,子系统可靠地运行。实施方案允许对系统施加这种暂停,从而选择性地防止对部署在系统中的软件工件的修改。As another embodiment, multiple subsystems may be running within the system. The disclosed implementation allows for mutually exclusive modification of subsystems, such that only one subsystem (or a small set of subsystems) is modified at a time. A subsystem can be modified at a time by deploying software artifacts for that specific subsystem. A system administrator may prefer to impose a pause on the remaining subsystems, thus modifying only one subsystem at a time. Once the subsystem has been deployed and tested, the pause is lifted to ensure that the subsystem operates reliably before allowing other subsystems to continue making changes to their respective software artifacts. The implementation allows for such a pause to be imposed on the system, thereby selectively preventing modifications to the software artifacts deployed within the system.

云平台在本文中也被称为基底。该系统可以表示多租户系统,但不限于多租户系统,并且可以是任何在线系统或具有对云平台的网络访问的任何计算系统。The cloud platform is also referred to as the infrastructure in this document. This system can refer to a multi-tenant system, but is not limited to a multi-tenant system, and can be any online system or any computing system with network access to the cloud platform.

整体系统环境Overall system environment

图1是示出根据实施方案配置在云平台上数据中心的多租户系统的系统环境的框图。系统环境100包括多租户系统110、一个或多个云平台120和一个或多个客户端设备105。在其他实施方案中,系统环境100可以包括更多或更少的部件。Figure 1 is a block diagram illustrating a system environment for a multi-tenant system configured in a data center on a cloud platform according to an implementation scheme. System environment 100 includes a multi-tenant system 110, one or more cloud platforms 120, and one or more client devices 105. In other implementations, system environment 100 may include more or fewer components.

多租户系统110存储一个或多个租户115的信息。每个租户可以与代表多租户系统110的客户的企业相关联。每个租户可以具有经由客户端设备105与多租户系统交互的多个用户。Multitenant system 110 stores information about one or more tenants 115. Each tenant can be associated with an enterprise that represents a customer of multitenant system 110. Each tenant can have multiple users interacting with the multitenant system via client device 105.

云平台也可以被称为云计算平台或公共云环境。租户可以使用云平台基础设施语言来提供在目标云平台120上创建的数据中心的声明性规范,并使用数据中心来执行操作,例如,提供资源、执行软件发布等。租户115可以在云平台120上创建一个或多个数据中心。数据中心表示计算资源集,该计算资源集包括用户(例如,与租户相关联的用户)可以使用的服务器、应用程序、存储、内存等。每个租户可以向租户的用户提供不同的功能。因此,每个租户可以在为该租户配置的数据中心上执行不同的服务。多租户系统可以为每个租户实施不同的软件发布和部署机制。租户可进一步获得或开发包括用于在数据中心中执行的各种服务的指令的软件版本。实施方案允许租户为在数据中心的不同计算资源上运行的不同服务部署软件发布的特定版本。A cloud platform can also be referred to as a cloud computing platform or a public cloud environment. Tenants can use the cloud platform infrastructure language to provide declarative specifications for data centers created on the target cloud platform 120 and use the data centers to perform operations, such as providing resources, performing software releases, etc. Tenant 115 can create one or more data centers on cloud platform 120. A data center represents a set of computing resources, including servers, applications, storage, memory, etc., that can be used by users (e.g., users associated with a tenant). Each tenant can provide different functionalities to its users. Therefore, each tenant can perform different services on the data centers configured for that tenant. Multi-tenant systems can implement different software release and deployment mechanisms for each tenant. Tenants can further obtain or develop software versions including instructions for various services performed in the data centers. Implementation schemes allow tenants to deploy specific versions of software releases for different services running on different computing resources in the data centers.

数据中心的计算资源是安全的,并且未被授权访问它们的用户可能无法访问它们。例如,针对租户115a的用户创建的数据中心125a可能不会被租户115b的用户访问,除非明确地授权访问。类似地,针对租户115b的用户创建的数据中心125b可能不会被租户115a的用户访问,除非明确地授权访问。此外,只有在根据数据中心的声明性规范向计算系统授权访问时,由数据中心提供的服务才可以由数据中心外部的计算系统访问。The computing resources in a data center are secure, and users without authorization to access them may not be able to access them. For example, data center 125a created for tenant 115a may not be accessible to tenant 115b unless access is explicitly authorized. Similarly, data center 125b created for tenant 115b may not be accessible to tenant 115a unless access is explicitly authorized. Furthermore, services provided by the data center can only be accessed by computing systems outside the data center if access is authorized to the computing system according to the data center's declarative specifications.

对于多租户系统110,多个租户的数据可以存储在相同的物理数据库中。然而,数据库配置为使得一个租户的数据与其他租户的数据在逻辑上保持分离,使得一个租户不能访问另一个租户的数据,除非明确共享这种数据。可以将他们的数据存储在与其他客户的数据共享的表中,对于租户来说是透明的。数据库表可以存储多个租户的行。因此,在多租户系统中,系统的硬件和软件的各种元件可以由一个或多个租户共享。例如,多租户系统110可以执行同时处理对多个租户的请求的应用服务器。然而,多租户系统强制执行租户级数据隔离,以确保一个租户的作业不会访问其他租户的数据。In a multi-tenant system 110, data from multiple tenants can be stored in the same physical database. However, the database is configured to logically separate one tenant's data from that of other tenants, preventing one tenant from accessing another's data unless explicitly shared. Their data can be stored in tables shared with other clients' data, transparently to the tenants. Database tables can store rows from multiple tenants. Therefore, in a multi-tenant system, various hardware and software components of the system can be shared by one or more tenants. For example, multi-tenant system 110 can execute application servers that simultaneously process requests from multiple tenants. However, multi-tenant systems enforce tenant-level data isolation to ensure that one tenant's job does not access other tenants' data.

云平台的实施例包括AWS(亚马逊网络服务)、谷歌云平台或微软AZURE。云平台120提供可以由租户115或云平台120外部的任何计算系统按需使用的计算基础设施服务。云平台提供的计算基础设施服务的实施例包括服务器、存储、数据库、网络、安全、负载平衡、软件、分析、智能和其他基础设施服务功能。租户115可以使用这些基础设施服务以可扩展和安全的方式构建、部署和管理应用。Implementations of the cloud platform include AWS (Amazon Web Services), Google Cloud Platform, or Microsoft Azure. Cloud platform 120 provides computing infrastructure services that can be used on demand by tenant 115 or any computing system outside of cloud platform 120. Implementations of the computing infrastructure services provided by the cloud platform include server, storage, database, networking, security, load balancing, software, analytics, intelligence, and other infrastructure service functions. Tenant 115 can use these infrastructure services to build, deploy, and manage applications in a scalable and secure manner.

多租户系统110可以包括租户数据存储,其存储多租户存储的各种租户的数据。租户数据存储可以将不同租户的数据存储在单独的物理结构中,例如,单独的数据库表或单独的数据库。可替代地,租户数据存储可以将多个租户的数据存储在共享的结构中。例如,所有租户的用户账户可以共享相同的数据库表。然而,多租户系统存储附加信息以在逻辑上分离不同租户的数据。Multitenant system 110 may include a tenant data store that stores data for various tenants within the multitenant storage. The tenant data store may store data for different tenants in separate physical structures, such as separate database tables or separate databases. Alternatively, the tenant data store may store data for multiple tenants in a shared structure. For example, user accounts for all tenants may share the same database table. However, the multitenant system stores additional information to logically separate the data for different tenants.

图1中所示的每个部件表示一个或多个计算设备。例如,计算设备可以是执行MicrosoftTMWindowsTM兼容操作系统(OS)、AppleTMOS X和/或Linux发行版的常规计算机系统。计算设备也可以是具有计算机功能的客户端设备,例如个人数字助理(PDA)、移动电话、视频游戏系统等。每个计算设备存储软件模块,其存储指令。Each component shown in Figure 1 represents one or more computing devices. For example, a computing device can be a conventional computer system running a Microsoft Windows compatible operating system (OS), Apple OS X, and/or Linux distribution. A computing device can also be a client device with computer functionality, such as a personal digital assistant (PDA), mobile phone, video game system, etc. Each computing device stores software modules, which store instructions.

系统环境100的各种部件之间的交互通常经由网络(图1中未示出)来执行。在一个实施方案中,网络使用标准通信技术和/或协议。在另一个实施方案中,实体可以使用自定义和/或专用数据通信技术来代替或补充上述技术。Interactions between various components of system environment 100 are typically performed via a network (not shown in Figure 1). In one embodiment, the network uses standard communication technologies and/or protocols. In another embodiment, entities may use custom and/or proprietary data communication technologies to replace or supplement the aforementioned technologies.

尽管本文公开的技术是在多租户系统的上下文中描述的,但是可以使用可能不是多租户系统的其他系统来实施这些技术。例如,单个组织或企业使用的在线系统可以使用本文公开的技术在一个或多个云平台120上创建一个或多个数据中心。Although the techniques disclosed herein are described in the context of multi-tenant systems, these techniques can be implemented using other systems that may not be multi-tenant systems. For example, an online system used by a single organization or enterprise can use the techniques disclosed herein to create one or more data centers on one or more cloud platforms 120.

系统架构System Architecture

多租户系统110包括用于在云平台上部署软件工件的部署模块。部署模块可以执行与软件发布相关联的各种操作,例如,在云平台上提供资源、部署软件发布、执行在数据中心实体上安装的软件工件的回滚,等。图2是示出根据实施方案的部署模块210的系统架构的框图。部署模块210包括数据中心生成模块220和软件发布管理模块230。其他实施方案可以具有不同于这里描述的部件和/或其他部件,并且功能可以以不同的方式分布在部件之间。Multitenant system 110 includes a deployment module for deploying software artifacts on a cloud platform. The deployment module can perform various operations associated with software releases, such as providing resources on the cloud platform, deploying software releases, performing rollbacks of software artifacts installed on data center entities, etc. Figure 2 is a block diagram illustrating the system architecture of deployment module 210 according to an implementation scheme. Deployment module 210 includes a data center generation module 220 and a software release management module 230. Other implementations may have components and/or other components different from those described herein, and functionality may be distributed among the components in different ways.

数据中心生成模块220包括用于在云平台上创建数据中心的指令。软件发布管理模块230包括用于部署在由数据中心生成模块220创建的数据中心上运行的各种服务或应用的软件发布或软件工件的指令。The data center creation module 220 includes instructions for creating a data center on a cloud platform. The software release management module 230 includes instructions for deploying software releases or software artifacts that run on the data center created by the data center creation module 220.

数据中心生成模块220从用户(例如,租户的用户)接收数据中心的独立于云平台的声明性规范。数据中心的独立于云平台的声明性规范指定了数据中心的各种实体。在一个实施方案中,数据中心的独立于云平台的声明性规范包括数据中心实体的层次结构组织,其中每个数据中心实体可以包括一个或多个服务、一个或多个其他数据中心实体或两者的组合。图4更详细地描述了各种类型的数据中心实体。数据中心生成模块220接收平台独立声明性规范和目标云平台作为输入,并为目标云平台生成特定于云平台的元数据表示。数据中心生成模块220在目标云平台上部署生成的特定于云平台的元数据表示,以根据声明性规范在目标云平台上创建数据中心。Data center generation module 220 receives a cloud platform-independent declarative specification of the data center from a user (e.g., a tenant's user). The cloud platform-independent declarative specification of the data center specifies various entities within the data center. In one implementation, the cloud platform-independent declarative specification of the data center includes a hierarchical organization of data center entities, where each data center entity may include one or more services, one or more other data center entities, or a combination of both. Figure 4 illustrates the various types of data center entities in more detail. Data center generation module 220 receives a platform-independent declarative specification and a target cloud platform as input and generates a cloud platform-specific metadata representation for the target cloud platform. Data center generation module 220 deploys the generated cloud platform-specific metadata representation on the target cloud platform to create the data center on the target cloud platform according to the declarative specification.

软件发布管理模块230接收(1)工件版本映射225和(2)主流水线235作为输入。工件版本映射225标识以部署在特定数据中心实体上为目标的软件发布或部署工件的特定版本。工件版本映射225将数据中心实体映射到以部署在数据中心实体上为目标的软件发布版本。主流水线235包括用于与数据中心上的软件发布相关的操作的指令,例如,部署服务、销毁服务、提供服务资源、销毁服务资源等。The software release management module 230 receives (1) an artifact version map 225 and (2) a mainline 235 as input. The artifact version map 225 identifies a specific version of a software release or deployment artifact targeted for deployment on a specific data center entity. The artifact version map 225 maps the data center entity to a software release version targeted for deployment on the data center entity. The mainline 235 includes instructions for operations related to software releases on the data center, such as deploying services, destroying services, providing service resources, destroying service resources, etc.

主流水线235可以包括用于执行与不同环境(如开发环境、测试环境、金丝雀环境和生产环境)的软件发布相关的操作的指令,以及用于确定何时将软件发布从一个环境推进至另一个环境的指令。例如,如果软件发布在开发环境中的部署执行超过阈值数量的测试用例,则该软件发布被推进至测试环境以进行进一步的测试,例如,系统级和集成测试。如果测试环境中的软件发布通过了测试覆盖的阈值,则软件发布被推进至金丝雀环境,在该环境中,软件发布在试用的基础上被提供给一小部分用户。如果金丝雀环境中的软件发布在阈值时间内没有错误地执行,则软件发布被推进至生产环境,在生产环境中,该软件发布被提供给所有用户。Mainstream pipeline 235 may include instructions for performing operations related to software releases in different environments (such as development, testing, canary, and production environments), and instructions for determining when to advance a software release from one environment to another. For example, if a software release is deployed in the development environment and executes more than a threshold number of test cases, the release is advanced to the testing environment for further testing, such as system-level and integration testing. If the software release in the testing environment passes a test coverage threshold, it is advanced to the canary environment, where it is offered to a small group of users on a trial basis. If the software release in the canary environment executes without errors within a threshold time, it is advanced to the production environment, where it is offered to all users.

软件发布管理模块230编译输入工件版本映射225和主流水线235,以生成传输到目标云平台的特定于云平台的详细流水线255。特定于云平台的详细流水线255包括用于在数据中心实体上部署软件发布或适当版本的部署工件的指令,如工件版本映射225中所指定的。软件发布管理模块230可以接收对其中一个输入的修改。例如,用户可以修改输入工件版本映射225并提供相同的主流水线235。因此,使用相同的主流水线,但在数据中心实体上部署不同的软件发布。软件发布管理模块230重新编译输入,以生成新的特定于云平台的详细流水线255,该流水线根据新的工件版本映射225部署软件发布的版本。The software release management module 230 compiles the input artifact version map 225 and mainline 235 to generate a cloud-platform-specific detailed pipeline 255 for delivery to the target cloud platform. The cloud-platform-specific detailed pipeline 255 includes instructions for deploying the software release or appropriate version of the deployment artifact on the data center entity, as specified in the artifact version map 225. The software release management module 230 can accept modifications to one of the inputs. For example, a user can modify the input artifact version map 225 and provide the same mainline 235. Thus, the same mainline is used, but a different software release is deployed on the data center entity. The software release management module 230 recompiles the input to generate a new cloud-platform-specific detailed pipeline 255 that deploys the version of the software release according to the new artifact version map 225.

工件版本映射也可以被称为部署清单、版本清单、软件发布映射或软件工件版本映射。主流水线也可以被称为主部署流水线或主编排流水线。Artifact version mapping can also be referred to as deployment manifest, version manifest, software release mapping, or software artifact version mapping. The main pipeline can also be referred to as the main deployment pipeline or the main programming pipeline.

图2B示出根据实施方案的用于在数据中心中部署软件工件的整体过程。图2B示出包括各种数据中心实体的数据中心265的布局。如图2B中所示,工件版本映射225标识目标为在数据中心265的不同数据中心实体275上发布的软件的不同版本。主流水线表示通过数据中心的各种环境的部署工件流。软件发布管理模块230将主流水线235中的信息与工件版本映射225组合,以确定特定于云平台的详细流水线255,该流水线根据工件版本映射225在数据中心实体上映射适当版本的软件工件。Figure 2B illustrates the overall process for deploying software artifacts in a data center according to the implementation scheme. Figure 2B shows the layout of data center 265, which includes various data center entities. As shown in Figure 2B, artifact version mapping 225 identifies different versions of software targeted for release on different data center entities 275 of data center 265. Mainstream pipelines represent the flow of deployment artifacts through various environments within the data center. Software release management module 230 combines information from mainstream pipeline 235 with artifact version mapping 225 to determine a cloud platform-specific detailed pipeline 255 that maps the appropriate version of the software artifact to the data center entity based on artifact version mapping 225.

图3是示出根据一个实施方案的软件发布管理模块230的架构的框图。软件发布管理模块230包括解析模块310、流水线生成器模块320、工件版本映射存储330、流水线存储340、系统配置冻结模块350、变更处理模块355和流水线执行引擎360。其他实施方案可以包括比图3中本文所指示的模块更多、更少或不同的模块。Figure 3 is a block diagram illustrating the architecture of a software release management module 230 according to one embodiment. The software release management module 230 includes a parsing module 310, a pipeline generator module 320, an artifact version mapping store 330, a pipeline store 340, a system configuration freeze module 350, a change processing module 355, and a pipeline execution engine 360. Other embodiments may include more, fewer, or different modules than those indicated herein in Figure 3.

可以以分布式方式在不同系统上运行图3中所示的各种模块。例如,流水线生成器模块320可以在多租户系统的计算系统上执行,而流水线执行引擎360可以在部署数据中心实体和服务的云平台的计算系统上执行。The various modules shown in Figure 3 can be run in a distributed manner on different systems. For example, the pipeline generator module 320 can be executed on a computing system of a multi-tenant system, while the pipeline execution engine 360 can be executed on a computing system of a cloud platform that deploys data center entities and services.

解析模块310解析各种类型的用户输入,包括数据中心的声明性规范、工件版本映射225和主流水线235。解析模块310生成所处理的输入的数据结构和元数据表示,并将所生成的数据结构和元数据表示提供给软件发布管理模块230的其他模块以供进一步处理。The parsing module 310 parses various types of user input, including declarative specifications for data centers, artifact version mappings 225, and mainstream waterlines 235. The parsing module 310 generates data structures and metadata representations of the processed inputs and provides these data structures and metadata representations to other modules of the software release management module 230 for further processing.

元数据存储340存储由软件发布管理模块230生成的数据中心的各种转换的元数据表示。如果在数据中心的当前版本中遇到问题,则可以使用转换的元数据表示执行回滚到先前版本。转换的元数据表示可以在转换过程的各个阶段用于验证、审计、治理等。Metadata store 340 stores metadata representations of various transformations in the data center generated by software release management module 230. If an issue is encountered in the current version of the data center, a rollback to a previous version can be performed using the metadata representation of the transformation. The metadata representation of the transformation can be used for verification, auditing, governance, etc., at various stages of the transformation process.

流水线生成器模块320结合作为输入接收的工件版本映射来处理主流水线,以生成用于目标云平台的详细流水线。流水线包括阶段,该阶段包括用于提供服务或部署应用的指令,用于根据工件版本映射为云平台上的各种服务的部署软件发布的版本。The pipeline generator module 320 processes the main pipeline by combining the artifact version mapping received as input to generate a detailed pipeline for the target cloud platform. The pipeline includes stages that contain instructions for providing services or deploying applications, based on the artifact version mapping to the deployment software release versions for various services on the cloud platform.

工件版本映射存储330存储从用户接收的工件版本映射,并且流水线存储340存储主流水线以及由流水线生成器模块320生成的流水线。The workpiece version mapping store 330 stores the workpiece version mapping received from the user, and the pipeline store 340 stores the main pipeline and the pipeline generated by the pipeline generator module 320.

系统配置冻结模块350接收并处理对配置在云平台上的数据中心的数据中心实体中运行的服务执行系统配置冻结的请求。接收到的请求指定配置在云平台上的一个或多个服务或数据中心实体,以及请求对服务或数据中心实体执行系统配置冻结的时间区间。结合图11提供了系统配置冻结模块350的进一步细节。本文描述了由系统配置冻结模块350执行的各种过程。The system configuration freeze module 350 receives and processes requests to perform system configuration freeze on services running in data center entities configured on a cloud platform. The received request specifies one or more services or data center entities configured on the cloud platform, and the time interval for requesting system configuration freeze on the services or data center entities. Further details of the system configuration freeze module 350 are provided in conjunction with Figure 11. This document describes the various processes performed by the system configuration freeze module 350.

变更处理模块355识别对安装在数据中心中的服务进行改变的请求,并跟踪描述改变的信息。变更处理模块350与变更管理系统交互,并记录实施服务中的改变的流水线的执行细节。记录的详细信息可以用于审计,例如,确定为什么要对数据中心的服务配置进行某些改变。The change processing module 355 identifies requests to change services installed in the data center and tracks information describing the changes. The change processing module 350 interacts with the change management system and records the execution details of the pipeline for implementing changes in services. The recorded details can be used for auditing, for example, to determine why certain changes are needed to the service configuration in the data center.

流水线执行引擎360执行由流水线生成器模块320生成的详细流水线。在一个实施方案中,流水线执行引擎360是诸如SPINNAKER的系统,其执行用于发布/部署软件的流水线。流水线执行引擎360解析流水线并在目标云计算平台上执行流水线的每个阶段。流水线执行引擎360可以在云平台的一个或多个计算系统上执行。The pipeline execution engine 360 executes the detailed pipeline generated by the pipeline generator module 320. In one implementation, the pipeline execution engine 360 is a system such as SPINNAKER that executes pipelines for releasing/deploying software. The pipeline execution engine 360 parses the pipeline and executes each stage of the pipeline on the target cloud computing platform. The pipeline execution engine 360 can execute on one or more computing systems on the cloud platform.

基于云平台的数据中心生成Data center generation based on cloud platform

图4示出根据一个实施方案的数据中心的声明性规范的实施例。声明性规范410包括多个数据中心实体。数据中心实体是数据中心实体类型的实例,并且每个数据中心实体类型可以有多个实例。数据中心实体的实施例包括数据中心、服务组、服务、团队、环境和模式。Figure 4 illustrates an embodiment of a declarative specification for a data center according to one implementation. The declarative specification 410 includes multiple data center entities. A data center entity is an instance of a data center entity type, and each data center entity type can have multiple instances. Embodiments of data center entities include data centers, service groups, services, teams, environments, and patterns.

声明性规范410包括各种类型的数据中心实体的定义,包括服务组、服务、团队、环境和模式。声明性规范包括数据中心的一个或多个实例。以下是对各种类型的数据中心实体及其实施例的描述。这些实施例是说明性的,显示了数据中心实体的一些属性。其他实施方案可以包括不同的属性,并且具有相同功能的属性可以被赋予与本文所指示的名称不同的名称。在一个实施方案中,使用符合预定义模式的分层对象(例如,JSON(Javascript对象符号))来指定声明性规范。Declarative specification 410 includes definitions for various types of data center entities, including service groups, services, teams, environments, and patterns. A declarative specification includes one or more instances of a data center. The following is a description of the various types of data center entities and their embodiments. These embodiments are illustrative and show some attributes of the data center entity. Other implementations may include different attributes, and attributes with the same functionality may be given names different from those indicated herein. In one implementation, a hierarchical object conforming to a predefined pattern (e.g., JSON (Javascript object notation)) is used to specify the declarative specification.

根据一个实施方案,服务组520表示由一个或多个计算系统提供的可以独立地构建和交付能力、特征和服务集。服务组也可以被称为逻辑服务组、功能单元或有界上下文。服务组520还可以被视为由一个或多个计算系统提供的内聚技术用例功能集的服务集。服务组520强制执行安全边界。服务组520定义修改的范围。因此,对实体的任何修改,例如由服务组520内的一个或多个计算系统提供的能力、特征或服务,可以根据需要或适合于服务组内的实体而传播,但是不传播到驻留在服务组520的有界定义之外的实体。数据中心可以包括多个服务组520。服务组定义指定属性,包括名称、描述、标识符、模式版本和服务集实例。服务组的实施例是区块链服务组,其包括用于提供区块链功能的服务集。类似地,安全服务组提供安全特征。用户界面服务组提供特定用户界面特征的功能。共享文档服务组提供跨用户共享文档的功能。类似地,可以有几个其他服务组。According to one implementation, service group 520 represents a set of capabilities, features, and services that can be independently built and delivered by one or more computing systems. A service group may also be referred to as a logical service group, functional unit, or bounded context. Service group 520 can also be viewed as a set of services containing a cohesive set of technical use case functions provided by one or more computing systems. Service group 520 enforces security boundaries. Service group 520 defines the scope of modifications. Therefore, any modifications to an entity, such as capabilities, features, or services provided by one or more computing systems within service group 520, may propagate as needed or suitable for the entities within the service group, but not to entities residing outside the bounded definition of service group 520. A data center may include multiple service groups 520. Service group definitions specify attributes, including name, description, identifier, schema version, and service set instance. An example of a service group is a blockchain service group, which includes a set of services for providing blockchain functionality. Similarly, a security service group provides security features. A user interface service group provides functionality for specific user interface features. A shared document service group provides functionality for sharing documents across users. Similarly, there may be several other service groups.

服务组支持规范的可重用性,以便对开发数据中心感兴趣的租户或用户拥有他们可以随时使用的服务组库。围绕服务组的服务的边界基于安全问题和网络问题等。服务组与用于执行与服务组的交互的协议相关联。在一个实施方案中,服务组提供API(应用程序编程接口)和实施这些API的服务的集合。此外,服务组是独立于基底的。服务组为服务组内的服务提供爆炸半径范围,使得服务组内的任何服务故障的影响仅限于服务组内的服务,而在服务组外的影响最小。Service groups support specification reusability, providing tenants or users interested in developing data centers with a library of service groups they can readily use. The boundaries of services surrounding a service group are based on security and network issues, among others. A service group is associated with protocols used to perform interactions with it. In one implementation, a service group provides an API (Application Programming Interface) and a collection of services that implement those APIs. Furthermore, service groups are independent of the underlying infrastructure. Service groups provide an blast radius for services within the group, ensuring that the impact of any service failure within the group is limited to the services within the group, with minimal impact outside the group.

以下是服务组的规范的实施例。服务组指定表示服务组元数据的各种属性,并且包括服务组内的服务集。可能存在为服务组指定的其他类型的元数据,本文没有指示。The following is an example of a service group specification. A service group specifies various attributes representing the service group's metadata and includes the set of services within the service group. Other types of metadata may exist for service groups, which are not indicated herein.

如上面的实施例所示,服务组可以指定集群的集。集群表示计算节点的集,例如,服务器集、虚拟机集或容器集(如KUBERNETES容器)。物理服务器可以运行多个容器,其中每个容器都有自己的文件系统、CPU、内存、处理空间等共享。As shown in the examples above, service groups can specify a set of clusters. A cluster represents a set of compute nodes, such as a set of servers, a set of virtual machines, or a set of containers (such as Kubernetes containers). Physical servers can run multiple containers, each with its own shared file system, CPU, memory, processing space, etc.

服务组指定服务集。服务组可以为服务指定集群,使得部署在云平台上的数据中心运行计算节点的集群,并且如果包括在声明性规范中,则基于指定的映射将服务映射到集群。例如,在上面显示的服务组实施例中,服务实例“服务实例0002”被指定在集群实例集群1上运行。A service group specifies a set of services. A service group can specify a cluster for a service, enabling a cluster of compute nodes deployed in a data center on a cloud platform, and if included in a declarative specification, mapping the service to the cluster based on the specified mapping. For example, in the service group embodiment shown above, the service instance "Service Instance 0002" is specified to run on cluster instance cluster 1.

服务组可以指定安全组,每个安全组指定允许彼此交互的服务集。安全组外的服务需要通过额外的认证才能与安全组内的服务通信。可替代地,安全组内的服务使用一种协议彼此交互,而安全组外的服务使用不同的协议,这需要增强认证才能与安全组内的服务交互。因此,安全组指定了确定服务如何相互交互的策略。安全策略可以指定安全策略适用的一个或多个环境。例如,安全策略“策略1”可以应用于特定环境env1(例如,生产环境),并且另一安全策略“策略2”可以应用于另一环境env2(例如,开发环境)。可以为服务组类型或特定服务类型指定安全策略。Service groups can specify security groups, each specifying a set of services that are allowed to interact with each other. Services outside a security group require additional authentication to communicate with services within the security group. Alternatively, services within a security group may use one protocol to interact with each other, while services outside the security group may use a different protocol, requiring enhanced authentication to interact with services within the security group. Therefore, security groups specify the policies that determine how services interact with each other. Security policies can specify one or more environments to which a security policy applies. For example, security policy "Policy 1" may apply to a specific environment env1 (e.g., a production environment), and another security policy "Policy 2" may apply to another environment env2 (e.g., a development environment). Security policies can be specified for service group types or specific service types.

在一个实施方案中,安全策略基于各种属性指定用于过滤服务组的表达式,使得安全策略适用于过滤的服务组的集合。例如,安全策略可以指定IP(互联网协议)地址的列表,该IP地址是由过滤的集合标识的服务组的集合的白名单,并且因此允许这些计算系统访问服务组或服务组内的特定服务集。In one implementation, the security policy specifies expressions for filtering service groups based on various attributes, making the security policy applicable to the set of filtered service groups. For example, the security policy may specify a list of IP (Internet Protocol) addresses that are whitelisted as a set of service groups identified by the filtered set, and thus allow these computing systems to access the service group or a specific set of services within the service group.

在一个实施方案中,安全策略可以为服务组指定源服务集和目的地服务集。特定服务的源服务指定允许与此特定服务连接的安全组之外的服务。特定服务的目标服务指定此特定服务需要连接到的安全组之外的服务。在供应和部署期间,数据中心生成模块为云平台生成指令,该指令使用特定于云平台的特征和网络功能来实施特定网络策略,使得网络策略实施声明性规范中指定的安全策略。In one implementation, a security policy can specify a source service set and a destination service set for a service group. The source service of a specific service specifies services outside the security group that are allowed to connect to this specific service. The destination service of a specific service specifies services outside the security group that this specific service needs to connect to. During provisioning and deployment, the data center generation module generates instructions for the cloud platform that use cloud platform-specific features and network functions to enforce specific network policies, causing the network policies to implement the security policies specified in the declarative specification.

被称为小区的数据中心实体表示以垂直方式相互交互的服务集,并且可以通过小区的附加实例或副本(即,服务集的副本)进行扩展。创建小区的多个实例允许系统扩展彼此交互的服务集。数据中心实例可以包括一个或多个小区。每个小区可以包括一个或多个服务。数据中心可以包括服务组或小区的实例。A data center entity, referred to as a cell, represents a set of services that interact with each other vertically and can be scaled by additional instances or replicas of the cell (i.e., replicas of the service set). Creating multiple instances of a cell allows the system to scale the set of services that interact with each other. A data center instance can include one or more cells. Each cell can include one or more services. A data center can include instances of service groups or cells.

服务定义指定服务类型的元数据,例如数据库服务、负载均衡器服务等。元数据描述服务的各种属性,包括服务的名称、服务的描述、服务的文档的位置、与服务相关联的任何子服务、服务的所有者、与服务相关联的团队、指定该服务在构建时所依赖的其他服务的服务的构建依赖关系、指定当该特定服务启动时应该运行的其他服务的服务的启动依赖关系、授权客户端、与服务相关联的DNS(域名服务器)名称、服务状态、对服务的支持级别等。服务定义指定侦听端口属性,该属性指定服务可以侦听不同通信协议的端口,例如,服务可以侦听UDP协议的端口p1和TCP协议的端口p2。数据中心内的其他服务可以经由服务指定的端口与服务交互。Service definitions specify metadata for the service type, such as database services, load balancer services, etc. Metadata describes various attributes of the service, including the service name, service description, location of the service documentation, any sub-services associated with the service, the service owner, the team associated with the service, service build dependencies specifying other services the service depends on during construction, service startup dependencies specifying other services that should run when the specific service starts, authorized clients, the DNS (Domain Name Server) name associated with the service, service status, and the level of support for the service. Service definitions specify the listening port attribute, which specifies the ports the service can listen on for different communication protocols; for example, the service can listen on port p1 for UDP and port p2 for TCP. Other services within the data center can interact with the service via the ports specified by the service.

服务定义指定属性出站访问,该属性指定目标端点,例如,指定服务需要访问指定外部URL的外部URL(统一资源定位器)。在部署期间,数据中心生成模块确保云平台实施访问策略,从而为该服务类型的实例提供对外部URL的请求访问。The service definition specifies outbound access attributes, which specify the target endpoint. For example, it specifies that the service needs to access a specific external URL (Uniform Resource Locator). During deployment, the datacenter generation module ensures that the cloud platform enforces access policies to provide requests for external URLs for instances of this service type.

出站访问规范可以识别出站访问适用的服务的一个或多个环境类型。例如,端点集S1的出站访问可以应用于特定环境env1(例如,生产环境),并且端点集S2的出站访问可以应用于另一环境env2(例如,开发环境)。Outbound access specifications can identify one or more environment types for which outbound access applies. For example, outbound access for endpoint set S1 can be applied to a specific environment env1 (e.g., production environment), and outbound access for endpoint set S2 can be applied to another environment env2 (e.g., development environment).

以下是服务定义的实施例。The following is an example of a service definition.

{{

"服务_定义":["Service_Definition":[

{{

"授权_客户端":[],"Authorization_Client":[],

"建立_依赖关系":[],"Establish dependency relationship":[],

"描述":"服务的描述","Description":"Description of the service",

"dns_名称":"dns1","dns_name":"dns1",

"文件":"URL","File":"URL",

"名称":"名称1","Name":"Name1",

团队定义450包括团队成员姓名和团队的其他属性,例如姓名、电子邮件、通信信道等。以下是团队定义的实施例。服务可以与一个或多个负责对该服务进行修改的团队相关联。因此,对该服务所做的任何修改都得到团队的批准。被部署到云平台之后,服务可以与负责维护服务的团队相关联。团队可以与服务组相关联,并且相应地与该服务组的所有服务相关联。例如,团队批准对服务组的任何更改,例如,作为服务组一部分的服务。团队可以与数据中心相关联,并且相应地与数据中心内的所有服务组相关联。在数据中心级指定的团队关联为数据中心内的所有服务组提供默认团队,并进一步为服务组内的所有服务提供默认团队。Team definition 450 includes team member names and other team attributes such as names, email addresses, communication channels, etc. The following is an example of a team definition. A service can be associated with one or more teams responsible for modifying that service. Therefore, any modifications made to the service are approved by the team. After being deployed to a cloud platform, a service can be associated with a team responsible for maintaining the service. A team can be associated with a service group, and correspondingly with all services within that service group. For example, a team approves any changes to a service group, such as services that are part of that service group. A team can be associated with a data center, and correspondingly with all service groups within that data center. Team associations specified at the data center level provide a default team for all service groups within the data center, and further provide a default team for all services within that service group.

根据一个实施方案,在功能级指定的团队关联覆盖在数据中心级提供的团队关联。类似地,在服务级指定的团队关联覆盖在服务组级或数据中心级指定的团队关联可能已经提供的默认值。团队可以决定如何为与团队相关联的数据中心实体采取某些动作。团队关联还确定云平台上为编译器生成云平台的数据中心的最终元数据表示以及为在云平台上供应和部署数据中心而创建的账户的数量。数据中心生成模块210在云平台中创建一个或多个用户账户,并向团队成员提供对用户账户的访问。因此,允许团队成员执行与和团队相关联的数据中心实体相关联的特定动作,例如,在部署数据中心实体时对数据中心实体进行或批准结构改变或维护数据中心实体,包括可以为数据中心实体识别的调试和测试问题。According to one implementation, team associations specified at the function level override team associations provided at the data center level. Similarly, team associations specified at the service level override default values that may already be provided for team associations specified at the service group level or data center level. Teams can decide how to take certain actions for data center entities associated with the team. Team associations also determine the final metadata representation of the data center on the cloud platform for the compiler to generate for the cloud platform, as well as the number of accounts created for provisioning and deploying the data center on the cloud platform. The data center generation module 210 creates one or more user accounts in the cloud platform and provides team members with access to these user accounts. This allows team members to perform specific actions associated with the data center entities associated with the team, such as making or approving structural changes to or maintaining the data center entity during deployment, including debugging and testing issues that can be identified for the data center entity.

传统技术在整个设计过程中将同一团队与数据中心相关联,从而导致组织结构对数据中心或服务组的设计产生影响。实施方案将团队定义与定义数据中心实体的构造分离,从而减少团队对数据中心实体的设计和架构的影响。Traditional techniques associate the same team with the data center throughout the design process, resulting in organizational structure influencing the design of the data center or service group. The implementation plan separates team definition from defining the construction of the data center entity, thereby reducing the team's influence on the design and architecture of the data center entity.

环境定义460指定由数据中心表示的系统环境的类型,例如,开发环境、试运行环境、测试环境或生产环境。概要定义470指代指定特定数据中心实体定义的语法的概要。概要定义470用于验证各种数据中心实体定义。数据中心生成模块基于环境确定特定于云平台的元数据表示中数据中心的安全策略。例如,特定的安全策略集可以适用于环境env1,并且不同的安全策略集可以适用于环境env2。例如,与开发环境相比,安全策略在生产环境中提供了更多受限制的访问。安全策略可以指定为特定目的允许安全令牌存在的时间长度。例如,在开发环境中可以允许长访问令牌(例如,一周长的访问令牌),但是在生产环境中使用的访问令牌的使用寿命要小得多(例如,几个小时)。访问令牌可以允许用户或服务访问特定的云平台资源。Environment definition 460 specifies the type of system environment represented by the data center, such as a development environment, pilot environment, test environment, or production environment. Summary definition 470 refers to a summary of the syntax specifying a particular data center entity definition. Summary definition 470 is used to validate various data center entity definitions. The data center generation module determines the security policy of the data center in the cloud platform-specific metadata representation based on the environment. For example, a specific set of security policies may apply to environment env1, and different sets of security policies may apply to environment env2. For example, security policies in a production environment may provide more restricted access compared to a development environment. Security policies can specify the length of time security tokens are allowed to exist for a specific purpose. For example, long access tokens (e.g., access tokens lasting one week) may be allowed in a development environment, but access tokens used in a production environment have a much shorter lifespan (e.g., several hours). Access tokens can allow users or services to access specific cloud platform resources.

数据中心定义420指定数据中心实例的属性和部件。声明性规范可以指定多个数据中心实例。数据中心定义420指定包括名称、描述、环境类型、服务组集、团队、数据中心的域名服务器等的属性。数据中心定义可以指定概要定义,并且根据指定的概要定义来验证从数据中心定义生成的任何元数据表示。数据中心包括核心服务和功能集,使其他服务能够在数据中心内发挥作用。数据中心的实例部署在特定的云平台中,并且可以与特定的环境类型相关联,例如,开发、测试、试运行、生产等。Datacenter definition 420 specifies the attributes and components of a datacenter instance. A declarative specification can specify multiple datacenter instances. Datacenter definition 420 specifies attributes including name, description, environment type, service set, team, datacenter name server, etc. A datacenter definition can specify a summary definition and validate any metadata representation generated from the datacenter definition against the specified summary definition. A datacenter includes core services and a set of features that enable other services to function within the datacenter. Datacenter instances are deployed on a specific cloud platform and can be associated with specific environment types, such as development, testing, pilot, and production.

以下是数据中心实例的定义。数据中心实例定义包括数据中心实例中包括的服务组的列表和其他属性,包括数据中心的环境、数据中心标识符、名称、表示地理区域的区域、与数据中心相关联的一个或多个团队以及模式版本。The following is the definition of a data center instance. A data center instance definition includes a list of service groups included in the data center instance and other attributes, including the data center environment, data center identifier, name, region representing the geographic area, one or more teams associated with the data center, and mode version.

图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。服务组可以包括相同服务类型的服务的多个实例。Figure 5 illustrates some exemplary data centers created on a cloud platform according to a declarative specification based on one implementation scheme. Data centers 510 can be created based on declarative specifications processed by the data center generation module 210. As shown in Figure 5, multiple data centers can be configured within the cloud platform 120. Each data center 510 can correspond to tenant 115 of the multi-tenant system 110. Tenant 115 can create one or more data centers 510. Alternatively, data centers 510 can be created by any computing system. Each data center includes one or more service groups. For example, data center 510a includes service groups 520a and 520b, and data center 510b includes service group 520c. A data center can include multiple instances of a specific type of service group. Each service group includes a set of services. For example, service group 520a includes services 530a and 530b, service group 520b includes services 530a, 530b, and 530c, and service group 520c includes services 530e, 530f, and 530g. A service group can include multiple instances of services of the same service type.

数据中心生成模块220使用以下步骤基于声明性规范在云平台上创建数据中心。数据中心生成模块210接收数据中心的独立于云平台的声明性规范。独立于云平台的声明性规范可以用于多租户系统的租户或用于任何其他计算系统,例如在线系统。独立于云平台的声明性规范是使用云平台基础设施语言指定的。数据中心的独立于云平台的声明性规范配置为在多个云平台中的任意云平台上生成数据中心。Data center generation module 220 uses the following steps to create a data center on a cloud platform based on a declarative specification. Data center generation module 210 receives a cloud platform-independent declarative specification for the data center. The cloud platform-independent declarative specification can be used by tenants in a multi-tenant system or by any other computing system, such as an online system. The cloud platform-independent declarative specification is specified using the cloud platform infrastructure language. The cloud platform-independent declarative specification of the data center is configured to generate a data center on any cloud platform among multiple cloud platforms.

数据中心生成模块210接收标识用于基于独立于云平台的声明性规范创建数据中心的目标云平台的信息。目标云平台可以是多个云平台中的任意云平台,例如,AWS、AZURE、GCP等。数据中心生成模块210进一步接收与目标云平台连接的信息,例如,用于创建与目标云平台的连接的凭证。云平台也可以被称为云计算平台。The data center generation module 210 receives information identifying the target cloud platform used to create a data center based on a declarative specification independent of the cloud platform. The target cloud platform can be any of several cloud platforms, such as AWS, Azure, GCP, etc. The data center generation module 210 further receives information about the connection to the target cloud platform, such as credentials for creating a connection to the target cloud platform. The cloud platform can also be referred to as a cloud computing platform.

数据中心生成模块210编译独立于云平台的声明性规范,以生成用于在目标云计算平台上创建数据中心的特定于云平台的数据中心表示。例如,特定于云平台的数据中心表示可以指特定于目标云计算平台的用户账户、网络地址等。The data center generation module 210 compiles a cloud platform-independent declarative specification to generate a cloud platform-specific data center representation for creating a data center on the target cloud computing platform. For example, the cloud platform-specific data center representation can refer to user accounts, network addresses, etc., specific to the target cloud computing platform.

数据中心生成模块210发送平台特定数据中心表示以及用于在目标云计算平台上部署数据中心的指令。目标云计算平台执行指令以配置目标云计算平台的计算资源,以根据平台特定数据中心表示生成数据中心。数据中心生成模块210为用户提供对云计算平台配置的数据中心的计算资源的访问。例如,如果数据中心是为多租户系统的租户创建的,则向与租户相关联的用户提供对数据中心的访问。The data center generation module 210 sends a platform-specific data center representation and instructions for deploying the data center on the target cloud computing platform. The target cloud computing platform executes the instructions to configure its computing resources to generate the data center based on the platform-specific data center representation. The data center generation module 210 provides users with access to the computing resources of the data center configured on the cloud computing platform. For example, if the data center is created for a tenant in a multi-tenant system, access to the data center is provided to the users associated with that tenant.

图6是示出根据一个实施方案的基于声明性规范在云平台上生成数据中心的框图。数据中心生成模块210接收独立于云平台的声明性规范610作为输入。独立于云平台的声明性规范610可以是由用户增量修改的声明性规范的版本。数据中心生成模块210处理独立于云平台的声明性规范610的特定版本。由于没有为任何特定的目标云平台指定独立于云平台的声明性规范610,因此数据中心生成模块210可以基于独立于云平台的声明性规范610在任何目标云平台上配置数据中心。Figure 6 is a block diagram illustrating the generation of a data center on a cloud platform based on a declarative specification according to one implementation. The data center generation module 210 receives a cloud platform-independent declarative specification 610 as input. The cloud platform-independent declarative specification 610 can be a version of the declarative specification that has been incrementally modified by the user. The data center generation module 210 processes a specific version of the cloud platform-independent declarative specification 610. Since no cloud platform-independent declarative specification 610 is specified for any particular target cloud platform, the data center generation module 210 can configure a data center on any target cloud platform based on the cloud platform-independent declarative specification 610.

数据中心生成模块210处理独立于云平台的声明性规范610,以生成用于数据中心的独立于云平台的详细元数据表示620。独立于云平台的详细元数据表示620定义了在独立于云平台的声明性规范610中指定的数据中心实体的每个实例的细节。数据中心生成模块210为数据中心实体实例(例如,服务实例)创建唯一标识符。The data center generation module 210 processes the cloud platform-independent declarative specification 610 to generate a cloud platform-independent detailed metadata representation 620 for the data center. The cloud platform-independent detailed metadata representation 620 defines the details of each instance of the data center entity specified in the cloud platform-independent declarative specification 610. The data center generation module 210 creates unique identifiers for data center entity instances (e.g., service instances).

在一个实施方案中,独立于云平台的详细元数据表示620包括数据中心实体类型的实例的阵列,例如,特定服务组类型的服务组实例的阵列。每个服务组实例包括服务实例的阵列。服务实例可还包括被允许执行与服务实例相关联的某些动作的用户团队的细节。数据中心生成模块210在供应和部署期间使用团队的详细信息,例如,用于为服务实例创建用户账户并允许团队的成员访问用户账户。In one implementation, the cloud platform-independent detailed metadata representation 620 includes an array of instances of data center entity types, such as an array of service group instances of a specific service group type. Each service group instance includes an array of service instances. The service instances may also include details of user teams permitted to perform certain actions associated with the service instance. The data center generation module 210 uses these team details during provisioning and deployment, for example, to create user accounts for the service instances and allow team members to access those user accounts.

独立于云平台的详细元数据表示620包括数据中心实体的每个实例的属性。因此,扩展数据中心实体的每个实例的描述以包括所有细节。结果,数据中心的独立于云平台的详细元数据表示620可以明显大于独立于云平台的声明性规范610。例如,独立于云平台的声明性规范610可以是几千行规范,而独立于云平台的详细数据中心表示620可以是数百万行生成的代码。结果,数据中心生成模块210将独立于云平台的详细元数据表示620保持为不可变的,即,一旦该表示被最终确定,就不对该表示执行任何修改。例如,如果需要执行数据中心实体的任何更新、删除或添加,则在独立于云平台的声明性规范610上执行它们。The cloud-independent detailed metadata representation 620 includes attributes for each instance of the data center entity. Therefore, the description of each instance of the data center entity is expanded to include all details. As a result, the cloud-independent detailed metadata representation 620 of the data center can be significantly larger than the cloud-independent declarative specification 610. For example, the cloud-independent declarative specification 610 can be a few thousand lines of specification, while the cloud-independent detailed data center representation 620 can be millions of lines of generated code. Consequently, the data center generation module 210 keeps the cloud-independent detailed metadata representation 620 immutable; that is, once the representation is finalized, no modifications are made to it. For example, if any updates, deletions, or additions to the data center entity need to be performed, they are performed on the cloud-independent declarative specification 610.

数据中心生成模块210接收预期在其上供应和部署数据中心的目标云平台,并生成数据中心的特定于云平台的详细元数据表示630。例如,数据中心生成模块210与目标云平台交互,以生成某些实体(或资源),例如,用户账户、虚拟私有云(VPC)和网络资源,例如VPC上的子网、云平台中实体之间的各种连接等。数据中心生成模块210接收在目标云平台中创建的资源的资源标识符,例如,用户账户名、VPC ID等,并将这些并入独立于云平台的详细元数据表示620中,以获得数据中心的特定于云平台的元数据表示630。在一个实施方案中,数据中心生成模块210为服务组和服务的给定组合,在云平台上为每个团队创建一个唯一的用户账户。团队使用用户账户来执行与该服务组的特定服务的交互,例如,用于调试、用于接收警报等。The data center generation module 210 receives a target cloud platform on which a data center is intended to be provisioned and deployed, and generates a cloud platform-specific detailed metadata representation 630 for the data center. For example, the data center generation module 210 interacts with the target cloud platform to generate certain entities (or resources), such as user accounts, Virtual Private Clouds (VPCs), and network resources, such as subnets on the VPC, various connections between entities in the cloud platform, etc. The data center generation module 210 receives resource identifiers of the resources created in the target cloud platform, such as user account names, VPC IDs, etc., and incorporates these into a cloud platform-independent detailed metadata representation 620 to obtain a cloud platform-specific metadata representation 630 for the data center. In one implementation, the data center generation module 210 creates a unique user account on the cloud platform for each team for a given combination of service groups and services. Teams use the user account to perform interactions with specific services of that service group, such as for debugging, for receiving alerts, etc.

目标云平台可以执行几个步骤来处理特定于云平台的详细元数据表示630。例如,独立于云平台的声明性规范可以指定服务之间允许的交互。这些允许的交互在特定于云平台的详细元数据表示630中被指定,并且被实现为云平台的网络策略。云平台可进一步创建安全组来实现网络策略,以根据声明性规范实现数据中心。The target cloud platform can perform several steps to process the cloud platform-specific detailed metadata representation 630. For example, a cloud platform-independent declarative specification can specify permitted interactions between services. These permitted interactions are specified in the cloud platform-specific detailed metadata representation 630 and implemented as cloud platform network policies. The cloud platform can further create security groups to implement network policies to implement the data center according to the declarative specification.

独立于云平台的声明性规范指定了服务之间的依赖关系,例如,每个服务的启动依赖关系列出了启动特定服务时应该运行的所有服务。数据中心生成模块220生成数据中心的特定于云平台的详细元数据表示,其包括描述这些依赖关系的信息,使得用于部署服务的指令确保云平台以依赖关系指定的顺序启动服务,使得对于每个服务,当启动服务时,在服务之前需要启动的服务正在运行。因此,服务之间的依赖关系表示依赖关系图,并且云平台以基于依赖关系图确定的顺序开始运行服务,使得如果服务A依赖于服务B,则在服务A启动之前启动服务B。Declarative specifications, independent of the cloud platform, define the dependencies between services. For example, startup dependencies for each service list all services that should run when a specific service is started. The data center generation module 220 generates a cloud platform-specific, detailed metadata representation of the data center, including information describing these dependencies. This ensures that instructions for deploying services guarantee that the cloud platform starts services in the order specified by the dependencies, and that for each service, when it starts, the services that needed to be started before it are running. Therefore, the dependencies between services represent a dependency graph, and the cloud platform starts services in the order determined by the dependency graph, such that if service A depends on service B, service B is started before service A.

数据中心生成模块220在用户账户之间创建信任关系,该信任关系允许服务经由安全通信信道访问其他服务。这些信任关系是使用基于声明性规范(例如,基于为服务指定的出站访问属性)生成的基底特定指令生成的。数据中心生成模块220向云平台发送指令,以基于控制服务组和服务之间的交互和访问的特定于云平台的机制来创建网络策略,例如,如声明性规范的结构所指定的,例如出站访问、安全组、安全策略等。Data center generation module 220 creates trust relationships between user accounts that allow services to access other services via secure communication channels. These trust relationships are generated using base-specific instructions based on declarative specifications (e.g., based on outbound access attributes specified for services). Data center generation module 220 sends instructions to the cloud platform to create network policies based on cloud platform-specific mechanisms that control interactions and access between service groups and services, such as outbound access, security groups, security policies, etc., as specified in the structure of the declarative specifications.

数据中心生成模块210在为其生成表示的特定目标云平台上部署特定于云平台的元数据表示630。数据中心生成模块210可以使用生成的元数据表示来执行各种验证,包括策略验证、格式验证等。The data center generation module 210 deploys a cloud platform-specific metadata representation 630 on the specific target cloud platform for which it generates the representation. The data center generation module 210 can use the generated metadata representation to perform various verifications, including policy verification, format verification, etc.

独立于云平台的声明性规范610可以被称为声明的数据中心表示,独立于云平台的详细元数据表示620被称为数据中心的派生元数据表示,以及特定于云平台的元数据表示630被称为数据中心的水合元数据表示。The cloud platform-independent declarative specification 610 can be referred to as the declarative data center representation, the cloud platform-independent detailed metadata representation 620 can be referred to as the data center derived metadata representation, and the cloud platform-specific metadata representation 630 can be referred to as the data center hydrated metadata representation.

用于在数据中心上部署软件工件的整体过程The overall process for deploying software artifacts on a data center

图7示出根据实施方案的用于生成用于配置在云平台上的数据中心上部署软件工件的流水线的整体过程。数据中心生成模块在目标云平台上生成一个或多个数据中心710。每个数据中心都是根据独立于云平台的声明性规范生成的,并且具有数据中心实体的层次结构。Figure 7 illustrates the overall process, according to the implementation scheme, for generating a pipeline for configuring software artifacts for deployment on a data center on a cloud platform. The data center generation module generates one or more data centers 710 on the target cloud platform. Each data center is generated according to a declarative specification independent of the cloud platform and has a hierarchical structure of data center entities.

软件发布管理模块230生成独立于云平台的主流水线720。在一个实施方案中,独立于云平台的主流水线包括对应于数据中心的环境的阶段,例如,开发环境、测试环境、金丝雀环境和生产环境。主流水线组成了跨各种环境(如开发环境、测试环境、试运行环境或生产环境)的渐进和/或有条件部署的序列。可以通过传递软件工件的映像来触发主流水线,并且包括在开发类型的环境中部署构建的阶段或指令。构建的软件工件被有条件地推进至一个或多个测试环境,然后是一个或多个金丝雀环境,最后被部署到生产环境。可以由用户(例如,服务所有者)定制主流水线,以表示跨环境的特定编排。可以定制主流水线以捕获用于从一个阶段移动到下一个阶段的特定推进标准。例如,多租户系统的不同租户可以以不同的方式定制主流水线。在一个实施方案中,主流水线默认地将软件的最新版本用于服务的软件工件,并跨各种环境构建和部署该版本。用户可以使用工件版本映射来确保软件工件的特定版本部署在特定的数据中心实体上。The software release management module 230 generates a cloud platform-independent mainstream pipeline 720. In one implementation, the cloud platform-independent mainstream pipeline includes phases corresponding to data center environments, such as development, testing, canary, and production environments. The mainstream pipeline constitutes a sequence of progressive and/or conditional deployments across various environments (such as development, testing, pilot, or production environments). A mainstream pipeline can be triggered by passing images of software artifacts and includes phases or instructions for deploying builds in development-type environments. The built software artifacts are conditionally advanced to one or more testing environments, then one or more canary environments, and finally deployed to the production environment. The mainstream pipeline can be customized by users (e.g., service owners) to represent specific orchestrations across environments. The mainstream pipeline can be customized to capture specific advancement criteria for moving from one phase to the next. For example, different tenants in a multi-tenant system can customize the mainstream pipeline in different ways. In one implementation, the mainstream pipeline defaults to using the latest version of the software for the service's software artifacts and builds and deploys that version across various environments. Users can use artifact version mapping to ensure that a specific version of a software artifact is deployed on a specific data center entity.

在一个实施方案中,部署在数据中心中的每个服务具有由数据中心的声明性规范定义的数据中心实体生成的独立于云平台的主流水线,例如,用于数据中心实例的主流水线、用于服务组的主流水线、用于小区的主流水线、用于服务的主流水线等。可以在传递软件工件的映像时触发主流水线。主流水线可以实现服务所有者控制的连续部署。主流水线可以实现数据中心实例所有者拥有或发布所有者拥有的按需部署。In one implementation, each service deployed in a data center has a cloud platform-independent mainstream waterline generated by the data center entity as defined by the data center's declarative specification. Examples include mainstream waterlines for data center instances, mainstream waterlines for service groups, mainstream waterlines for communities, and mainstream waterlines for services. Mainstream waterlines can be triggered when delivering images of software artifacts. Mainstream waterlines enable continuous deployment controlled by the service owner. Mainstream waterlines also enable on-demand deployment owned by the data center instance owner or the publishing owner.

可以由用户定制主流水线的某些部分,例如,由在数据中心上部署服务的多租户系统的租户。例如,推进决策流水线可以由租户定制,以确定执行哪些测试用例以及阈值是多少。软件发布管理模块230接收对用于将软件工件从独立于云平台的主流水线的一个阶段推进至另一个阶段的逻辑的定制730。Certain parts of the mainline pipeline can be customized by users, for example, by tenants of a multi-tenant system deploying services on a data center. For instance, the advance decision pipeline can be customized by a tenant to determine which test cases to execute and what the thresholds are. The software release management module 230 receives customizations 730 of the logic used to advance software artifacts from one stage of the cloud platform-independent mainline pipeline to another.

软件发布管理模块230编译独立于云平台的主流水线,以生成特定于每个数据中心的数据中心实体的层次结构的特定于云平台的详细部署流水线740,如数据中心的独立于云平台的声明性规范所指定的。The software release management module 230 compiles a cloud platform-independent mainstream pipeline to generate a cloud platform-specific detailed deployment pipeline 740 of a hierarchy of data center entities specific to each data center, as specified in the data center's cloud platform-independent declarative specification.

软件发布管理模块230进一步接收用于释放部署在数据中心上的服务的一个或多个特征的代码750。软件发布管理模块230执行特定于云平台的详细部署流水线760,以基于接收到的代码部署软件工件。The software release management module 230 further receives code 750 for releasing one or more features of a service deployed on a data center. The software release management module 230 executes a cloud platform-specific detailed deployment pipeline 760 to deploy software artifacts based on the received code.

图8示出根据实施方案的示例性主流水线800。主流水线代表阶段的序列,这些阶段代表跨各种数据中心环境的渐进式条件部署。图8显示了数据中心不同环境的阶段,包括开发环境、测试环境、金丝雀环境和生产环境。每个阶段进一步表示为该阶段执行的流水线。因此,主流水线800包括开发环境流水线810,该开发环境流水线馈送到测试环境流水线820,该测试环境流水线馈送到金丝雀环境流水线830,该金丝雀环境流水线馈送到生产环境流水线840。Figure 8 illustrates an exemplary mainstream pipeline 800 according to an implementation scheme. The mainstream pipeline represents a sequence of stages that represent progressive conditional deployments across various data center environments. Figure 8 shows the stages for different data center environments, including development, test, canary, and production environments. Each stage is further represented as the pipeline executed in that stage. Thus, mainstream pipeline 800 includes a development environment pipeline 810 that feeds to a test environment pipeline 820, a test environment pipeline that feeds to a canary environment pipeline 830, and a canary environment pipeline that feeds to a production environment pipeline 840.

每个阶段的流水线是包括较低级别流水线的分层流水线。例如,开发环境流水线810包括馈送到数据中心流水线D11、D12、...的开发主流水线,这取决于在数据中心的声明性规范中指定为具有开发环境的数据中心的数量。Each stage of the pipeline is a hierarchical pipeline that includes lower-level pipelines. For example, the development environment pipeline 810 includes development main pipelines that feed to data center pipelines D11, D12, ..., depending on the number of data centers specified as having a development environment in the data center's declarative specification.

测试环境流水线820包括馈送到数据中心流水线D21、D22,...的测试主流水线,这取决于在数据中心的声明性规范中指定为具有测试环境的数据中心的数量。The test environment pipeline 820 includes test main pipelines that feed to data center pipelines D21, D22, ..., depending on the number of data centers specified as having a test environment in the data center's declarative specification.

金丝雀环境流水线820包括馈送到数据中心流水线D31、D32,...的金丝雀主流水线,这取决于在数据中心的声明性规范中指定为具有金丝雀环境的数据中心的数量。The canary environment pipeline 820 includes canary main pipelines feeding into data center pipelines D31, D32, ..., depending on the number of data centers specified as having a canary environment in the data center's declarative specification.

生产环境流水线820包括馈送到数据中心流水线D21、D22,...的生产主流水线,这取决于在数据中心的声明性规范中指定为具有测试环境的数据中心的数量。Production environment pipeline 820 includes the main production pipelines that feed to data center pipelines D21, D22, ..., depending on the number of data centers specified as having a test environment in the data center's declarative specification.

每个环境流水线810、820、830分别包括推进决策流水线815a、815b、815c。由推进决策流水线815收集环境流水线的数据中心流水线的输出,推进决策流水线确定软件工件是否准备好推进至下一阶段。推进决策流水线815可以基于数据中心获得的测试用例结果来确定服务的软件工件是否被推进至下一阶段。例如,如果通过了超过阈值测试用例,则推进决策流水线815将软件工件推进至下一阶段。最后一个环境阶段,例如,生产环境流水线可能没有推进决策流水线,因为没有软件工件需要被推进至的后续阶段。如图8中所示,开发环境流水线的推进决策流水线815a确定是否将软件工件从开发阶段推进至测试阶段;测试环境流水线的推进决策流水线815b确定是否将软件工件从测试阶段推进至金丝雀阶段,金丝雀环境流水线的推进决策流水线815c确定是否将软件工件从金丝雀阶段推进至生产阶段。Each environment pipeline 810, 820, and 830 includes a procurement decision pipeline 815a, 815b, and 815c, respectively. The procurement decision pipeline 815 collects the output from the data center pipeline of the environment pipeline and determines whether the software artifact is ready to proceed to the next stage. The procurement decision pipeline 815 can determine whether the service's software artifact should proceed to the next stage based on test case results obtained from the data center. For example, if more than a threshold of test cases passes, the procurement decision pipeline 815 advances the software artifact to the next stage. The final environment stage, such as the production environment pipeline, may not have a procurement decision pipeline because there are no subsequent stages to which the software artifact needs to be advanced. As shown in Figure 8, the development environment pipeline's advance decision pipeline 815a determines whether to advance the software artifact from the development phase to the testing phase; the testing environment pipeline's advance decision pipeline 815b determines whether to advance the software artifact from the testing phase to the canary phase; and the canary environment pipeline's advance decision pipeline 815c determines whether to advance the software artifact from the canary phase to the production phase.

主流水线包括多个流水线,例如,用于供应目标云平台的资源的供应流水线和用于在数据中心实体上部署软件工件的部署流水线。每个流水线包括阶段的序列,每个阶段代表目标云平台需要执行的一个或多个动作,以供应和部署数据中心。数据中心生成模块210生成用于在数据中心实体上部署软件工件版本的详细流水线。The main pipeline comprises multiple pipelines, such as a provisioning pipeline for supplying resources to the target cloud platform and a deployment pipeline for deploying software artifacts on the data center entity. Each pipeline includes a sequence of stages, each stage representing one or more actions that the target cloud platform needs to perform to provision and deploy the data center. The data center generation module 210 generates a detailed pipeline for deploying versions of software artifacts on the data center entity.

在一个实施方案中,流水线生成器模块320使用包括变量的流水线模板生成详细的流水线。通过提供流水线中变量的特定值,将流水线模板转换为流水线。从模板生成流水线的过程被称为流水线模板的水合。流水线模板包含模板表达式,用作部署中使用的实际值的占位符。例如,模板表达式可以被目标特定的参数值或表达式替换。可以通过水合不同目标的流水线模板来生成多个流水线实例。模板变量表示可以用给定目标的特定值替换的参数,以生成特定于该目标的流水线实例。例如,在水合期间,模板变量“账户_id”可以被替换为账户_id的实际值,例如,“12345”。In one implementation, the pipeline generator module 320 generates a detailed pipeline using a pipeline template that includes variables. The pipeline template is transformed into a pipeline by providing specific values for the variables in the pipeline. The process of generating a pipeline from a template is called pipeline template hydration. A pipeline template contains template expressions that serve as placeholders for the actual values used in the deployment. For example, a template expression can be replaced by a target-specific parameter value or expression. Multiple pipeline instances can be generated by hydrating pipeline templates for different targets. Template variables represent parameters that can be replaced with specific values for a given target to generate a target-specific pipeline instance. For example, during hydration, the template variable "account_id" can be replaced with the actual value of account_id, such as "12345".

在一个实施方案中,流水线生成器模块320基于数据中心的数据中心实体的层次结构以层次结构的方式生成流水线。例如,数据中心包括不同类型的数据中心实体,包括数据中心、服务组、服务等。数据中心实体可以包括一个或多个子数据中心实体。例如,数据中心包括一个或多个服务组作为子数据中心实体。服务组包括一个或多个服务作为子数据中心实体。因此,数据中心生成模块210从层次结构级别的数据中心实体开始,并生成低于该级别的数据中心实体的流水线。例如,流水线生成器模块320从数据中心级别开始,并为数据中心内的服务组生成流水线。对于每个服务组,流水线生成器模块320为服务组内的服务生成流水线。In one implementation, the pipeline generator module 320 generates pipelines hierarchically based on the hierarchy of data center entities. For example, a data center includes different types of data center entities, including data centers, service groups, services, etc. A data center entity may include one or more sub-data center entities. For example, a data center may include one or more service groups as sub-data center entities. A service group may include one or more services as sub-data center entities. Therefore, the data center generation module 210 starts with data center entities at the hierarchical level and generates pipelines for data center entities below that level. For example, the pipeline generator module 320 starts at the data center level and generates pipelines for service groups within the data center. For each service group, the pipeline generator module 320 generates pipelines for the services within the service group.

根据一个实施方案的用于执行流水线的过程如下。软件发布部署模块230接收在目标云平台中的数据中心实体集上部署软件工件的请求。软件发布部署模块230为一个或多个数据中心执行主流水线。软件发布部署模块230为每个数据中心的每个服务组执行聚合流水线。聚合流水线包括用于服务组内的服务的流水线。对于每个服务组中的每个服务,通过执行流水线的所有阶段来执行流水线。提供流水线的执行导致为服务提供资源,并且部署流水线导致在目标云平台中部署服务。According to one implementation, the process for executing a pipeline is as follows: Software deployment module 230 receives a request to deploy software artifacts on a set of data center entities in a target cloud platform. Software deployment module 230 executes a main pipeline for one or more data centers. Software deployment module 230 executes an aggregate pipeline for each service group in each data center. The aggregate pipeline includes pipelines for services within the service group. For each service in each service group, the pipeline is executed by performing all stages of the pipeline. Providing the execution of the pipeline results in providing resources for the service, and deploying the pipeline results in deploying the service in the target cloud platform.

图9示出根据实施方案的云平台上的主流水线的环境的阶段执行的整体过程。可以由每个环境流水线810、820、830执行步骤910、920、930、940和950。生产环境流水线3可以仅执行步骤910和920。可以针对使用清单文件指定的一个服务或多个服务来执行图9中所示的步骤。Figure 9 illustrates the overall process of staged execution of the main pipeline environment on the cloud platform according to the implementation scheme. Steps 910, 920, 930, 940, and 950 can be performed by each environment pipeline 810, 820, and 830. Production environment pipeline 3 can perform only steps 910 and 920. The steps shown in Figure 9 can be performed for one or more services specified using the manifest file.

用于环境E的环境流水线包括在数据中心实体集上部署软件910的指令,例如,被指定为具有环境E的数据中心实体集。在一个实施方案中,通过编译服务的源代码来生成软件工件。可以从版本控制软件获得源代码。数据中心实体集可以包括数据中心实例、服务组、小区、服务或这些的任意组合。The environment pipeline for environment E includes instructions for deploying software 910 on a set of data center entities, for example, a set of data center entities designated as having environment E. In one implementation, software artifacts are generated by compiling the source code of the service. The source code can be obtained from version control software. The data center entity set can include data center instances, service groups, cells, services, or any combination thereof.

用于环境E的环境流水线还包括用于运行测试的指令,该测试用于测试数据中心实体集上部署的软件工件920。用于环境E的环境流水线还包括用于例如使用推进决策流水线815对照推进标准来评估测试结果930的指令。如果不满足推进标准,则可以使用修订的软件工件,例如,从源代码生成的软件工件,该软件工件包括对在测试期间920识别的某些缺陷的修复,来重复步骤910、920、930和940。用于环境E的环境流水线还包括用于在满足推进标准的情况下前进到下一阶段950的指令。The environment pipeline for Environment E also includes instructions for running tests 920 that test software artifacts 920 deployed on the data center entity set. The environment pipeline for Environment E also includes instructions for evaluating test results 930 against advancement criteria, for example, using the advancement decision pipeline 815. If the advancement criteria are not met, steps 910, 920, 930, and 940 can be repeated using revised software artifacts, such as those generated from source code, which include fixes for certain defects identified during testing 920. The environment pipeline for Environment E also includes instructions for proceeding to the next stage 950 if the advancement criteria are met.

在一个实施方案中,主流水线包括流水线的层次结构。该层次结构包括多个级,并且特定级的流水线包括下一个较低级的流水线作为子流水线。例如,在层次结构的最高级,主流水线包括发布主流水线,其部署与产品相关的服务集。下一级层次结构包括服务主流水线,其表示跨各种环境特定服务的所有部署。下一级层次结构可以包括服务组主流水线,然后是服务主流水线。In one implementation, a mainstream pipeline comprises a hierarchical structure of pipelines. This hierarchy includes multiple levels, and a pipeline at a specific level includes the next lower-level pipeline as a sub-pipeline. For example, at the highest level of the hierarchy, the mainstream pipeline includes a release mainstream pipeline that deploys a set of services associated with a product. The next level of the hierarchy includes a service mainstream pipeline, which represents all deployments of a specific service across various environments. The next level of the hierarchy may include a service group mainstream pipeline, followed by service mainstream pipelines.

图10示出根据实施方案的示例性主流水线。主流水线是分层流水线,其中流水线的每个阶段可以包括具有用于执行该阶段的详细指令的流水线。主流水线层次结构可以镜像数据中心层次结构。例如,主流水线的顶级代表不同环境的阶段的序列。每个环境可以包括一个或多个用于数据中心实例的流水线或用于其他类型的数据中心实体的流水线。数据中心实例流水线1010可以包括服务组流水线1020。每个服务组流水线1020可以包括一个或多个服务流水线1030。数据中心实例流水线1010可以包括小区流水线1025,每个小区流水线1025包括一个或多个服务流水线1030。服务流水线1030可以包括阶段,每个阶段代表流水线,该流水线代表用于为特定环境部署服务的指令。层次结构中的最低级流水线或叶级流水线被称为单元流水线,并且可以包括用于执行与服务相关的操作的详细的服务特定指令。例如,服务的部署可以包括部署前步骤、部署步骤、部署后步骤以及部署后测试和验证步骤。不是叶级流水线并且具有一个或多个子流水线的流水线是编排子流水线执行的聚合流水线。Figure 10 illustrates an exemplary mainline pipeline according to an implementation scheme. The mainline pipeline is a hierarchical pipeline, where each stage of the pipeline may include a pipeline with detailed instructions for performing that stage. The mainline pipeline hierarchy may mirror a data center hierarchy. For example, the top level of the mainline pipeline represents a sequence of stages for different environments. Each environment may include one or more pipelines for data center instances or for other types of data center entities. Data center instance pipeline 1010 may include service group pipeline 1020. Each service group pipeline 1020 may include one or more service pipelines 1030. Data center instance pipeline 1010 may include cell pipelines 1025, each cell pipeline 1025 including one or more service pipelines 1030. Service pipelines 1030 may include stages, each stage representing a pipeline that represents instructions for deploying services for a specific environment. The lowest-level pipeline or leaf-level pipeline in the hierarchy is called a cell pipeline and may include detailed service-specific instructions for performing service-related operations. For example, service deployment may include pre-deployment steps, deployment steps, post-deployment steps, and post-deployment testing and verification steps. A pipeline that is not a leaf-level pipeline and has one or more sub-pipelines is an aggregate pipeline that orchestrates the execution of sub-pipelines.

可以由发生的拉请求驱动主流水线,其发生软件的版本控制系统接收用于考虑提交给外部存储库以包含在项目的主存储库中的更改的请求。因此,当接收到拉请求时,自动触发主流水线,并且基于接收到拉请求的最新软件版本来部署软件工件。主流水线基于拉请求执行软件工件的持续交付。例如,通过使用部署模块210的应用编程接口(API)调用请求,可以基于按需方式来驱动主流水线。可以为任何服务集和使用API指定的给定服务的任何版本请求基于主流水线的按需部署。可以调用主流水线来请求从当前版本回滚到先前版本,或者从当前部署的版本前滚到更新的版本。A mainstream pipeline can be driven by pull requests, which occur when the software's version control system receives requests to consider committing changes to an external repository for inclusion in the project's main repository. Therefore, when a pull request is received, the mainstream pipeline is automatically triggered, and software artifacts are deployed based on the latest software version that received the pull request. The mainstream pipeline performs continuous delivery of software artifacts based on pull requests. For example, the mainstream pipeline can be driven on an on-demand basis by using the application programming interface (API) call request of deployment module 210. On-demand deployment based on the mainstream pipeline can be requested for any set of services and any version of a given service specified using the API. The mainstream pipeline can be invoked to request a rollback from the current version to a previous version, or a rollforward from the currently deployed version to a newer version.

在一个实施方案中,部署模块210为每个服务创建服务主流水线。当接收到对软件的存储库的拉请求时,就会触发这些流水线。部署模块210从用于特定服务的用户接收流水线模板。这些流水线模板包括用于对特定服务测试、验证、构建等的详细指令。数据中心生成模块220接收用于一个或多个数据中心的独立于云平台的声明性规范。数据中心生成模块220根据接收到的独立于云平台的声明性规范生成(或配置)数据中心。部署模块210接收推进决策815流水线。推进决策815流水线被集成到整体主流水线中。In one implementation, deployment module 210 creates a service main pipeline for each service. These pipelines are triggered when a pull request for the software repository is received. Deployment module 210 receives pipeline templates from users for a specific service. These pipeline templates include detailed instructions for testing, validating, building, etc., for a specific service. Data center generation module 220 receives cloud platform-independent declarative specifications for one or more data centers. Data center generation module 220 generates (or configures) data centers based on the received cloud platform-independent declarative specifications. Deployment module 210 receives the Advance Decision 815 pipeline. The Advance Decision 815 pipeline is integrated into the overall main pipeline.

流水线生成器从模板中为每个数据中心创建所有流水线,并经由主流水线以分层方式组合它们,例如,如图10中所示。在一个实施方案中,流水线生成器生成用于各个服务的服务流水线;流水线生成器生成小区主流水线以调用服务流水线;流水线生成器生成服务组主流水线以调用小区主流水线;流水线生成器生成数据中心实例主流水线以调用服务组流水线;流水线生成器生成服务主流水线以调用数据中心实例主流水线。The pipeline generator creates all pipelines for each data center from a template and combines them in a hierarchical manner via mainstream pipelines, as shown in Figure 10. In one implementation, the pipeline generator generates service pipelines for each service; the pipeline generator generates cell mainstream pipelines to invoke service pipelines; the pipeline generator generates service group mainstream pipelines to invoke cell mainstream pipelines; the pipeline generator generates data center instance mainstream pipelines to invoke service group pipelines; and the pipeline generator generates service mainstream pipelines to invoke data center instance mainstream pipelines.

以下是显示了各个阶段的主流水线的片段。每个阶段可以指定属性,包括阶段名称、流水线的类型、阶段类型(例如,主部署流水线或推进流水线)、先前阶段等。The following is a snippet showing the main pipeline at each stage. Each stage can specify attributes, including stage name, pipeline type, stage type (e.g., main deployment pipeline or advance pipeline), previous stage, etc.

如审查主流水线中所示,第一阶段是工件版本映射。下一阶段是用于部署到开发环境的主部署流水线。下一阶段是用于确定是否可以将软件工件推进至下一阶段的推进流水线。下一阶段是用于部署到测试环境的主部署流水线。下一阶段是用于确定是否可以将软件工件推进至下一阶段(即,试运行环境)的推进流水线。As shown in the main pipeline review, the first stage is artifact version mapping. The next stage is the main deployment pipeline for deployment to the development environment. The next stage is the advancement pipeline for determining whether the software artifact can be advanced to the next stage. The next stage is the main deployment pipeline for deployment to the test environment. The next stage is the advancement pipeline for determining whether the software artifact can be advanced to the next stage (i.e., the pilot environment).

软件工件版本映射Software artifact version mapping

在一个实施方案中,部署模块210接收将各种软件工件及其版本与数据中心实体相关联的工件版本映射。工件版本映射提供了需要为不同数据中心实体中的服务部署的软件工件的特定版本的声明性规范。每个数据中心实体可以基于其在数据中心层次结构中的位置被唯一标识,如数据中心的声明性规范所指定的。例如,对于服务,软件库可以充当软件工件。软件工件可以具有多个版本,例如,V1、V2、V3等。工件版本映射可以指定版本V1需要部署在数据中心实体C1和C2中,并且版本V2需要部署在数据中心实体C3和C4中。部署模块210生成主流水线和指令,其确保如在工件版本映射中指定的那样,在数据中心实体中部署适当的软件工件版本。In one implementation, deployment module 210 receives an artifact version map that associates various software artifacts and their versions with data center entities. The artifact version map provides a declarative specification of the specific versions of software artifacts that need to be deployed for services in different data center entities. Each data center entity can be uniquely identified based on its position in the data center hierarchy, as specified in the data center's declarative specification. For example, for a service, a software library can act as a software artifact. Software artifacts can have multiple versions, such as V1, V2, V3, etc. The artifact version map can specify that version V1 needs to be deployed in data center entities C1 and C2, and version V2 needs to be deployed in data center entities C3 and C4. Deployment module 210 generates a mainline and instructions that ensure the appropriate software artifact versions are deployed in the data center entities as specified in the artifact version map.

在一个实施方案中,工件版本映射被指定为JSON(Javascript对象符号)文件、YAML文件或使用用于表示嵌套对象的任何其他语法的文件。工件版本映射可以包括与分布在数据中心的层次结构上的各种数据中心实体相关联的<服务>:<版本>密钥对的集合。工件版本映射密钥对充当相应流水线的白名单。如果在工件版本映射中没有包括服务的密钥,那么在流水线的执行期间,该服务的所有流水线都被排除在外。不同的工件版本映射可以应用于相同的主流水线,导致在主流水线的执行期间包括/排除不同的服务。In one implementation, the artifact version map is specified as a JSON (JavaScript Object Notation) file, a YAML file, or a file using any other syntax for representing nested objects. The artifact version map may include a set of <service>:<version> key pairs associated with various data center entities distributed across a data center hierarchy. The artifact version map key pairs act as a whitelist for the corresponding pipelines. If a service's key is not included in the artifact version map, then all pipelines for that service are excluded during pipeline execution. Different artifact version maps can be applied to the same main pipeline, resulting in different services being included/excluded during main pipeline execution.

以下是示例性工件版本映射。工件版本映射使用属性“环境_类型”指定环境类型。在以下的实施例中,指定了环境类型开发。环境类型可以包括一个或多个数据中心实例;数据中心实例可以包括一个或多个服务组,服务组可以包括一个或多个服务。在以下的实施例中,软件工件名称被指定为库1,版本被指定为版本1,并且与服务实例“实例001”相关联。然而,软件工件名称和版本可以与层次结构中的任何级别的数据中心实体相关联。例如,对于指定的软件工件名称和版本或服务组,软件工件名称和版本适用于服务组内的所有服务,除非软件工件名称和版本被为服务组内的特定服务实例指定的软件工件名称和版本的不同值覆盖。The following is an example artifact version mapping. The artifact version mapping uses the attribute "environment_type" to specify the environment type. In the following embodiments, an environment type development is specified. An environment type may include one or more datacenter instances; a datacenter instance may include one or more service groups, and a service group may include one or more services. In the following embodiments, the software artifact name is specified as library1, the version is specified as version1, and it is associated with the service instance "instance001". However, the software artifact name and version can be associated with a datacenter entity at any level of the hierarchy. For example, for a specified software artifact name and version or service group, the software artifact name and version apply to all services within the service group, unless the software artifact name and version are overridden by different values of the software artifact name and version specified for a specific service instance within the service group.

类似地,可以为数据中心实例指定软件工件名称和版本,并且适用于数据中心实例内的所有服务组或小区,除非为服务组指定了覆盖值。Similarly, you can specify software artifact names and versions for a data center instance, and these apply to all service groups or cells within the data center instance, unless an overridden value is specified for the service group.

在一个实施方案中,工件版本映射使用数据中心实体的完整路径,例如“错开_组1/数据中心1/服务_组2/服务1”来指定数据中心实体。在一个实施方案中,工件版本映射使用数据中心实体的完整路径中的正则表达式来指定数据中心实体集。例如,包括服务_组[?]的完整路径,包括服务_组1、服务_组2、服务_组3等。In one implementation, the artifact version mapping uses the full path of the data center entity, such as "offset_group1/data center1/service_group2/service1", to specify the data center entity. In another implementation, the artifact version mapping uses a regular expression within the full path of the data center entity to specify the set of data center entities. For example, it includes the full path of service_group[?], including service_group1, service_group2, service_group3, etc.

以下是工件版本映射的实施例,其指定正则表达式来定义服务集。环境类型被指定为dev和测试,并且完整路径中的数据中心实体(包括数据中心实例和服务组)被指定为通配符,并且服务实例被指定为“服务*”。因此,对于开发(dev)和测试环境的所有数据中心实例、所有服务组、与服务*匹配的服务名称,将部署应用程序“应用程序1”的版本V1。The following is an example of artifact version mapping, which specifies regular expressions to define service sets. The environment type is specified as dev and test, and the data center entities (including data center instances and service groups) in the full path are specified as wildcards, and the service instance is specified as "service*". Therefore, for all data center instances, all service groups, and service names matching service* in both the development (dev) and test environments, version V1 of application "application1" will be deployed.

在一些实施方案中,工件版本映射可以指定流水线使用的参数。因此,指定的参数将适用于为其指定参数的交错组。In some implementations, the job version mapping can specify the parameters used by the pipeline. Therefore, the specified parameters will apply to the interleaved groups for which the specified parameters are assigned.

根据实施方案,以下过程用于配置在云平台上的数据中心上部署软件工件。数据中心生成模块在目标云平台上生成一个或多个数据中心。每个数据中心都是根据独立于云平台的声明性规范生成的,并且具有数据中心实体的层次结构。According to the implementation plan, the following process is used to configure the deployment of software artifacts on data centers on a cloud platform. The data center generation module generates one or more data centers on the target cloud platform. Each data center is generated according to a declarative specification independent of the cloud platform and has a hierarchical structure of data center entities.

软件发布管理模块230接收将数据中心实体映射到软件工件的版本的工件版本映射作为输入。软件发布管理模块230还接收独立于云平台的主流水线作为输入。The software release management module 230 receives an artifact version mapping that maps data center entities to versions of software artifacts as input. The software release management module 230 also receives a mainstream pipeline independent of the cloud platform as input.

软件发布管理模块230结合工件版本映射编译独立于云平台的主流水线,以生成特定于云平台的详细流水线。在一个实施方案中,所生成的特定于云平台的详细流水线包括某些阶段之前的工件版本映射过滤器,以根据工件版本映射确定是否应该启用或禁用某些阶段。The software release management module 230 combines artifact version mapping to compile a cloud-platform-independent mainstream pipeline to generate a cloud-platform-specific detailed pipeline. In one implementation, the generated cloud-platform-specific detailed pipeline includes artifact version mapping filters prior to certain stages to determine whether certain stages should be enabled or disabled based on the artifact version mapping.

软件发布管理模块230进一步接收用于释放部署在数据中心上的服务的一个或多个特征的代码750。例如,代码可以表示从版本控制管理系统获得的源代码,该版本控制管理系统存储由开发人员向其提交更改的源代码存储库。软件发布管理模块230执行特定于云平台的部署流水线,以基于接收到的代码部署软件工件。The software release management module 230 further receives code 750 for releasing one or more features of a service deployed on a data center. For example, the code may represent source code obtained from a version control management system that stores a repository of source code to which developers submit changes. The software release management module 230 executes a cloud platform-specific deployment pipeline to deploy software artifacts based on the received code.

工件版本映射和主流水线可以用于编排与基于云的数据中心中软件工件的持续交付相关的各种类型的操作。工件版本映射和主流水线可以配置为对服务或服务组或任何数据中心实体执行聚合重试操作。工件版本映射包括对数据中心实体的重试操作的配置,包括重试策略、在执行流水线的阶段失败的情况下要执行的重试的阈值数量、在重试之前是否需要来自用户的确认或自动执行重试等。例如,重试策略可以是在重试之前暂停执行一段固定时间段的固定回退策略。可以使用工件版本映射和主流水线来配置其他重试策略。在一个实施方案中,流水线生成器在聚合流水线内引入调用重试阶段,以在先前流水线阶段失败时触发重试策略。为数据中心实体指定的重试策略和配置参数适用于数据中心实体内的所有数据中心实体和服务,除非嵌套数据中心实体覆盖了该值。Artifact version mapping and mainline pipelines can be used to orchestrate various types of operations related to the continuous delivery of software artifacts in cloud-based data centers. Artifact version mapping and mainline pipelines can be configured to perform aggregated retry operations on services, service groups, or any data center entity. Artifact version mapping includes configuration of retry operations for data center entities, including retry policies, the threshold number of retries to perform in case of pipeline stage failure, whether user acknowledgment is required before retries, or automatic retries. For example, a retry policy could be a fixed fallback policy that pauses execution for a fixed period before a retry. Other retry policies can be configured using artifact version mapping and mainline pipelines. In one implementation, the pipeline generator introduces a call retry phase within the aggregate pipeline to trigger the retry policy if a previous pipeline stage fails. The retry policy and configuration parameters specified for a data center entity apply to all data center entities and services within that data center entity, unless nested data center entities override the value.

服务的系统配置冻结Service system configuration freeze

在一个实施方案中,系统配置冻结模块350对部署在目标云平台中的服务执行系统配置冻结。可以响应于从用户(例如,系统管理员)接收的请求来执行系统配置冻结。该请求可以识别数据中心实体,并请求冻结在该数据中心实体上运行的所有服务的系统配置。系统配置冻结确保不对数据中心实体的服务进行系统配置改变,并且不对与在数据中心实体上运行的服务相关联的软件工件进行修改。In one implementation, the system configuration freeze module 350 performs a system configuration freeze on services deployed in the target cloud platform. The system configuration freeze can be performed in response to a request received from a user (e.g., a system administrator). This request may identify a data center entity and request the freezing of the system configuration of all services running on that data center entity. The system configuration freeze ensures that no system configuration changes are made to the services of the data center entity, and no software artifacts associated with the services running on the data center entity are modified.

在一个实施方案中,系统接收为数据中心实体(例如,服务组、小区、数据中心等)设置系统配置冻结的请求。系统确定数据中心实体内的服务,例如,基于数据中心的声明性规范或基于描述数据中心的拓扑层次结构的元数据。例如,系统对位于数据中心实体之下的所有数据中心实体执行分层遍历,并识别数据中心实体内的所有服务。系统对在数据中心实体D1内识别的所有服务执行系统配置冻结,除非系统接收到为特定服务S1或在所识别的数据中心实体D1内的较小数据中心实体D2创建异常(即,覆盖)的请求,以不对服务S1或较小数据中心实体D2执行系统配置冻结。In one implementation, the system receives a request to set a system configuration freeze for a data center entity (e.g., service group, cell, data center, etc.). The system identifies the services within the data center entity, for example, based on the data center's declarative specification or metadata describing the data center's topological hierarchy. For example, the system performs a hierarchical traversal of all data center entities below the data center entity and identifies all services within the data center entity. The system performs a system configuration freeze on all services identified within data center entity D1, unless the system receives a request to prevent a system configuration freeze on service S1 or smaller data center entity D2 within the identified data center entity D1 from being performed on service S1 or smaller data center entity D2.

可以响应于确定在时间区间期间预期到大于阈值量的工作负载而执行系统配置冻结。例如,如果多租户系统的租户期望在诸如节假日的时间区间期间有大量的处理请求,则租户可以请求在该时间区间期间冻结在生产系统上运行的服务,以避免服务中断的可能性。A system configuration freeze can be implemented in response to the determination that a workload exceeding a threshold is expected during a time interval. For example, if a tenant in a multi-tenant system expects a large number of processing requests during a time interval such as a holiday, the tenant can request to freeze services running on the production system during that time interval to avoid the possibility of service interruption.

在一个实施方案中,系统可以接收修改的声明性规范以及对数据中心实体执行系统配置冻结的请求。例如,数据中心可以被修改为在数据中心实体D1的层次结构内添加数据中心实体D2,或者在数据中心实体D1的层次结构内添加服务s1。系统创建所请求的数据中心实体D2或服务S1,并在指定的时间区间期间对所创建的服务或数据中心实体强制执行系统配置冻结。In one implementation, the system may receive a modified declarative specification and a request to perform a system configuration freeze on a data center entity. For example, a data center may be modified to add a data center entity D2 within the hierarchy of data center entity D1, or to add a service s1 within the hierarchy of data center entity D1. The system creates the requested data center entity D2 or service S1 and enforces a system configuration freeze on the created service or data center entity for a specified time interval.

可以响应于确定在时间区间期间正在诊断与数据中心实体相关联的问题而执行系统配置冻结。例如,多租户系统的租户可以识别数据中心实体或服务的问题,例如导致服务性能不佳的性能问题。租户的系统管理员可以运行诊断过程和工具来识别问题的根本原因。在诊断问题的同时,租户可能倾向于冻结数据中心实体或服务的系统配置,以最小化对系统的改变,从而能够准确地诊断问题。System configuration freezes can be performed in response to determining that a problem associated with a data center entity is being diagnosed during a time interval. For example, tenants in a multi-tenant system may identify a problem with a data center entity or service, such as a performance issue causing poor service performance. The tenant's system administrator can run diagnostic processes and tools to identify the root cause of the problem. While diagnosing the problem, the tenant may prefer to freeze the system configuration of the data center entity or service to minimize changes to the system, thus enabling accurate problem diagnosis.

可以响应于确定在时间区间期间正在执行特定系统配置改变而执行系统配置冻结。系统配置冻结防止在时间区间期间的任何其他系统配置改变。因此,系统可以确保以互斥的方式执行对可能相互干扰的系统配置的改变,使得一次只执行一个改变,并且在该时段期间阻止任何其他改变。A system configuration freeze can be performed in response to the determination that a specific system configuration change is being executed during a time interval. A system configuration freeze prevents any other system configuration changes from occurring during the time interval. Therefore, the system can ensure that changes to potentially interfering system configurations are executed in a mutually exclusive manner, such that only one change is executed at a time, and that no other changes are prevented during that period.

尽管本文描述的实施例示出多租户系统上下文中的过程,但是所公开的技术可以应用于任何其他系统,例如,专用于单个组织的系统。Although the embodiments described herein illustrate processes in a multi-tenant system context, the disclosed techniques can be applied to any other system, such as a system dedicated to a single organization.

图11示出根据实施方案的系统配置冻结模块的系统架构。系统配置冻结模块350包括冻结请求处理模块1110、锁管理器1120和系统配置冻结元数据存储1130。其他实施方案可以包括比图11中本文所指示的部件更多或更少的部件。Figure 11 illustrates the system architecture of the system configuration freeze module according to an embodiment. The system configuration freeze module 350 includes a freeze request processing module 1110, a lock manager 1120, and a system configuration freeze metadata store 1130. Other embodiments may include more or fewer components than those indicated herein in Figure 11.

冻结请求处理模块1110接收系统配置冻结请求并对其进行处理。可以从用户(例如,系统管理员)的客户端设备接收系统配置冻结请求。系统配置冻结请求指定需要强制执行系统配置冻结的时间区间。系统配置冻结请求可以识别在指定时间区间期间需要冻结的一个或多个服务。系统配置冻结请求可以指定用于执行系统配置冻结的数据中心的数据中心实体。因此,该请求指定需要在指定的时间区间期间冻结在数据中心实体中运行的所有服务,从而不对与这些服务相关联的软件工件执行修改,并且不对这些服务的任何类型的配置执行修改。冻结请求处理模块1110识别在指定时间区间期间需要冻结的服务列表。例如,如果系统配置冻结请求指定数据中心实体,则冻结请求处理模块1110识别配置为在数据中心实体中运行的所有服务。The freeze request processing module 1110 receives and processes a system configuration freeze request. The system configuration freeze request can be received from a user's (e.g., a system administrator's) client device. The system configuration freeze request specifies the time interval during which a system configuration freeze needs to be enforced. The system configuration freeze request can identify one or more services that need to be frozen during the specified time interval. The system configuration freeze request can specify a data center entity for which the system configuration freeze is to be performed. Therefore, the request specifies that all services running in the data center entity need to be frozen during the specified time interval, so that no modifications are made to the software artifacts associated with these services, and no modifications are made to any type of configuration of these services. The freeze request processing module 1110 identifies a list of services that need to be frozen during the specified time interval. For example, if the system configuration freeze request specifies a data center entity, the freeze request processing module 1110 identifies all services configured to run in the data center entity.

系统配置冻结元数据存储1130存储与执行服务配置冻结相关的元数据,包括描述对系统配置冻结的请求的元数据。描述请求的元数据包括请求标识符、需要强制执行系统冻结请求的时间段以及需要对其执行系统配置冻结的数据中心实体。可以使用开始时间和结束时间或者通过使用开始时间和时间区间的长度来指定时间区间。系统配置冻结元数据存储1130还存储从服务到锁的映射,该映射可以由用于对服务强制执行冻结的系统配置冻结模块350获取,或者由用于对服务配置进行修改的流水线获取。描述锁的元数据包括对请求锁的时间段长度的估计。The system configuration freeze metadata store 1130 stores metadata related to performing service configuration freezes, including metadata describing the request for a system configuration freeze. The metadata describing the request includes a request identifier, the time period for which the system freeze request needs to be enforced, and the data center entity for which the system configuration freeze needs to be enforced. The time interval can be specified using a start time and an end time, or by using a start time and the length of the time interval. The system configuration freeze metadata store 1130 also stores a mapping from services to locks, which can be obtained by the system configuration freeze module 350 used to enforce a freeze on a service, or by a pipeline used to modify the service configuration. The metadata describing the lock includes an estimate of the length of the time period for which the lock is requested.

锁管理器1120接收获取锁的请求并获取所请求的锁。锁管理器从冻结请求处理模块1110或从流水线执行模块接收获取锁的请求。在一个实施方案中,锁管理器是分布式锁服务,其可以在不同于运行冻结请求处理模块1110的计算系统的系统上运行。锁管理器1120还接收释放先前获取的锁的请求并释放该锁。在特定时间段内获取与服务相关联的锁确保在该时间段内没有配置为修改服务的流水线能够进行。在该时间区间之后释放锁允许任何试图修改服务配置的流水线继续进行,从而结束服务的系统配置冻结。Lock manager 1120 receives and acquires a lock request. The lock manager receives the lock acquisition request from freeze request processing module 1110 or from the pipeline execution module. In one embodiment, the lock manager is a distributed lock service that can run on a system different from the computing system running freeze request processing module 1110. Lock manager 1120 also receives and releases a previously acquired lock. Acquiring a lock associated with a service within a specific time period ensures that no pipeline configured to modify the service can proceed during that time period. Releasing the lock after the time interval allows any pipeline attempting to modify the service configuration to continue, thereby ending the system configuration freeze of the service.

流水线生成器模块320生成用于对数据中心实体的系统配置进行改变的流水线。所生成的流水线被配置成允许系统配置冻结模块350冻结任何服务的配置。Pipeline generator module 320 generates pipelines for changing the system configuration of data center entities. The generated pipelines are configured to allow system configuration freeze module 350 to freeze the configuration of any service.

图12示出根据实施方案的用于强制执行系统配置冻结的示例性流水线。图12示出为修改服务的服务配置而生成的流水线的一些阶段,例如,用于修改与服务相关联的软件工件。所生成的流水线可以包括图12中未示出的其他阶段。图12中所示的流水线可以是图10中所示的服务流水线1030的一部分。Figure 12 illustrates an exemplary pipeline for enforcing a system configuration freeze according to an implementation scheme. Figure 12 shows some stages of a pipeline generated for modifying the service configuration of a service, for example, for modifying software artifacts associated with the service. The generated pipeline may include other stages not shown in Figure 12. The pipeline shown in Figure 12 may be part of the service pipeline 1030 shown in Figure 10.

因此,所生成的流水线1200包括变更前阶段1210、变更阶段1220和变更后阶段1230。变更阶段1220包括可以由软件发布管理模块230实现的各种类型的系统配置改变。这些系统配置改变包括但不限于在数据中心实体中部署新服务、销毁数据中心实体中的服务、在数据中心实体中提供资源、销毁数据中心实体中的资源、执行任何实用程序操作、或通过恢复到服务或软件工件的早期版本来执行服务部署的回滚。系统配置冻结模块350配置为在时间区间期间冻结对数据中心实体的所有这些类型的改变。Therefore, the generated pipeline 1200 includes a pre-change phase 1210, a change phase 1220, and a post-change phase 1230. Change phase 1220 includes various types of system configuration changes that can be implemented by the software release management module 230. These system configuration changes include, but are not limited to, deploying new services in a data center entity, destroying services in a data center entity, providing resources in a data center entity, destroying resources in a data center entity, performing any utility operations, or performing a rollback of a service deployment by restoring to an earlier version of a service or software artifact. The system configuration freeze module 350 is configured to freeze all these types of changes to the data center entity during a time interval.

变更前阶段1210包括用于获取与服务相关联的锁的指令。变更后阶段1230包括用于释放在变更前阶段1210中获取的锁的指令。在一个实施方案中,将标识与每个服务相关联的锁的信息存储在系统配置冻结元数据存储1130中。因此,流水线生成器模块320可以访问与流水线相关联的锁,并生成用于获取锁的指令,并且将生成的指令包括在变更前流水线中。可替代地,流水线生成器模块320可以生成用于访问系统配置冻结元数据存储1130以获取与服务相关联的锁的标识符并且然后获取锁的指令。如果无法获取锁,例如,如果锁先前已经被另一实体获取并且还没有被释放,则在变更前阶段1210中用于获取锁的指令导致流水线执行被暂停。例如,系统配置冻结模块350获取在时间区间期间需要冻结的所有服务的锁,从而暂停在时间区间期间试图改变服务的系统配置的任何流水线的执行。在一个实施方案中,如果不能获取与服务相关联的锁,则变更前阶段1210指令导致流水线1200的执行失败。在一个实施方案中,如果不能在阈值时间段内获取与服务相关联的锁,则变更前阶段1210指令导致流水线1200的执行失败。因此,流水线的执行超时并在一段时间后失败。如果流水线的执行失败,则不执行后续阶段,例如,变更阶段1220和变更后阶段1230。Pre-change phase 1210 includes instructions for acquiring locks associated with a service. Post-change phase 1230 includes instructions for releasing locks acquired in pre-change phase 1210. In one embodiment, information identifying locks associated with each service is stored in system configuration freeze metadata storage 1130. Therefore, pipeline generator module 320 can access locks associated with the pipeline and generate instructions for acquiring locks, and include the generated instructions in the pre-change pipeline. Alternatively, pipeline generator module 320 can generate instructions for accessing system configuration freeze metadata storage 1130 to obtain identifiers of locks associated with services and then acquiring the locks. If a lock cannot be acquired, for example, if the lock has previously been acquired by another entity and has not been released, the instructions for acquiring locks in pre-change phase 1210 cause pipeline execution to be paused. For example, system configuration freeze module 350 acquires locks for all services that need to be frozen during a time interval, thereby pausing the execution of any pipeline attempting to change the system configuration of a service during the time interval. In one implementation, if the lock associated with the service cannot be acquired, the pre-change stage 1210 instruction causes pipeline 1200 to fail. In another implementation, if the lock associated with the service cannot be acquired within a threshold time period, the pre-change stage 1210 instruction causes pipeline 1200 to fail. Therefore, pipeline execution times out and fails after a certain period. If pipeline execution fails, subsequent stages, such as change stage 1220 and post-change stage 1230, are not executed.

系统配置冻结的过程The process of freezing system configuration

图13示出根据实施方案的用于对部署在云平台中的数据中心上的服务的系统配置进行改变的过程。数据中心生成模块220基于独立于云平台的声明性规范生成一个或多个数据中心1310,例如,如图6和7中所示的过程中所示。每个数据中心都有部署在数据中心中的服务集。软件发布管理模块230接收工件版本映射1320,该工件版本映射包括描述需要对在数据中心中安装和执行的服务进行的任何改变的信息。例如,改变可以包括向数据中心添加新服务、移除当前部署在数据中心中的服务、改变服务的配置、为服务部署软件工件的新版本等。Figure 13 illustrates the process for changing the system configuration of services deployed on a data center in a cloud platform, according to an implementation scheme. The data center generation module 220 generates one or more data centers 1310 based on a cloud platform-independent declarative specification, as shown in Figures 6 and 7, for example. Each data center has a set of services deployed within it. The software release management module 230 receives an artifact version map 1320, which includes information describing any changes required to the services installed and executed in the data center. For example, changes may include adding a new service to the data center, removing a service currently deployed in the data center, changing the configuration of a service, deploying a new version of a software artifact for the service, etc.

软件发布管理模块230生成独立于云平台的主流水线1330,该主流水线包括变更管理阶段,例如,如图12中所示的主流水线。软件发布管理模块230编译独立于云平台的主流水线1340,以生成特定于云平台的详细流水线,该流水线包括用于根据部署在目标云平台上的数据中心上的工件版本映射来部署服务的指令。The software release management module 230 generates a cloud platform-independent mainstream pipeline 1330, which includes a change management phase, such as the mainstream pipeline shown in Figure 12. The software release management module 230 compiles a cloud platform-independent mainstream pipeline 1340 to generate a cloud platform-specific detailed pipeline, which includes instructions for deploying services based on artifact version mappings deployed on the data center of the target cloud platform.

软件发布管理模块230接收用于修改部署在数据中心实体上的服务的系统配置的指令1350。软件发布管理模块230执行特定于云平台的详细流水线,以根据工件版本映射对服务的系统配置进行适当的修改1360。特定于云平台的详细流水线包括变更阶段,其包括用于做出与数据中心实体的一个或多个软件工件相关联的改变的指令,变更前阶段,其包括用于获取锁的指令,以及变更后阶段,其用于在做出改变后释放锁。如果变更前阶段未能获取锁,则流水线的执行被暂停。The software release management module 230 receives instructions 1350 for modifying the system configuration of services deployed on the data center entity. The software release management module 230 executes a cloud platform-specific detailed pipeline to appropriately modify the system configuration of the services based on artifact version mappings 1360. The cloud platform-specific detailed pipeline includes a change phase, which includes instructions for making changes associated with one or more software artifacts of the data center entity; a pre-change phase, which includes instructions for acquiring a lock; and a post-change phase, which releases the lock after the change is made. If the lock cannot be acquired in the pre-change phase, the execution of the pipeline is suspended.

图14示出根据实施方案的用于执行配置在云平台上的数据中心的数据中心实体的系统配置冻结的整体过程。系统配置冻结模块350接收对数据中心实体执行持续时间区间的系统配置冻结的请求1410。系统配置冻结模块350识别配置用于在数据中心实体内执行的所有服务。系统配置冻结模块350可以基于数据中心实体所属的数据中心的声明性规范来识别服务。执行系统配置冻结的请求指定了请求强制执行系统配置冻结的时间区间。Figure 14 illustrates the overall process for performing a system configuration freeze on a data center entity configured on a cloud platform, according to an implementation scheme. The system configuration freeze module 350 receives a request 1410 to perform a system configuration freeze on the data center entity for a duration interval. The system configuration freeze module 350 identifies all services configured to be performed within the data center entity. The system configuration freeze module 350 may identify services based on the declarative specifications of the data center to which the data center entity belongs. The request to perform a system configuration freeze specifies the time interval for which the system configuration freeze is requested to be enforced.

系统配置冻结模块350获取与时间区间内的数据中心实体的服务相关联的锁1430。在一个实施方案中,一旦系统配置冻结的时间区间开始,系统配置冻结模块350访问系统配置冻结元数据存储1130,以确定对应于所标识的每个服务的锁的标识符1420,并获取对应于锁标识符的锁。The system configuration freeze module 350 acquires locks 1430 associated with services of data center entities within the time interval. In one implementation, once the system configuration freeze time interval begins, the system configuration freeze module 350 accesses the system configuration freeze metadata store 1130 to determine an identifier 1420 corresponding to each identified service, and acquires the lock corresponding to the lock identifier.

在时间区间开始之后和时间区间结束之前,软件发布管理模块230接收对修改在时间区间期间在数据中心上运行的服务的系统配置的请求1440。软件发布管理模块230执行用于部署与在数据中心实体上运行的服务相关联的软件工件的流水线1450。流水线的执行导致流水线的变更前阶段的执行,从而导致流水线执行暂停,直到获取锁。在时间区间完成之后,系统配置冻结模块350释放为在数据中心实体上运行的服务获取的锁1460。结果,流水线的变更前阶段能够获取锁并导致流水线执行完成1470,从而允许在时间区间之后执行所请求的对服务的改变。根据一些实施方案,在变更阶段完成并且对系统配置进行所请求的修改之后,变更后阶段释放为服务获取的锁。此过程确保阻止任何试图修改数据中心实体上运行的服务的流水线在时间区间期间进行修改。After the start of the time interval and before its end, the software release management module 230 receives a request 1440 for modifying the system configuration of a service running on the data center entity during the time interval. The software release management module 230 executes a pipeline 1450 for deploying software artifacts associated with the service running on the data center entity. The execution of the pipeline results in the execution of a pre-change phase, causing the pipeline execution to pause until a lock is acquired. After the time interval ends, the system configuration freeze module 350 releases the lock acquired for the service running on the data center entity 1460. As a result, the pre-change phase of the pipeline is able to acquire the lock and cause the pipeline execution to complete 1470, thereby allowing the requested changes to the service to be executed after the time interval. According to some implementations, after the change phase is completed and the requested modifications to the system configuration are made, the post-change phase releases the lock acquired for the service. This process ensures that any pipeline attempting to modify the service running on the data center entity is prevented from doing so during the time interval.

根据一些实施方案,变更前阶段包括确定流水线的变更前阶段是否超过阈值时间未能获取锁的指令。如果流水线的变更前阶段超过阈值时间未能获取锁,则流水线的执行失败。因此,向用户提供流水线执行失败的指示,并且用户必须发送后续指令以对服务进行系统配置修改。According to some implementation schemes, the pre-change phase includes instructions to determine whether the pipeline's pre-change phase has failed to acquire a lock within a threshold time. If the pipeline's pre-change phase fails to acquire a lock within the threshold time, the pipeline execution fails. Therefore, the user is provided with an indication of pipeline execution failure, and the user must send subsequent instructions to modify the system configuration of the service.

在一个实施方案中,如果当请求数据中心实体的系统配置冻结时,正在执行修改数据中心实体的服务的系统配置的流水线,则系统推迟系统配置冻结,并相应地延迟发生系统配置冻结的区间,直到当前流水线执行完成。然而,系统阻止任何可能改变数据中心实体的服务的系统配置的新流水线执行开始,直到系统配置冻结完成。这是因为当前执行的流水线具有与服务相关联的锁,从而导致当系统配置冻结模块350试图获取数据中心实体的服务上的锁时,系统配置冻结请求被搁置。系统管理员可以手动销毁当前正在运行的流水线,以允许系统配置冻结继续进行。In one implementation, if a pipeline modifying the system configuration of a service of a data center entity is being executed when a system configuration freeze request is requested, the system postpones the system configuration freeze and correspondingly delays the interval in which the system configuration freeze occurs until the current pipeline completes execution. However, the system prevents any new pipeline execution that might change the system configuration of the data center entity's services from starting until the system configuration freeze is complete. This is because the currently executing pipeline has a lock associated with the service, causing the system configuration freeze request to be shelved when the system configuration freeze module 350 attempts to acquire the lock on the data center entity's service. The system administrator can manually destroy the currently running pipeline to allow the system configuration freeze to continue.

在一个实施方案中,如果当对数据中心实体强制执行系统配置冻结时,在流水线执行期间发生故障,则流水线执行可以导致锁被获取但未被释放。锁管理器1120执行锁垃圾收集过程,该过程检查在系统配置冻结的时间区间之后是否有任何锁仍然未被释放。如果锁管理器1120在时间区间之后识别出与数据中心实体的服务相关联的任何锁,则锁管理器1120释放这些锁。In one implementation, if a failure occurs during pipelined execution when a system configuration freeze is forcibly executed on a data center entity, the pipelined execution may result in locks being acquired but not released. Lock manager 1120 performs a lock garbage collection process that checks if any locks remain unreleased after the system configuration freeze time interval. If lock manager 1120 identifies any locks associated with the services of the data center entity after the time interval, lock manager 1120 releases these locks.

在一些实施方案中,锁与表示预期获取锁的时间长度的估计的持续时间相关联。系统可以使用锁的持续时间作为流水线执行所花费的时间的估计。系统可以基于某些流水线执行的预期持续时间对其进行优先级排序,例如,较短的流水线可以优先于花费明显较长的流水线。然而,如果流水线执行花费的时间比为锁指定的持续时间长,系统只会记录差异。系统维护服务列表,对于该服务列表,指定的锁持续时间明显低于获取锁的实际持续时间。系统对这些流水线进行优先级排序,不同于具有为锁指定的精确持续时间的其他流水线。在一个实施方案中,系统基于流水线的过去执行时间自动确定锁持续时间。In some implementations, a lock is associated with an estimated duration representing the expected length of time it will take to acquire the lock. The system can use the lock duration as an estimate of the time spent executing a pipeline. The system can prioritize certain pipelines based on their expected execution durations; for example, shorter pipelines may be prioritized over those that take significantly longer. However, if a pipeline execution takes longer than the duration specified for the lock, the system only logs the difference. The system maintains a list of services for which the specified lock duration is significantly shorter than the actual time it takes to acquire the lock. The system prioritizes these pipelines differently from other pipelines that have a precise duration specified for the lock. In one implementation, the system automatically determines the lock duration based on the pipeline's past execution time.

在一个实施方案中,系统配置冻结与优先级相关联。修改服务的请求也与优先级测量相关联。如果在系统配置冻结区间期间,软件发布管理模块230接收到服务修改请求,使得服务修改请求的优先级高于系统配置冻结的优先级,则允许数据中心实体的服务修改请求在时间区间期间进行,而不管系统配置冻结。系统提供这种机制,以便如果在系统配置冻结(例如暂停)期间可能发生的问题需要一些紧急修复,则允许继续进行修复。In one implementation, system configuration freezes are associated with priority. Requests to modify services are also associated with priority measurements. If, during a system configuration freeze period, the software release management module 230 receives a service modification request with a priority higher than the system configuration freeze priority, the service modification request for the data center entity is allowed to proceed during the time interval, regardless of the system configuration freeze. This mechanism allows for continued repairs should any issues arise during a system configuration freeze (e.g., a pause) that require urgent fixes.

变更处理模块的系统架构System architecture of the change processing module

图15示出根据实施方案的变更处理模块的系统架构。变更处理模块355包括变更确定模块1510、变更管理客户端1520、事件队列管理器1530、事件监听器和事件队列存储1550。其他实施方案可以包括比图15中本文所指示的部件更多或更少的部件。Figure 15 illustrates the system architecture of the change processing module according to an implementation scheme. The change processing module 355 includes a change determination module 1510, a change management client 1520, an event queue manager 1530, an event listener, and an event queue store 1550. Other implementations may include more or fewer components than those indicated herein in Figure 15.

变更确定模块1510识别正在对安装在一个或多个数据中心中的服务执行的改变。在一个实施方案中,变更确定模块1510接收指令集,该指令集识别与数据中心上的服务的当前配置相比要执行的改变。例如,改变可以指定要添加的新服务、要删除的现有服务、需要修改的服务配置等。The change determination module 1510 identifies changes being performed on services installed in one or more data centers. In one implementation, the change determination module 1510 receives a set of instructions that identify changes to be performed compared to the current configuration of the services on the data centers. For example, the change may specify a new service to be added, an existing service to be deleted, or a service configuration that needs to be modified.

在一个实施方案中,变更确定模块1510存储工件版本映射的各种版本。软件发布管理模块230在目标云计算机上存储与数据中心的当前配置相对应的工件版本映射的版本V1。软件发布管理模块230接收需要在目标云计算机上实现的工件版本映射的版本V2。工件版本映射的版本V2与版本V1相比有差异。变更确定模块1510比较工件版本映射的两个版本以确定它们之间的差异。因此,变更确定模块1510将接收到的工件版本映射的新版本与当前正在部署的工件版本映射的先前版本进行比较,以识别在工件版本映射的新版本中请求的改变。这些改变可以包括需要安装在特定数据中心实体上的新服务、需要在特定数据中心实体上改变(例如升级)的现有服务的版本、需要从特定数据中心实体中移除的服务等。流水线生成器生成主流水线来实现请求的对服务配置的改变。In one implementation, the change determination module 1510 stores various versions of the artifact version map. The software release management module 230 stores version V1 of the artifact version map corresponding to the current configuration of the data center on the target cloud computer. The software release management module 230 receives version V2 of the artifact version map that needs to be implemented on the target cloud computer. Version V2 of the artifact version map differs from version V1. The change determination module 1510 compares the two versions of the artifact version map to determine the differences between them. Therefore, the change determination module 1510 compares the received new version of the artifact version map with a previous version of the artifact version map currently being deployed to identify the changes requested in the new version of the artifact version map. These changes may include new services that need to be installed on a specific data center entity, versions of existing services that need to be modified (e.g., upgraded) on a specific data center entity, services that need to be removed from a specific data center entity, etc. A pipeline generator generates a main pipeline to implement the requested changes to the service configuration.

变更管理客户端1520与变更管理系统交互,以存储描述正在执行的改变的信息。变更管理系统可以是存储描述改变的记录并管理与改变相关的任务的任何系统,例如,发送与改变相关的警报或消息、接收对特定改变的批准等。变更管理客户端1520调用变更管理系统的API来与变更管理系统交互。变更管理系统可以是作为服务提供变更管理的外部系统。The change management client 1520 interacts with the change management system to store information describing the changes being implemented. The change management system can be any system that stores records describing changes and manages tasks related to those changes, such as sending change-related alerts or messages, receiving approvals for specific changes, etc. The change management client 1520 calls the change management system's API to interact with it. The change management system can be an external system that provides change management as a service.

事件队列管理器1530创建并管理存储与部署任务相关的事件的队列。事件队列管理器1530可以为需要被通知特定事件的各种团队创建队列。例如,团队可能负责数据中心声明性规范中定义的数据中心实体。变更处理模块识别特定事件,如在数据中心实体中安装的服务的失败或成功事件,并通知团队。事件监听器1540监听流水线执行引擎360中的事件。事件描述了为每个流水线执行的详细动作,例如,特定阶段是成功执行还是失败执行,或者特定阶段是否生成了消息,等。事件监听器1540对事件进行分类,并将它们与特定的数据中心实体相关联。因此,事件监听器1540将描述事件的信息提供给事件队列管理器1530以存储在事件队列中。事件队列存储1550存储不同的队列,例如,在数据中心的声明性规范中定义的一个或多个团队的队列。Event Queue Manager 1530 creates and manages queues that store events related to deployment tasks. Event Queue Manager 1530 can create queues for various teams that need to be notified of specific events. For example, a team might be responsible for a data center entity defined in the data center declarative specification. The change processing module identifies specific events, such as the failure or success of a service installed in the data center entity, and notifies the team. Event Listener 1540 listens for events in the pipeline execution engine 360. Events describe detailed actions performed for each pipeline execution, such as whether a particular stage executed successfully or failed, or whether a message was generated for a particular stage, etc. Event Listener 1540 categorizes events and associates them with specific data center entities. Therefore, Event Listener 1540 provides information describing the event to Event Queue Manager 1530 for storage in event queues. Event Queue Store 1550 stores different queues, such as queues for one or more teams defined in the data center declarative specification.

图16示出根据实施方案的用于管理改变的示例性主流水线。主流水线包括类似于图8中所示的与不同系统环境相对应的那些阶段,通过这些阶段,软件工件被推进以部署到数据中心。因此,主流水线1600包括数据中心不同环境的阶段,包括开发环境、测试环境、金丝雀环境和生产环境。主流水线还包括变更管理阶段,因此,主流水线1600包括开发环境阶段810,该开发环境阶段馈送到测试环境阶段820,该测试环境阶段馈送到变更管理阶段1610,该变更管理阶段馈送到金丝雀环境流水线830,该金丝雀环境流水线馈送到生产环境流水线840,该生产环境流水线馈送到变更关闭阶段1620。每个阶段表示为该阶段执行的流水线。Figure 16 illustrates an exemplary mainstream pipeline for managing changes according to an implementation scheme. The mainstream pipeline includes stages similar to those shown in Figure 8, corresponding to different system environments, through which software artifacts are advanced for deployment to the data center. Therefore, mainstream pipeline 1600 includes stages for different data center environments, including development, testing, canary, and production environments. The mainstream pipeline also includes a change management stage; thus, mainstream pipeline 1600 includes a development environment stage 810 that feeds to a testing environment stage 820, which feeds to a change management stage 1610, which feeds to a canary environment pipeline 830, which feeds to a production environment pipeline 840, which feeds to a change closure stage 1620. Each stage is represented as the pipeline executed in that stage.

主流水线表示形成层次结构的流水线集,例如,对应于由数据中心形成的数据中心实体的层次结构中的每个数据中心实体的流水线,如用于生成数据中心的声明性规范所指定的。每个流水线的变更管理阶段执行与管理由主流水线表示的改变相关的动作。例如,变更管理阶段包括用于执行与变更管理系统的交互的指令。A mainline pipeline represents a set of pipelines that form a hierarchical structure. For example, it might correspond to a pipeline for each data center entity in a hierarchy of data center entities, as specified in the declarative specification used to generate the data center. The change management phase of each pipeline executes and manages actions related to changes represented by the mainline. For example, the change management phase includes instructions for performing interactions with the change management system.

在一个实施方案中,变更管理阶段包括用于在变更管理系统中创建变更案例的指令,该变更案例表示由主流水线执行的变更集合。变更管理系统的变更案例表示描述对数据中心的服务执行的变更集合的信息。变更集合可以作为一个或多个记录存储在变更管理系统的数据库中。In one implementation, the change management phase includes instructions for creating change cases in the change management system, each change case representing a set of changes performed by the mainline. The change cases in the change management system represent information describing a set of changes performed on services within the data center. The change sets may be stored as one or more records in the change management system's database.

在一个实施方案中,配置文件(例如,工件版本映射)包括描述现有变更情况的信息,该现有变更情况将用于存储描述对数据中心的服务执行的变更集合的信息。例如,用户(如系统管理员)可以创建变更案例,并在配置文件中提供以供变更管理阶段使用。In one implementation, the configuration file (e.g., an artifact version map) includes information describing existing change cases that will be used to store information describing the set of changes performed on services in the data center. For example, users (such as system administrators) can create change cases and provide them in the configuration file for use during the change management phase.

由主流水线表示的各种流水线的变更管理阶段向变更管理系统提供各种服务的部署状态,以便与变更案例相关联地进行存储。例如,特定服务的流水线向变更管理系统提供该服务的部署状态。状态可以指示部署是否成功、部署是否失败、部署是否生成错误或警告,等。The change management stages of various pipelines, represented by the main pipeline, provide the change management system with the deployment status of various services for storage in association with change cases. For example, a pipeline for a specific service provides the change management system with the deployment status of that service. The status can indicate whether the deployment was successful, failed, or generated errors or warnings, etc.

如果工件版本映射指定的所有服务的部署成功,则变更关闭阶段关闭变更案例。关闭变更案例防止对变更案例进行进一步的修改,例如,可能不会在变更案例中存储进一步的信息。然而,用户可以查看存储在变更案例中的信息,例如,用于审核对服务所做的特定改变。If the deployment of all services specified in the artifact version mapping is successful, the change closure phase closes the change case. Closing the change case prevents further modifications to it; for example, further information may not be stored in the change case. However, users can view the information stored in the change case, for example, to audit specific changes made to the service.

变更管理的过程Change management process

图17示出根据实施方案的配置在云平台上的数据中心上部署的服务的变更管理的整体过程。数据中心生成模块220基于独立于云平台的声明性规范生成一个或多个数据中心1710,例如,如图6和7中所示的过程中所示。每个数据中心都有部署在数据中心中的服务集。软件发布管理模块230接收工件版本映射1720,该工件版本映射包括描述需要对在数据中心中安装和执行的服务进行的任何改变的信息。例如,改变可以包括向数据中心添加新服务、移除当前部署在数据中心中的服务、改变服务的配置、为服务部署软件工件的新版本等。Figure 17 illustrates the overall process for change management of services deployed on a data center on a cloud platform according to the configuration of the implementation scheme. The data center generation module 220 generates one or more data centers 1710 based on a declarative specification independent of the cloud platform, as shown in the processes illustrated in Figures 6 and 7. Each data center has a set of services deployed within it. The software release management module 230 receives an artifact version map 1720, which includes information describing any changes required to the services installed and executed in the data center. For example, changes may include adding a new service to the data center, removing a service currently deployed in the data center, changing the configuration of a service, deploying a new version of a software artifact for the service, etc.

软件发布管理模块230生成独立于云平台的主流水线1730,该主流水线包括变更管理阶段,例如,如图16中所示的主流水线。独立于云平台的主流水线还可以包括流水线末端的变更关闭阶段。软件发布管理模块230编译独立于云平台的主流水线,以生成特定于云平台的详细流水线1740,该流水线包括用于根据部署在目标云平台上的数据中心上的工件版本映射来部署服务的指令。The software release management module 230 generates a cloud-platform-independent mainstream pipeline 1730, which includes a change management phase, such as the mainstream pipeline shown in Figure 16. The cloud-platform-independent mainstream pipeline may also include a change closure phase at the end of the pipeline. The software release management module 230 compiles the cloud-platform-independent mainstream pipeline to generate a cloud-platform-specific detailed pipeline 1740, which includes instructions for deploying services based on artifact version mappings deployed on the data center of the target cloud platform.

软件发布管理模块230接收源代码1750,用于编译以构建软件工件并将它们部署在目标云平台上。软件发布管理模块230执行特定于云平台的详细流水线,以根据工件版本映射部署软件工件的适当版本1760。特定于云平台的详细流水线的执行导致根据工件版本映射部署的每个服务的变更管理阶段的执行。主流水线的变更管理阶段的执行可以导致变更管理系统中变更案例的创建。用于单个服务的流水线的变更管理阶段的执行发送流水线的执行状态,用于与变更管理系统中的变更案例相关联地存储。用于单个服务的流水线的变更管理阶段的执行可以导致流水线在将流水线处理的软件工件推进至后续阶段之前等待批准,例如,从测试阶段到金丝雀阶段或者从金丝雀阶段到生产阶段。主流水线的变更关闭阶段的执行导致变更案例被关闭,使得在变更案例中不能记录更多的修改。Software release management module 230 receives source code 1750, which is used to compile and build software artifacts and deploy them on the target cloud platform. Software release management module 230 executes a cloud platform-specific detailed pipeline to deploy the appropriate version 1760 of the software artifacts according to the artifact version mapping. The execution of the cloud platform-specific detailed pipeline results in the execution of a change management phase for each service deployed according to the artifact version mapping. The execution of the change management phase of the main pipeline can result in the creation of change cases in the change management system. The execution of the change management phase for a single service pipeline sends the pipeline's execution status for storage associated with change cases in the change management system. The execution of the change management phase for a single service pipeline can cause the pipeline to await approval before advancing the software artifacts processed by the pipeline to subsequent stages, such as from the testing phase to the canary phase or from the canary phase to the production phase. The execution of the change closure phase of the main pipeline results in the closure of the change case, preventing further modifications from being recorded in the change case.

图18示出根据实施方案的由主流水线的变更管理阶段执行的过程。软件发布管理模块230在变更管理系统中创建变更案例1810。独立于云平台的主流水线包括流水线集,其包括用于在数据中心中部署或修改的每个服务的至少一个流水线。该集中的每个流水线都包括变更管理阶段。Figure 18 illustrates the process executed by the change management phase of the mainstream pipeline according to the implementation scheme. The software release management module 230 creates a change case 1810 in the change management system. The cloud-independent mainstream pipeline comprises a pipeline set that includes at least one pipeline for each service deployed or modified in the data center. Each pipeline in this set includes a change management phase.

软件发布管理模块230对与数据中心中的服务相关联的每个流水线重复步骤1820、1830和1840。软件发布管理模块230执行与服务相关联的流水线1820。软件发布管理模块230向变更管理系统发送流水线的执行状态1830。软件发布管理模块230接收进入下一阶段的批准1840。可以从与服务相关联的用户或团队接收批准。如果软件发布管理模块230接收到未批准推进至下一阶段的指示,则软件发布管理模块230执行步骤以重复流水线的一些步骤,例如,在接收到修订的源代码或修改的软件工件之后。例如,如果通过的测试用例的数量低于阈值,则可能会拒绝批准。因此,修改源代码,并重复步骤,以便至少通过阈值数量的测试用例,从而接收批准。一旦批准流水线集中的所有流水线并且成功执行流水线集,软件发布管理模块230就执行关闭变更阶段,该关闭变更阶段导致变更案例被关闭。The software release management module 230 repeats steps 1820, 1830, and 1840 for each pipeline associated with a service in the data center. The software release management module 230 executes the pipeline associated with the service 1820. The software release management module 230 sends the pipeline's execution status 1830 to the change management system. The software release management module 230 receives approval to proceed to the next stage 1840. Approval can be received from the user or team associated with the service. If the software release management module 230 receives an instruction to proceed to the next stage without approval, the software release management module 230 executes steps to repeat some steps of the pipeline, for example, after receiving revised source code or modified software artifacts. For example, if the number of passed test cases is below a threshold, approval may be rejected. Therefore, the source code is modified, and the steps are repeated to pass at least the threshold number of test cases, thereby receiving approval. Once all pipelines in the pipeline set are approved and the pipeline set is successfully executed, the software release management module 230 executes a change closure phase, which results in the change cases being closed.

在一个实施方案中,软件发布管理模块230监测流水线执行引擎记录的事件,这些事件指示流水线执行引擎执行的每个动作的状态。软件发布管理模块230分析数据中心上下文中的每个事件,以确定该事件是否足够重要以记录在变更案例中,然后将描述该事件的信息发送到队列以报告给与服务相关联的团队。In one implementation, the software release management module 230 monitors events logged by the pipeline execution engine, which indicate the status of each action performed by the pipeline execution engine. The software release management module 230 analyzes each event in the data center context to determine if the event is significant enough to be recorded in a change case, and then sends information describing the event to a queue for reporting to the team associated with the service.

图19示出根据实施方案的用于管理用于收集与服务配置中的改变相关的事件信息的队列的过程。变更处理模块355的事件监听器1540监听来自流水线执行引擎的事件1910。对于每个事件,变更处理模块355执行以下步骤1920、1930、1940和1940。变更处理模块355确定为其生成事件的服务。因此,变更处理模块355评估该事件,以确定该事件是否足够重要以被变更管理系统记录并报告给与该服务相关联的团队1920。如果变更处理模块355确定事件足够重要以被记录和报告,则变更处理模块355识别与该服务相关联的团队的队列1930。变更处理模块355向所识别的队列发送事件信息1940。该事件经由队列报告给与服务相关联的团队。变更处理模块355基于与变更案例相关联的用于存储的事件向变更管理系统发送状态更新1950。Figure 19 illustrates a process according to an implementation scheme for managing queues used to collect event information related to changes in service configuration. The event listener 1540 of the change processing module 355 listens for events 1910 from the pipeline execution engine. For each event, the change processing module 355 performs the following steps 1920, 1930, 1940, and 1940. The change processing module 355 determines the service for which the event was generated. Therefore, the change processing module 355 evaluates the event to determine if it is significant enough to be logged and reported by the change management system to the team associated with that service 1920. If the change processing module 355 determines that the event is significant enough to be logged and reported, the change processing module 355 identifies the queue 1930 for the team associated with that service. The change processing module 355 sends the event information to the identified queue 1940. The event is reported to the team associated with the service via the queue. The change processing module 355 sends a status update 1950 to the change management system based on the events stored associated with the change case.

计算机架构Computer Architecture

图20是示出根据实施方案的用作图1的环境100中所示的实体之一的典型计算机系统的功能视图的高级框图。示出联接到芯片组2004的至少一个处理器2002。还联接到芯片组2004的是存储器2006、存储设备2008、键盘2010、图形适配器2012、指示设备2014和网络适配器2016。显示器2018联接到图形适配器2012。在一个实施方案中,由存储器控制器集线器2020和I/O控制器集线器2022提供芯片组2004的功能。在另一个实施方案中,存储器2006直接联接到处理器2002而不是芯片组2004。Figure 20 is a high-level block diagram illustrating a functional view of a typical computer system used as one of the entities shown in environment 100 of Figure 1, according to an embodiment. At least one processor 2002 is shown connected to chipset 2004. Also connected to chipset 2004 are memory 2006, storage device 2008, keyboard 2010, graphics adapter 2012, indicating device 2014, and network adapter 2016. Display 2018 is connected to graphics adapter 2012. In one embodiment, the functionality of chipset 2004 is provided by memory controller hub 2020 and I/O controller hub 2022. In another embodiment, memory 2006 is directly connected to processor 2002 instead of chipset 2004.

存储设备2008是非暂时性计算机可读存储介质,如硬盘驱动器、光盘只读存储器(CD-ROM)、DVD或固态存储器设备。存储器2006保存由处理器2002使用的指令和数据。指示设备2014可以是鼠标、轨迹球或其他类型的指示设备,并且与键盘2010结合使用以将数据输入到计算机系统200中。图形适配器2012在显示器2018上显示图像和其他信息。网络适配器2016将计算机系统2000联接到网络。Storage device 2008 is a non-transitory computer-readable storage medium, such as a hard disk drive, optical disc read-only memory (CD-ROM), DVD, or solid-state storage device. Memory 2006 stores instructions and data used by processor 2002. Pointing device 2014 may be a mouse, trackball, or other type of pointing device and is used in conjunction with keyboard 2010 to input data into computer system 200. Graphics adapter 2012 displays images and other information on monitor 2018. Network adapter 2016 connects computer system 2000 to a network.

如本领域中已知的,计算机2000可以具有与图20中所示的那些不同的和/或其他部件。此外,计算机2000可以缺少某些图示的部件。例如,充当多租户系统110的计算机系统2000可以缺少键盘2010和指示设备2014。此外,存储设备2008可以是本地的和/或远离计算机2000的(例如体现在存储区域网络(SAN)内)。As is known in the art, computer 2000 may have different and/or other components than those shown in FIG. 20. Furthermore, computer 2000 may lack certain illustrated components. For example, computer system 2000 acting as multi-tenant system 110 may lack keyboard 2010 and indicating device 2014. Additionally, storage device 2008 may be local and/or remote from computer 2000 (e.g., embodied within a storage area network (SAN)).

计算机2000适于执行用于提供本文描述的功能的计算机模块。如本文所使用的,术语“模块”指的是用于提供指定功能的计算机程序指令和其他逻辑。模块可以用硬件、软件和/或固件来实现。模块可以包括一个或多个过程,和/或仅由过程的一部分提供。模块通常存储在存储设备2008上,加载到存储器2006中,并由处理器2002执行。Computer 2000 is adapted to execute computer modules for providing the functions described herein. As used herein, the term "module" refers to computer program instructions and other logic for providing specified functions. Modules may be implemented in hardware, software, and/or firmware. A module may include one or more processes, and/or be provided only by a portion of those processes. Modules are typically stored on storage device 2008, loaded into memory 2006, and executed by processor 2002.

系统环境的实体所使用的计算机系统2000的类型可以根据实施方案和实体所使用的处理能力而变化。例如,客户端设备可以是具有有限处理能力的移动电话、小型显示器2018,并且可以缺少指示设备2014。相比之下,多租户系统或云平台可以包括协同工作以提供本文描述的功能的多个刀片服务器。The type of computer system 2000 used by the entities in the system environment can vary depending on the implementation scheme and the processing power used by the entities. For example, client devices may be mobile phones with limited processing power, small displays 2018, and may lack indicating devices 2014. In contrast, multi-tenant systems or cloud platforms may include multiple blade servers working together to provide the functionality described herein.

其他注意事项Other precautions

部件的特定命名、术语的大写、属性、数据结构或任何其他编程或结构方面不是强制性的或重要的,并且实现所描述的实施方案的机制可以具有不同的名称、格式或协议。此外,如所描述的,系统可以经由硬件和软件的组合来实现,或者完全以硬件元件来实现。此外,本文描述的各种系统部件之间的功能的特定划分仅仅是示例性的,而不是强制性的;由单个系统部件执行的功能可以替代地由多个部件执行,并且由多个部件执行的功能可以替代地由单个部件执行。Specific naming of components, capitalization of terms, attributes, data structures, or any other programming or structural aspects are not mandatory or important, and the mechanisms for implementing the described embodiments may have different names, formats, or protocols. Furthermore, as described, the system may be implemented via a combination of hardware and software, or entirely with hardware components. Moreover, the specific division of functionality among the various system components described herein is merely exemplary and not mandatory; a function performed by a single system component may alternatively be performed by multiple components, and a function performed by multiple components may alternatively be performed by a single component.

以上描述的一些部分根据对信息的操作的算法和符号表示来呈现特征。这些算法描述和表示是数据处理技术领域的技术人员用来最有效地将其工作的实质传达给本领域的其他技术人员的方式。虽然在功能上或逻辑上描述了这些操作,但被理解为由计算机程序来实现。此外,在不丧失通用性的情况下,将这些操作安排称为模块或功能名称有时也被证明是方便的。Some of the descriptions above are characterized by the algorithms and symbolic representations of the operations on information. These algorithmic descriptions and representations are the means by which those skilled in the art of data processing most effectively communicate the essence of their work to others skilled in the art. Although these operations are described functionally or logically, they are understood to be implemented by computer programs. Furthermore, it is sometimes convenient, without loss of generality, to refer to these operations as modules or functional names.

除非从上面的讨论中明确地说明,否则应该理解,在整个描述中,利用诸如“处理”或“计算)”或“算数”或“确定”或“显示”等术语的讨论是指计算机系统或类似电子计算设备的动作和过程,其操纵和转换计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内表示为物理(电子)量的数据。Unless explicitly stated in the discussion above, it should be understood that throughout the description, the use of terms such as “processing” or “computing” or “arithmetic” or “determining” or “displaying” refers to the actions and processes of a computer system or similar electronic computing device that manipulate and convert data represented as physical (electronic) quantities within computer system memory or registers or other such information storage, transmission or display devices.

本文描述的某些实施方案包括以算法形式描述的处理步骤和指令。应当注意,实施方案的处理步骤和指令可以体现在软件、固件或硬件中,并且当体现在软件中时,可以下载以驻留在实时网络操作系统使用的不同平台上并从其进行操作。Some implementations described herein include processing steps and instructions described in algorithmic form. It should be noted that the processing steps and instructions of the implementation can be embodied in software, firmware, or hardware, and when embodied in software, can be downloaded to reside on and operated from different platforms used by a real-time network operating system.

所描述的实施方案还涉及用于执行本文的操作的装置。装置可以为所需目的而特别构造,或者其可以包括通用计算机,该通用计算机由存储在计算机可读介质上的计算机程序选择性地激活或重新配置,该计算机可读介质可以被计算机访问。这种计算机程序可以存储在非暂时性计算机可读存储介质中,例如但不限于包括软盘、光盘、CD-ROM、磁光盘的任何类型的盘、只读存储器、随机存取存储器、EPROM、EEPROM、磁卡或光卡、专用集成电路(ASIC)、或适用于存储电子指令的任何类型的介质,并且每种介质都联接到计算机系统总线。此外,说明书中提到的计算机可以包括单个处理器,或者可以是采用多个处理器设计以提高计算能力的架构。The described embodiments also relate to means for performing the operations described herein. The means may be specifically constructed for the desired purpose, or it may include a general-purpose computer selectively activated or reconfigured by a computer program stored on a computer-readable medium accessible to a computer. Such a computer program may be stored in a non-transitory computer-readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magneto-optical disks, read-only memory, random access memory, EPROM, EEPROM, magnetic cards or optical cards, application-specific integrated circuits (ASICs), or any type of medium suitable for storing electronic instructions, and each medium is coupled to a computer system bus. Furthermore, the computer mentioned in the specification may include a single processor, or may be an architecture employing multiple processors to increase computing power.

本文提出的算法和操作与任何具体计算机或其他装置没有本质的关系。各种通用系统也可以与根据本文教导的程序一起使用,或者可以证明构造更专用的装置来执行所需的方法步骤是方便的。对于本领域的技术人员来说,各种这些系统所需的结构以及等效的变体将是显而易见的。此外,本实施方案不参考任何具体编程语言来描述。应当理解,可以使用各种编程语言来实现如本文所描述的实施方案的教导。The algorithms and operations presented herein are not substantially related to any specific computer or other device. Various general-purpose systems can also be used with the programs taught herein, or it can be demonstrated that it is convenient to construct more specialized devices to perform the required method steps. The necessary structures for various such systems, as well as equivalent variations, will be apparent to those skilled in the art. Furthermore, this embodiment is described without reference to any specific programming language. It should be understood that the teachings of the embodiments described herein can be implemented using various programming languages.

实施方案非常适用于多种拓扑上的各种各样的计算机网络系统。在该领域中,大型网络的配置和管理包括存储设备和计算机,其通过网络(如互联网)通信地联接到不同计算机和存储设备。The implementation scheme is well-suited for a wide variety of computer network systems across diverse topologies. In this field, the configuration and management of large networks involves storage devices and computers communicatively connected to different computers and storage devices via a network (such as the Internet).

最后,应当注意,说明书中使用的语言主要是为了可读性和指导性目的而选择的,并且可以不是为了描绘或限定本发明主题而选择的。因此,实施方案的公开旨在是说明性的,但不是限制性的。Finally, it should be noted that the language used in this specification has been chosen primarily for readability and instructional purposes, and may not be intended to depict or limit the subject matter of the invention. Therefore, the disclosure of embodiments is intended to be illustrative, not restrictive.

Claims (20)

1.一种用于管理对配置在云平台上的数据中心中执行的服务的改变的计算机实现的方法,所述方法包括:1. A computer-implemented method for managing changes to services configured to run in a data center on a cloud platform, the method comprising: 访问配置在目标云平台上的数据中心,所述数据中心执行服务集,所述数据中心包括数据中心实体的层次结构,其中每个数据中心实体包括(1)一个或多个服务或(2)一个或多个其他数据中心实体;Access a data center configured on a target cloud platform, the data center executing a set of services, the data center including a hierarchy of data center entities, wherein each data center entity includes (1) one or more services or (2) one or more other data center entities; 接收在所述数据中心上执行的所述服务集的修改;Receive modifications to the service set executed on the data center; 生成用于在目标云平台上部署服务的主流水线,所述主流水线包括:Generate a mainstream pipeline for deploying services on the target cloud platform, the mainstream pipeline comprising: 多个阶段,其包括用于部署服务的指令,每个阶段对应于系统环境,其中所述系统环境中的至少一些属于包括开发环境、测试环境和生产环境的列表;和Multiple phases, including instructions for deploying the service, each phase corresponding to a system environment, wherein at least some of said system environments belong to a list including development, testing, and production environments; and 变更管理阶段,其包括用于与变更管理系统交互的指令;The change management phase includes instructions for interacting with the change management system. 编译所述主流水线以生成对应于所述服务集的流水线集,每个生成的流水线包括变更管理阶段;和Compile the main pipelines to generate a pipeline set corresponding to the service set, each generated pipeline including a change management phase; and 执行所述流水线集中的每个,其中流水线的变更管理阶段的执行向变更管理系统提供一个或多个服务的部署状态。Each of the pipeline sets is executed, wherein the execution of the change management phase of the pipeline provides the deployment status of one or more services to the change management system. 2.根据权利要求1所述的计算机实现的方法,还包括:2. The computer-implemented method according to claim 1 further includes: 接收针对部署在所述数据中心中的特定服务中的特定改变的审计请求;Receive audit requests for specific changes to specific services deployed in the data center; 响应于接收到所述审计请求,识别来自所述变更管理系统的所述特定服务的部署状态;和In response to receiving the audit request, identify the deployment status of the specific service from the change management system; and 响应于所述审计请求,提供所述特定服务的所识别的部署状态。In response to the audit request, provide the identified deployment status of the specific service. 3.根据权利要求1所述的计算机实现的方法,其中所述主流水线的所述变更管理阶段发生在所述生产环境的阶段之前。3. The computer-implemented method according to claim 1, wherein the change management phase of the mainstream waterline occurs prior to the phase in the production environment. 4.根据权利要求1所述的计算机实现的方法,其中所述流水线集形成与所述数据中心中的数据中心实体的所述层次结构相对应的层次结构。4. The computer-implemented method according to claim 1, wherein the pipeline assembly forms a hierarchy corresponding to the hierarchy of the data center entities in the data center. 5.根据权利要求1所述的计算机实现的方法,其中所述主流水线通过系统环境集来推进服务的软件工件。5. The computer-implemented method of claim 1, wherein the mainline advances the software artifacts of the service through a system environment set. 6.根据权利要求5所述的计算机实现的方法,其中所述主流水线的所述多个阶段中的阶段包括用于执行测试用例集以便确定是否将所述软件工件从当前阶段推进至下一阶段的指令。6. The computer-implemented method of claim 5, wherein a stage of the plurality of stages of the mainline includes instructions for executing a set of test cases to determine whether to advance the software artifact from the current stage to the next stage. 7.根据权利要求1所述的计算机实现的方法,其中所述主流水线包括流水线的层次结构,其与由独立于云平台的声明性规范指定的数据中心实体的所述层次结构相对应。7. The computer-implemented method of claim 1, wherein the main pipeline includes a pipeline hierarchy corresponding to the hierarchy of data center entities specified by a declarative specification independent of the cloud platform. 8.根据权利要求7所述的计算机实现的方法,其中所述流水线的层次结构包括数据中心实例流水线,所述数据中心实例流水线包括一个或多个服务组流水线,其中所述服务组流水线包括一个或多个服务流水线。8. The computer-implemented method of claim 7, wherein the pipeline hierarchy includes a data center instance pipeline, the data center instance pipeline includes one or more service group pipelines, and the service group pipeline includes one or more service pipelines. 9.根据权利要求7所述的计算机实现的方法,其中生成的流水线的变更管理阶段包括等待批准以进行到下一阶段的指令。9. The computer-implemented method of claim 7, wherein the change management phase of the generated pipeline includes instructions to await approval before proceeding to the next phase. 10.根据权利要求1所述的计算机实现的方法,还包括:10. The computer-implemented method according to claim 1, further comprising: 接收独立于云平台的声明性规范;和Accept declarative specifications independent of the cloud platform; and 编译所述独立于云平台的声明性规范,以生成特定于云平台的数据中心表示。Compile the cloud platform-independent declarative specification to generate a cloud platform-specific data center representation. 11.根据权利要求10所述的计算机实现的方法,其中编译所述独立于云平台的声明性规范包括:11. The computer-implemented method of claim 10, wherein compiling the cloud-independent declarative specification comprises: 从所述独立于云平台的声明性规范生成所述数据中心的独立于云平台的详细元数据表示的第一版本;和A first version of the cloud-independent detailed metadata representation of the data center is generated from the cloud-independent declarative specification; and 从修改后的声明性规范生成所述数据中心的所述独立于云平台的详细元数据表示的第二版本。A second version of the detailed metadata representation of the data center, independent of the cloud platform, is generated from the modified declarative specification. 12.根据权利要求11所述的计算机实现的方法,还包括:12. The computer-implemented method according to claim 11, further comprising: 基于所述独立于云平台的详细元数据表示的所述第一版本,针对所述目标云平台生成平台特定详细元数据表示;和Based on the first version of the cloud platform-independent detailed metadata representation, a platform-specific detailed metadata representation is generated for the target cloud platform; and 基于所述平台特定详细元数据表示,在所述目标云平台上部署所述数据中心。Based on the platform-specific detailed metadata representation, the data center is deployed on the target cloud platform. 13.根据权利要求10所述的计算机实现的方法,其中所述独立于云平台的声明性规范包括一个或多个数据中心实例的定义,每个数据中心实例包括一个或多个服务组,其中每个服务组包括服务集。13. The computer-implemented method of claim 10, wherein the cloud platform-independent declarative specification includes the definition of one or more data center instances, each data center instance including one or more service groups, wherein each service group includes a service set. 14.根据权利要求1所述的计算机实现的方法,其中经由工件版本映射指定在所述数据中心上执行的所述服务集的所述修改。14. The computer-implemented method of claim 1, wherein the modification of the service set performed on the data center is specified via artifact version mapping. 15.根据权利要求14所述的计算机实现的方法,还包括:15. The computer-implemented method according to claim 14, further comprising: 通过将所述工件版本映射与先前接收到的工件版本映射进行比较,确定在所述数据中心上执行的所述服务集的所述修改。The modification of the service set performed on the data center is determined by comparing the artifact version mapping with a previously received artifact version mapping. 16.一种用于存储指令的非暂时性计算机可读存储介质,当由计算机处理器执行时,所述指令使得所述计算机处理器执行用于在云平台中配置数据中心的步骤,所述步骤包括:16. A non-transitory computer-readable storage medium for storing instructions, which, when executed by a computer processor, cause the computer processor to perform steps for configuring a data center in a cloud platform, the steps comprising: 访问配置在目标云平台上的数据中心,所述数据中心执行服务集,所述数据中心包括数据中心实体的层次结构,其中每个数据中心实体包括(1)一个或多个服务或(2)一个或多个其他数据中心实体;Access a data center configured on a target cloud platform, the data center executing a set of services, the data center including a hierarchy of data center entities, wherein each data center entity includes (1) one or more services or (2) one or more other data center entities; 接收在所述数据中心上执行的所述服务集的修改;Receive modifications to the service set executed on the data center; 生成用于在目标云平台上部署服务的主流水线,所述主流水线包括:Generate a mainstream pipeline for deploying services on the target cloud platform, the mainstream pipeline comprising: 多个阶段,其包括用于部署服务的指令,每个阶段对应于系统环境,其中所述系统环境中的至少一些属于包括开发环境、测试环境和生产环境的列表;和Multiple phases, including instructions for deploying the service, each phase corresponding to a system environment, wherein at least some of said system environments belong to a list including development, testing, and production environments; and 变更管理阶段,其包括用于与变更管理系统交互的指令;The change management phase includes instructions for interacting with the change management system. 编译所述主流水线以生成对应于所述服务集的流水线集,每个生成的流水线包括变更管理阶段;和Compile the main pipelines to generate a pipeline set corresponding to the service set, each generated pipeline including a change management phase; and 执行所述流水线集中的每个,其中流水线的变更管理阶段的执行向变更管理系统提供一个或多个服务的部署状态。Each of the pipeline sets is executed, wherein the execution of the change management phase of the pipeline provides the deployment status of one or more services to the change management system. 17.根据权利要求16所述的非暂时性计算机可读存储介质,其中所述指令还使得所述计算机处理器执行包括以下的步骤:17. The non-transitory computer-readable storage medium of claim 16, wherein the instructions further cause the computer processor to perform the following steps: 接收针对部署在所述数据中心中的特定服务中的特定改变的审计请求;Receive audit requests for specific changes to specific services deployed in the data center; 响应于接收到所述审计请求,识别来自所述变更管理系统的所述特定服务的部署状态;和In response to receiving the audit request, identify the deployment status of the specific service from the change management system; and 响应于所述审计请求,提供所述特定服务的所识别的部署状态。In response to the audit request, provide the identified deployment status of the specific service. 18.根据权利要求16所述的非暂时性计算机可读存储介质,其中所述主流水线的所述变更管理阶段发生在所述生产环境的阶段之前。18. The non-transitory computer-readable storage medium of claim 16, wherein the change management phase of the mainstream pipeline occurs prior to the phase in the production environment. 19.根据权利要求16所述的非暂时性计算机可读存储介质,其中所述指令还使得所述计算机处理器执行包括以下的步骤:19. The non-transitory computer-readable storage medium of claim 16, wherein the instructions further cause the computer processor to perform the following steps: 通过将工件版本映射与先前接收到的工件版本映射进行比较,确定在所述数据中心上执行的所述服务集的所述修改。The modification of the service set performed on the data center is determined by comparing the artifact version mapping with a previously received artifact version mapping. 20.一种计算机系统,包括:20. A computer system, comprising: 计算机处理器;和Computer processor; and 用于存储指令的非暂时性计算机可读存储介质,当由所述计算机处理器执行时,所述指令使得所述计算机处理器执行用于在云平台中配置数据中心的步骤,所述步骤包括:A non-transitory computer-readable storage medium for storing instructions, which, when executed by the computer processor, cause the computer processor to perform steps for configuring a data center in a cloud platform, the steps including: 访问配置在目标云平台上的数据中心,所述数据中心执行服务集,所述数据中心包括数据中心实体的层次结构,其中每个数据中心实体包括(1)一个或多个服务或(2)一个或多个其他数据中心实体;Access a data center configured on a target cloud platform, the data center executing a set of services, the data center including a hierarchy of data center entities, wherein each data center entity includes (1) one or more services or (2) one or more other data center entities; 接收在所述数据中心上执行的所述服务集的修改;Receive modifications to the service set executed on the data center; 生成用于在目标云平台上部署服务的主流水线,所述主流水线包括:Generate a mainstream pipeline for deploying services on the target cloud platform, the mainstream pipeline comprising: 多个阶段,其包括用于部署服务的指令,每个阶段对应于系统环境,其中所述系统环境中的至少一些属于包括开发环境、测试环境和生产环境的列表;和Multiple phases, including instructions for deploying the service, each phase corresponding to a system environment, wherein at least some of said system environments belong to a list including development, testing, and production environments; and 变更管理阶段,其包括用于与变更管理系统交互的指令;The change management phase includes instructions for interacting with the change management system. 编译所述主流水线以生成对应于所述服务集的流水线集,每个生成的流水线包括变更管理阶段;和Compile the main pipelines to generate a pipeline set corresponding to the service set, each generated pipeline including a change management phase; and 执行所述流水线集中的每个,其中流水线的变更管理阶段的执行向变更管理系统提供一个或多个服务的部署状态。Each of the pipeline sets is executed, wherein the execution of the change management phase of the pipeline provides the deployment status of one or more services to the change management system.
HK62024091680.4A 2021-01-13 2021-01-29 System configuration freeze and change management of services deployed via continuous delivery on datacenters configured in cloud platforms HK40104187B (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/148,363 2021-01-13
US17/147,715 2021-01-13

Publications (2)

Publication Number Publication Date
HK40104187A HK40104187A (en) 2024-07-19
HK40104187B true HK40104187B (en) 2025-02-21

Family

ID=

Similar Documents

Publication Publication Date Title
CN117099079B (en) System configuration freezing and change management of services deployed via continuous delivery configured on a data center in a cloud platform
JP7666827B2 (en) Multi-substrate fault-tolerant continuous delivery of data center builds on cloud computing 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
US12056537B2 (en) Managing execution of continuous delivery pipelines for a cloud platform based data center
US10284634B2 (en) Closed-loop infrastructure orchestration templates
US11733987B2 (en) Executing shared pipelines for continuous delivery of services in cloud platforms
US20220236975A1 (en) Optimized compilation of pipelines for continuous delivery of services on datacenters configured in cloud platforms
US11349958B1 (en) Deployment of software releases on datacenters configured in cloud platforms
US12001837B2 (en) Two-way synchronization of infrastructure-as-code templates and instances
US11392361B2 (en) Software release orchestration for continuous delivery of features in a cloud platform based data center
US11848829B2 (en) Modifying a data center based on cloud computing platform using declarative language and compiler
US11403145B1 (en) Enforcing system configuration freeze of services deployed via continuous delivery on datacenters configured in cloud platforms
US12259851B2 (en) Testing templates used for implementing infrastructure as code
US20220147399A1 (en) Declarative language and compiler for provisioning and deploying data centers on cloud platforms
JP7673906B2 (en) Configuration freeze and change management for services deployed via continuous delivery on a data center configured on a cloud platform
JP7742503B2 (en) Orchestration of data center creation on cloud platforms
JP7666825B2 (en) DEPLOYING A SOFTWARE RELEASE TO A DATA CENTER CONFIGURED IN A CLOUD PLATFORM
CN118626101A (en) Implementation method, device and electronic device of CI/CD of microservice cluster
HK40104187A (en) System configuration freeze and change management of services deployed via continuous delivery on datacenters configured in cloud platforms
HK40104187B (en) System configuration freeze and change management of services deployed via continuous delivery on datacenters configured in cloud platforms
US12141111B1 (en) Equivalence testing via parallel operations of legacy and adapted systems
HK40100729A (en) Deployment of software releases on datacenters configured in cloud platforms
HK40103676A (en) Methods, media and systems for multi-substrate fault tolerant continuous delivery of datacenter builds on cloud computing platforms
HK40103676B (en) Methods, media and systems for multi-substrate fault tolerant continuous delivery of datacenter builds on cloud computing platforms