CN117120984A - 云计算平台上构建数据中心的多基层容错持续交付 - Google Patents
云计算平台上构建数据中心的多基层容错持续交付 Download PDFInfo
- Publication number
- CN117120984A CN117120984A CN202280016223.XA CN202280016223A CN117120984A CN 117120984 A CN117120984 A CN 117120984A CN 202280016223 A CN202280016223 A CN 202280016223A CN 117120984 A CN117120984 A CN 117120984A
- Authority
- CN
- China
- Prior art keywords
- data center
- control data
- tenant
- cloud platform
- pipeline
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 66
- 238000003860 storage Methods 0.000 claims description 20
- 238000012546 transfer Methods 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 7
- 238000012423 maintenance Methods 0.000 claims description 5
- 238000013500 data storage Methods 0.000 claims 2
- 230000008569 process Effects 0.000 abstract description 41
- 230000002085 persistent effect Effects 0.000 description 41
- 238000012360 testing method Methods 0.000 description 38
- 238000007726 management method Methods 0.000 description 25
- 238000011161 development Methods 0.000 description 22
- 238000004519 manufacturing process Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 14
- 230000008520 organization Effects 0.000 description 14
- 241000287219 Serinus canaria Species 0.000 description 13
- 238000013507 mapping Methods 0.000 description 11
- 230000015654 memory Effects 0.000 description 11
- 230000009471 action Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 7
- 230000014509 gene expression Effects 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000007613 environmental effect Effects 0.000 description 5
- 230000001960 triggered effect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000007796 conventional method Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000036571 hydration Effects 0.000 description 2
- 238000006703 hydration reaction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000000887 hydrating effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000005067 remediation Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2038—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1087—Peer-to-peer [P2P] networks using cross-functional networking aspects
- H04L67/1089—Hierarchical topologies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2048—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share neither address space nor persistent storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
- H04L67/306—User profiles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Stored Programmes (AREA)
Abstract
计算系统,例如,多租户系统,使用独立于云平台的云平台基础设施语言,在云平台中创建的数据中心中部署软件工件。该系统使用具有服务集组的控制数据中心,用于配置其他数据中心,例如,用于执行对其他数据中心的软件工件的持续交付。该系统使用主控制数据中心和辅助控制数据中心。主控制数据中心配置租户数据中心的基础设施,例如,通过根据租户数据中心的声明性规范为租户数据中心配置云平台中的计算资源。辅助控制数据中心有效地控制配置租户数据中心的过程,例如,如果主控制数据中心出现故障。
Description
背景技术
技术领域
公开文本总体上涉及云计算平台中发布软件的持续交付,并且具体地,涉及在云计算平台上构建的数据中心的多基层容错持续交付。
相关技术描述
组织越来越多地在云平台(或云计算平台)上响应,如AWS(亚马逊网络服务)、谷歌云平台、微软AZURE等,以满足其基础设施需求。云平台通过互联网向组织提供服务器、存储、数据库、网络、软件等。通常,组织维护包含组织使用的硬件和软件的数据中心。然而,维护数据中心可能会导致维护、人员等方面的大量开销。因此,组织正在将其数据中心转移至云平台,以提供计算资源的可扩展性和弹性。
组织使用可以在云平台上管理和部署应用程序的持续交付平台来维护云平台上的计算基础设施。这种持续交付平台允许组织简化软件部署过程,并管理云平台上的应用程序、防火墙、集群、服务器、负载均衡器和其他计算基础设施。然而,使用持续交付平台为云平台上提供的服务部署软件发布可能会很复杂。例如,不同版本的软件可能必须部署在运行在不同云计算资源上的不同服务上。此外,每个云平台使用不同的工具来管理资源。
诸如多租户系统的大型系统可以管理代表多租户系统的租户的大量组织的服务,并且可以与多个云平台交互。此外,为多个租户维护服务需要在云平台中跨不同租户的数据和应用程序强制执行边界。在云平台上维护服务的系统还需要确保任何新发布的持续交付都是在没有中断的情况下执行的。如果系统是多租户系统,则用于执行软件工件的持续交付的基础设施中的故障可能会限制管理为所有租户运行的所有服务的能力。由于现有服务的缺陷或故障,这种故障将中断新功能的安装以及任何修复。不能有效处理这种基础设施故障的传统系统可能会导致服务的长时间中断。用于持续交付的传统技术适用于由单个组织管理和操作的传统数据中心。公共云环境上的持续交付涉及几个额外的考虑因素,例如未经授权的数据访问的可能性、共享资源、组织缺乏对计算资源的直接控制等。用于持续交付的传统技术不足以在公共云环境上部署软件工件。
附图说明
图1是示出根据实施方案在云平台上配置数据中心的多租户系统的系统环境的框图。
图2A是示出根据实施方案的部署模块210的系统架构的框图。
图2B示出了根据实施方案的用于在数据中心中部署软件工件的整体过程。
图3是示出根据一个实施方案的软件发布管理模块的架构的框图。
图4示出了根据一个实施方案的数据中心声明性规范的实施例。
图5示出了根据一个实施方案的基于声明性规范在云平台上创建的示例性数据中心。
图6是示出根据一个实施方案的基于声明性规范在云平台上生成数据中心的框图。
图7示出了根据实施方案的用于生成用于在云平台上配置的数据中心上部署软件工件的流水线的整体过程。
图8示出了根据实施方案的示例性主流水线。
图9示出了根据实施方案的云平台上的主流水线的环境的阶段执行的整体过程。
图10示出了根据实施方案的示例性主流水线。
图11示出了根据实施方案的用于在云平台上配置的数据中心上部署软件工件的整体过程。
图12是示出根据一个实施方案的容错持续交付模块的架构的框图。
图13是示出根据一个实施方案的控制数据中心的架构的框图。
图14A和14B示出了根据一个实施方案的用于向在云平台中配置的数据中心持续交付软件工件的控制数据中心的容错架构的架构。
图15示出了根据实施方案的用于使用图14中所示的控制数据中心的容错架构在云平台上配置数据中心的过程。
图16示出了根据实施方案的用于处理主控制数据中心中的故障的过程。
图17是示出根据一个实施方案的在图1的环境中使用的通常的计算机系统的功能视图的框图。
这些图仅出于示出的目的描绘了各种实施方案。本领域的技术人员将容易地从以下讨论中认识到,在不偏离本文描述的实施方案的原理的情况下,可以采用本文所示的结构和方法的替代实施方案。
图使用相似的参考数字来标识相似的元件。参考数字后面的字母,如“115a”,指示该文本具体指的是具有该特定参考数字的元件。文本中没有后面的字母的参考数字,如“115”,指的是图中带有该参考数字的任何或所有元件。
具体实施方式
云平台经由诸如互联网的公共网络按需向计算系统提供计算资源,如存储、计算资源、应用程序等。云平台允许企业最大限度地降低建立计算基础设施的前期成本,还允许企业以更少的维护开销更快地启动和运行应用程序。云平台还允许企业调整计算资源,以适应快速波动和不可预测的需求。企业可以使用云平台创建数据中心,供企业的用户使用。然而,在每个云平台上实施数据中心需要云平台技术方面的专业知识。
实施方案使用独立于云平台的云平台基础设施语言,在云平台中创建数据中心。该系统接收数据中心的独立于云平台的声明性规范。声明性规范描述了数据中心的结构,并且可能不提供指定如何创建数据中心的指令。独立于云平台的声明性规范配置为在多个云平台中的任何一个上生成数据中心,并且使用云平台基础设施语言来指定。该系统接收标识用于创建数据中心的目标云平台的信息,并编译独立于云平台的声明性规范,以生成特定于云平台的数据中心表示。该系统发送特定于云平台的数据中心表示和用于在目标云平台上执行的指令集。目标云平台使用平台特定数据中心表示来执行配置数据中心的指令。该系统为用户提供对云平台配置的数据中心计算资源的访问。
在一个实施方案中,该系统执行与配置在云平台上的数据中心上的软件发布相关的操作,例如,部署软件发布、提供资源、执行软件发布的回滚等。该系统访问配置在目标云平台上的数据中心。数据中心是基于独立于云平台的声明性规范生成的,该规范包括数据中心实体的层次结构。每个数据中心实体包括(1)服务或(2)一个或多个其他数据中心实体中的一项或多项。该系统生成独立于云平台的主流水线,该主流水线包括:(1)用于部署软件工件的阶段序列,例如,开发阶段、测试阶段和生产阶段;以及(2)用于将软件工件从一个阶段推进到阶段的序列的后续阶段的标准。该系统根据声明性规范定义的数据中心布局,编译独立于云平台的主流水线,以生成用于目标云平台的依赖于云平台的详细流水线,以及用于执行与服务相关的操作的指令。该系统在目标云平台上执行依赖于云平台的详细流水线,例如,在数据中心的数据中心实体上部署软件发布。
在一个实施方案中,该系统接收独立于云平台的工件版本映射,该工件版本映射将数据中心的数据中心实体与目标为部署在数据中心实体上的软件工件的版本相关联。每个软件工件包括与配置用于在一个或多个云平台上执行的服务相关联的可执行指令。该系统基于独立于云平台的工件版本映射为目标云平台生成特定于云平台的主流水线。特定于云平台的主流水线包括指令,该指令用于执行例如根据独立于云平台的版本映射为数据中心实体上的服务构建和部署适当版本的部署工件的操作。该系统将特定于云平台的部署流水线传输至目标云平台以供执行。工件版本映射和主流水线可以用于执行与服务相关的各种动作,包括部署服务、销毁服务、提供服务资源、销毁服务资源等。
在一个实施方案中,该系统执行在云平台上构建的数据中心的容错持续交付。数据中心构建可以配置数据中心,该配置数据中心内的服务或服务组,部署与数据中心的服务相关联的软件工件等。数据中心构建可以与变更集(例如,与数据中心或数据中心上运行的服务相关联的代码变更或配置变更)相关联。数据中心配置在云平台上。该系统使用具有特定的服务集组的控制数据中心,以用于配置其他数据中心,例如,为特定租户使用而创建的租户数据中心。控制数据中心还用于针对租户数据中心执行软件工件的持续交付。该系统包括用于控制数据中心的容错架构。因此,该系统使用主控制数据中心和辅助控制数据中心。任何与软件工件的持续交付相关的请求都被定向到主控制数据中心。主控制数据中心配置租户数据中心的基础设施例如通过根据租户数据中心的声明性规范为租户数据中心配置云平台中的计算资源。主控制数据中心向辅助控制数据中心传输描述配置的基础设施的状态的信息,该状态指示到目前为止已经为租户数据中心配置的基础设施。描述配置的基础设施的状态的信息允许辅助控制数据中心在任何时间点有效地恢复配置租户数据中心的过程的控制,例如,如果主控制数据中心出现故障。如果辅助控制数据中心控制租户数据中心的配置过程,则辅助控制数据中心开始向辅助控制数据中心转移描述配置的基础设施的状态的信息,从而颠倒主控制数据中心和辅助控制数据中心的角色。
云平台在本文中也被称为基层。数据中心的声明性规范基层独立的或基层无关的。该系统可以表示多租户系统,但不限于多租户系统,并且可以是任何在线系统或具有对云平台的网络访问的任何计算系统。
系统环境
图1是示出根据实施方案在云平台上配置数据中心的多租户系统的系统环境的框图。系统环境100包括多租户系统110、一个或多个云平台120和一个或多个客户端设备105。在其他实施方案中,系统环境100可以包括更多或更少的部件。
多租户系统110存储一个或多个租户115的信息。每个租户可以与代表多租户系统110的客户的企业相关联。每个租户可以具有经由客户端设备105与多租户系统交互的多个用户。
云平台也可以被称为云计算平台或公共云环境。租户可以使用云平台基础设施语言来提供在目标云平台120上创建的数据中心的声明性规范,并使用数据中心来执行操作,例如,提供资源、执行软件发布等。租户115可以在云平台120上创建一个或多个数据中心。数据中心表示计算资源集,该计算资源集包括用户(例如,与租户相关联的用户)可以使用的服务器、应用程序、存储、内存等。每个租户可以向租户的用户提供不同的功能。因此,每个租户可以在为该租户配置的数据中心上执行不同的服务。多租户系统可以为每个租户实施不同的软件发布和部署机制。租户可进一步获得或开发包括用于在数据中心中执行的各种服务的指令的软件版本。实施方案允许租户为在数据中心的不同计算资源上运行的不同服务部署软件发布的特定版本。
数据中心的计算资源是安全的,并且未被授权访问它们的用户可能无法访问它们。例如,为租户115a的用户创建的数据中心125a可能不会被租户115b的用户访问,除非明确地授权访问。类似地,为租户115b的用户创建的数据中心125b可能不会被租户115a的用户访问,除非明确地授权访问。此外,只有在根据数据中心的声明性规范向计算系统授权访问时,由数据中心提供的服务才可以由数据中心外部的计算系统访问。该系统使用多个安全层来识别和授权用户访问这些资源。
对于多租户系统110,多个租户的数据可以存储在相同的物理数据库中。然而,数据库配置为使得一个租户的数据与其他租户的数据在逻辑上保持分离,使得一个租户不能访问另一个租户的数据,除非明确共享这种数据。可以将他们的数据存储在与其他客户的数据共享的表中,对于租户来说是透明的。数据库表可以存储多个租户的行。因此,在多租户系统中,系统的硬件和软件的各种元件可以由一个或多个租户共享。例如,多租户系统110可以执行同时处理对多个租户的请求的应用服务器。然而,多租户系统强制执行租户级数据隔离,以确保一个租户的作业不会访问其他租户的数据。
云平台的实施例包括AWS(亚马逊网络服务)、谷歌云平台或微软AZURE。云平台120提供可以由租户115或云平台120外部的任何计算系统按需使用的计算基础设施服务。云平台提供的计算基础设施服务的实施例包括服务器、存储、数据库、网络、安全、负载平衡、软件、分析、智能和其他基础设施服务功能。租户115可以使用这些基础设施服务以可扩展和安全的方式构建、部署和管理应用。
多租户系统110可以包括租户数据存储,其存储多租户存储的各种租户的数据。租户数据存储可以将不同租户的数据存储在单独的物理结构中,例如,单独的数据库表或单独的数据库。可替代地,租户数据存储可以将多个租户的数据存储在共享的结构中。例如,所有租户的用户账户可以共享相同的数据库表。然而,多租户系统存储附加信息以在逻辑上分离不同租户的数据。
图1中所示的每个部件表示一个或多个计算设备。例如,计算设备可以是执行MicrosoftTMWindowsTM兼容操作系统(OS)、AppleTMOS X和/或Linux发行版的常规计算机系统。计算设备也可以是具有计算机功能的客户端设备,例如个人数字助理(PDA)、移动电话、视频游戏系统等。每个计算设备存储软件模块,其存储指令。
系统环境100的各种部件之间的交互通常经由网络(图1中未示出)来执行。在一个实施方案中,网络使用标准通信技术和/或协议。在另一个实施方案中,实体可以使用自定义和/或专用数据通信技术来代替或补充上述技术。
尽管本文公开的技术是在多租户系统的上下文中描述的,但是可以使用可能不是多租户系统的其他系统来实施这些技术。例如,单个组织或企业使用的在线系统可以使用本文公开的技术在一个或多个云平台120上创建一个或多个数据中心。
系统架构
多租户系统110包括用于在云平台上部署软件工件的部署模块。部署模块可以执行与软件发布相关联的各种操作,例如,在云平台上提供资源、部署软件发布、执行在数据中心实体上安装的软件工件的回滚等。图2是示出根据实施方案的部署模块210的系统架构的框图。部署模块210包括数据中心生成模块220和软件发布管理模块230。其他实施方案可以具有不同于这里描述的部件和/或其他部件,并且功能可以以不同的方式分布在部件之间。
数据中心生成模块220包括用于在云平台上创建数据中心的指令。软件发布管理模块230包括用于针对在由数据中心生成模块220创建的数据中心上运行的各种服务或应用部署软件发布的指令。
数据中心生成模块220从用户(例如,租户的用户)接收数据中心的独立于云平台的声明性规范。数据中心的独立于云平台的声明性规范指定了数据中心的各种实体。在一个实施方案中,数据中心的独立于云平台的声明性规范包括数据中心实体的层次结构组织,其中每个数据中心实体可以包括一个或多个服务、一个或多个其他数据中心实体或两者的组合。图4更详细地描述了各种类型的数据中心实体。数据中心生成模块220接收平台独立声明性规范和目标云平台作为输入,并为目标云平台生成特定于云平台的元数据表示。数据中心生成模块220在目标云平台上部署生成的特定于云平台的元数据表示,以根据声明性规范在目标云平台上创建数据中心。
软件发布管理模块230接收(1)工件版本映射225和(2)主流水线235作为输入。工件版本映射225标识以部署在特定数据中心实体上为目标的软件发布或部署工件的特定版本。工件版本映射225将数据中心实体映射到以部署在数据中心实体上为目标的软件发布版本。主流水线235包括用于与数据中心上的软件发布相关的操作的指令,例如,部署服务、销毁服务、提供服务资源、销毁服务资源等等。
主流水线235可以包括用于执行与不同环境(如开发环境、测试环境、金丝雀环境和生产环境)的软件发布相关的操作的指令,以及用于确定何时将软件发布从一个环境推进到另一个环境的指令。例如,如果软件发布在开发环境中的部署执行超过阈值数量的测试用例,则该软件发布被推进到测试环境以进行进一步的测试,例如,系统级和集成测试。如果测试环境中的软件发布通过了测试覆盖的阈值,则软件发布被推进到金丝雀环境,在该环境中,软件发布在试用的基础上被提供给一小部分用户。如果金丝雀环境中的软件发布在阈值时间内没有错误地执行,则软件发布被推进到生产环境,在生产环境中,该软件发布被提供给所有用户。
软件发布管理模块230编译输入工件版本映射225和主流水线235,以生成传输至目标云平台的特定于云平台的详细流水线255。特定于云平台的详细流水线255包括用于在数据中心实体上部署软件发布或适当版本的部署工件的指令,如工件版本映射225中所指定的。软件发布管理模块230可以接收对其中一个输入的修改。例如,用户可以修改输入工件版本映射225并提供相同的主流水线235。因此,使用相同的主流水线,但在数据中心实体上部署不同的软件发布。软件发布管理模块230重新编译输入,以生成新的特定于云平台的详细流水线255,该流水线根据新的工件版本映射225部署软件发布的版本。
工件版本映射也可以被称为部署清单、版本清单、软件发布映射或软件工件版本映射。主流水线也可以被称为主部署流水线或主编排流水线。
图2B示出了根据实施方案的用于在数据中心中部署软件工件的整体过程。图2B示出了包括各种数据中心实体的数据中心265的布局。如图2B中所示,工件版本映射225标识目标为在数据中心265的不同数据中心实体275上发布的软件的不同版本。主流水线表示通过数据中心的各种环境的部署工件流。软件发布管理模块230将主流水线235中的信息与工件版本映射225组合,以确定特定于云平台的详细流水线255,该流水线根据工件版本映射225在数据中心实体上映射适当版本的软件工件。
图3是示出根据一个实施方案的软件发布管理模块230的架构的框图。软件发布管理模块230包括解析模块310、流水线生成器模块320、工件版本映射存储330、流水线存储340、容错持续交付模块350和流水线执行引擎360。其他实施方案可以包括比图3中本文所指示的模块更多、更少或不同的模块。
解析模块310解析各种类型的用户输入,该用户输入包括数据中心的声明性规范、工件版本映射225和主流水线235。解析模块310生成所处理的输入的数据结构和元数据表示,并将所生成的数据结构和元数据表示提供给软件发布管理模块230的其他模块以供进一步处理。
元数据存储340存储由软件发布管理模块230生成的数据中心的各种转换的元数据表示。如果在数据中心的当前版本中遇到问题,则可以使用转换的元数据表示执行回滚到先前版本。转换的元数据表示可以在转换过程的各个阶段用于验证、审计、治理等。
流水线生成器模块320结合作为输入接收的工件版本映射来处理主流水线,以生成用于目标云平台的详细流水线。流水线包括阶段,该阶段包括用于提供服务或部署应用的指令,以用于根据工件版本映射为云平台上的各种服务部署软件发布的版本。工件版本映射存储330存储从用户接收的工件版本映射,并且流水线存储340存储主流水线以及由流水线生成器模块320生成的流水线。
容错持续交付模块350以容错方式管理软件工件到在云平台中配置的数据中心的持续交付。容错持续交付模块350的细节在图12中进一步示出,并结合图12进行描述。
流水线执行引擎360执行由流水线生成器模块320生成的详细流水线。在一个实施方案中,流水线执行引擎360是诸如SPINNAKER的系统,其执行用于发布/部署软件的流水线。流水线执行引擎360解析流水线并在目标云计算平台上执行流水线的每个阶段。
基于云平台的数据中心生成
图4示出了根据一个实施方案的数据中心的声明性规范的实施例。声明性规范410包括多个数据中心实体。数据中心实体是数据中心实体类型的实例,并且每个数据中心实体类型可以有多个实例。数据中心实体的实施例包括数据中心、服务组、服务、团队、环境和概要。
声明性规范410包括各种类型的数据中心实体的定义,包括服务组、服务、团队、环境和概要。声明性规范包括数据中心的一个或多个实例。以下是对各种类型的数据中心实体及其实施例的描述。这些实施例是说明性的,显示了数据中心实体的一些属性。其他实施方案可以包括不同的属性,并且具有相同功能的属性可以被赋予与本文所指示的名称不同的名称。在一个实施方案中,使用符合预定义概要的分层对象(例如,JSON(Javascript对象符号))来指定声明性规范。
根据一个实施方案,服务组520表示由一个或多个计算系统提供的可以独立地构建和交付能力特征和服务集。服务组也可以被称为逻辑服务组、功能单元或有界上下文。服务组520还可以被视为由一个或多个计算系统提供的内聚技术用例功能集的服务集。服务组520强制执行安全边界。服务组520定义修改的范围。因此,对实体的任何修改,例如由服务组520内的一个或多个计算系统提供的能力、特征或服务,可以根据需要或适合于服务组内的实体而传播,但是不传播到驻留在服务组520的有界定义之外的实体。数据中心可以包括多个服务组520。服务组定义指定属性,包括名称、描述、标识符、概要版本和服务集实例。服务组的实施例是区块链服务组,其包括用于提供区块链功能的服务集。类似地,安全服务组提供安全特征。用户界面服务组提供特定用户界面特征的功能。共享文档服务组提供跨用户共享文档的功能。类似地,可以存在若干其他服务组。
服务组支持规范的可重用性,以便对开发数据中心感兴趣的租户或用户拥有他们可以随时使用的服务组库。围绕服务组的服务的边界基于安全问题和网络问题等。服务组与用于执行与服务组的交互的协议相关联。在一个实施方案中,服务组提供API(应用程序编程接口)和实施这些API的服务的集合。此外,服务组是独立于基层的。服务组为服务组内的服务提供爆炸半径范围,使得服务组内的任何服务故障的影响仅限于服务组内的服务,而在服务组外的影响最小。
以下是服务组的规范的实施例。服务组指定表示服务组元数据的各种属性,并且包括服务组内的服务集。可能存在为服务组指定的其他类型的元数据,本文没有指示。
如上面的实施例所示,服务组可以指定集群的集。集群表示计算节点的集,例如,服务器集、虚拟机集或容器集(如KUBERNETES容器)。物理服务器可以运行多个容器,其中每个容器都有自己的文件系统、CPU、内存、处理空间等共享。
服务组指定服务集。服务组可以为服务指定集群,使得部署在云平台上的数据中心运行计算节点的集群,并且如果包括在声明性规范中,则基于指定的映射将服务映射到集群。例如,在上面显示的服务组实施例中,服务实例“服务实例0002”被指定在集群实例集群1上运行。
服务组可以指定安全组,每个安全组指定允许彼此交互的服务集。安全组外的服务需要通过额外的认证才能与安全组内的服务通信。可替代地,安全组内的服务使用一种协议彼此交互,而安全组外的服务使用不同的协议,这需要增强认证才能与安全组内的服务交互。因此,安全组指定了确定服务如何相互交互的策略。安全策略可以指定安全策略适用的一个或多个环境。例如,安全策略“策略1”可以应用于特定环境“环境1”(例如,生产环境),并且另一个安全策略“策略2”可以应用于另一个环境“环境2”(例如,开发环境)。可以为服务组类型或特定服务类型指定安全策略。
在一个实施方案中,安全策略基于各种属性指定用于过滤服务组的表达式,使得安全策略适用于过滤的服务组的集合。例如,安全策略可以指定IP(互联网协议)地址的列表,该IP地址是由过滤的集合标识的服务组的集合的白名单,并且因此允许这些计算系统访问服务组或服务组内的特定服务集。
在一个实施方案中,安全策略可以为服务组指定源服务集和目的地服务集。特定服务的源服务指定允许与此特定服务连接的安全组之外的服务。特定服务的目标服务指定此特定服务需要连接到的安全组之外的服务。在供应和部署期间,数据中心生成模块为云平台生成指令,该指令使用特定于云平台的特征和网络功能来实施特定网络策略,使得网络策略实施声明性规范中指定的安全策略。
被称为小区的数据中心实体表示以垂直方式相互交互的服务集,并且可以通过小区的附加实例或副本(即,服务集的副本)进行扩展。创建小区的多个实例允许系统扩展彼此交互的服务集。数据中心实例可以包括一个或多个小区。每个小区可以包括一个或多个服务。数据中心可以包括服务组或小区的实例。
服务定义指定服务类型(例如数据库服务、负载均衡器服务等)的元数据。元数据描述服务的各种属性,该属性包括服务的名称、服务的描述、服务的文档的位置、与服务相关联的任何子服务、服务的所有者、与服务相关联的团队、指定该服务在构建时所依赖的其他服务的服务的构建依赖关系、指定当该特定服务启动时应该运行的其他服务的服务的启动依赖关系、授权客户端、与服务相关联的DNS(域名服务器)名称、服务状态、对服务的支持级别等等。服务定义指定侦听端口属性,该属性指定服务可以侦听不同通信协议的端口,例如,服务可以侦听UDP协议的端口p1和TCP协议的端口p2。数据中心内的其他服务可以经由服务指定的端口与服务交互。
服务定义指定属性出站访问,该属性指定目标端点,例如,指定服务需要访问指定外部URL的外部URL(统一资源定位器)。在部署期间,数据中心生成模块确保云平台实施访问策略,从而为该服务类型的实例提供对外部URL的请求访问。
出站访问规范可以识别出站访问适用的服务的一个或多个环境类型。例如,端点集S1的出站访问可以应用于特定环境“环境1”(例如,生产环境),并且端点集S2的出站访问可以应用于另一个环境“环境2”(例如,开发环境)。
以下是服务定义的实施例。
团队定义450包括团队成员姓名和团队的其他属性,例如姓名、电子邮件、通信信道等。以下是团队定义的实施例。服务可以与一个或多个负责对该服务进行修改的团队相关联。因此,对该服务所做的任何修改都得到团队的批准。被部署到云平台之后,服务可以与负责维护服务的团队相关联。团队可以与服务组相关联,并且相应地与该服务组的所有服务相关联。例如,团队批准对服务组的任何更改,例如,作为服务组一部分的服务。团队可以与数据中心相关联,并且相应地与数据中心内的所有服务组相关联。在数据中心级指定的团队关联为数据中心内的所有服务组提供默认团队,并进一步为服务组内的所有服务提供默认团队。
根据一个实施方案,在功能级指定的团队关联覆盖在数据中心级提供的团队关联。类似地,在服务级指定的团队关联覆盖在服务组级或数据中心级指定的团队关联可能已经提供的默认值。团队可以决定如何为与团队相关联的数据中心实体采取某些动作。团队关联还确定云平台上为编译器生成云平台的数据中心的最终元数据表示以及为在云平台上供应和部署数据中心而创建的账户的数量。数据中心生成模块210在云平台中创建一个或多个用户账户,并向团队成员提供对用户账户的访问。因此,允许团队成员执行与和团队相关联的数据中心实体相关联的特定动作,例如,在部署数据中心实体时对数据中心实体进行或批准结构改变或维护数据中心实体,包括可以为数据中心实体识别的调试和测试问题。
传统技术在整个设计过程中将同一团队与数据中心相关联,从而导致组织结构对数据中心或服务组的设计产生影响。实施方案将团队定义与定义数据中心实体的构造分离,从而减少团队对数据中心实体的设计和架构的影响。
环境定义460指定由数据中心表示的系统环境的类型,例如,开发环境、试运行环境、测试环境或生产环境。概要定义470指代指定特定数据中心实体定义的语法的概要。概要定义470用于验证各种数据中心实体定义。数据中心生成模块基于环境确定特定于云平台的元数据表示中数据中心的安全策略。例如,特定的安全策略集可以适用于环境“环境1”,并且不同的安全策略集可以适用于环境“环境2”。例如,与开发环境相比,安全策略在生产环境中提供了更多受限制的访问。安全策略可以指定为特定目的允许安全令牌存在的时间长度。例如,在开发环境中可以允许长访问令牌(例如,一周长的访问令牌),但是在生产环境中使用的访问令牌的使用寿命要小得多(例如,几个小时)。访问令牌可以允许用户或服务访问特定的云平台资源。
数据中心定义420指定数据中心实例的属性和部件。声明性规范可以指定多个数据中心实例。数据中心定义420指定包括名称、描述、环境类型、服务组集、团队、数据中心的域名服务器等的属性。数据中心定义可以指定概要定义,并且根据指定的概要定义来验证从数据中心定义生成的任何元数据表示。数据中心包括核心服务和功能集,使其他服务能够在数据中心内发挥作用。数据中心的实例部署在特定的云平台中,并且可以与特定的环境类型相关联,例如,开发、测试、试运行、生产等等。
以下是数据中心实例的定义。数据中心实例定义包括数据中心实例中包括的服务组的列表和其他属性,包括数据中心的环境、数据中心标识符、名称、表示地理区域的区域、与数据中心相关联的一个或多个团队以及概要版本。
图5示出了根据一个实施方案的基于声明性规范在云平台上创建的一些示例性数据中心。可以基于由数据中心生成模块210处理的声明性规范来创建数据中心510。如图5中所示,可以在云平台120内配置多个数据中心。每个数据中心510可以对应于多租户系统110的租户115。租户115可以创建一个或多个数据中心510。可替代地,可以由任何计算系统创建数据中心510。每个数据中心包括一个或多个服务组。例如,数据中心510a包括服务组520a和520b,并且数据中心510b包括服务组520c。数据中心可以包括特定类型的服务组的多个实例。每个服务组包括服务集。例如,服务组520a包括服务530a和530b,服务组520b包括服务530a、530b和530c,并且服务组520c包括服务530e、530f和530g。服务组可以包括相同服务类型的服务的多个实例。
数据中心生成模块220使用以下步骤基于声明性规范在云平台上创建数据中心。数据中心生成模块210接收数据中心的独立于云平台的声明性规范。独立于云平台的声明性规范可以用于多租户系统的租户或用于任何其他计算系统,例如在线系统。独立于云平台的声明性规范是使用云平台基础设施语言指定的。数据中心的独立于云平台的声明性规范配置为在多个云平台中的任何一个上生成数据中心。
数据中心生成模块210接收标识用于基于独立于云平台的声明性规范创建数据中心的目标云平台的信息。目标云平台可以是多个云平台中的任何一个,例如,AWS、AZURE、GCP等等。数据中心生成模块210进一步接收与目标云平台连接的信息,例如,用于创建与目标云平台的连接的凭证。云平台也可以被称为云计算平台。
数据中心生成模块210编译独立于云平台的声明性规范,以生成用于在目标云计算平台上创建数据中心的特定于云平台的数据中心表示。例如,特定于云平台的数据中心表示可以指特定于目标云计算平台的用户账户、网络地址等。
数据中心生成模块210发送平台特定数据中心表示以及用于在目标云计算平台上部署数据中心的指令。目标云计算平台执行指令以配置目标云计算平台的计算资源,以根据平台特定数据中心表示生成数据中心。数据中心生成模块210为用户提供对云计算平台配置的数据中心的计算资源的访问。例如,如果数据中心是为多租户系统的租户创建的,则向与租户相关联的用户提供对数据中心的访问。
图6是示出根据一个实施方案的基于声明性规范在云平台上生成数据中心的框图。数据中心生成模块210接收独立于云平台的声明性规范610作为输入。独立于云平台的声明性规范610可以是由用户增量修改的声明性规范的版本。数据中心生成模块210处理独立于云平台的声明性规范610的特定版本。由于没有为任何特定的目标云平台指定独立于云平台的声明性规范610,因此数据中心生成模块210可以基于独立于云平台的声明性规范610在任何目标云平台上配置数据中心。
数据中心生成模块210处理独立于云平台的声明性规范610,以生成用于数据中心的独立于云平台的详细元数据表示620。独立于云平台的详细元数据表示620定义了在独立于云平台的声明性规范610中指定的数据中心实体的每个实例的细节。数据中心生成模块210为数据中心实体实例(例如,服务实例)创建唯一标识符。
在一个实施方案中,独立于云平台的详细元数据表示620包括数据中心实体类型的实例的阵列,例如,特定服务组类型的服务组实例的阵列。每个服务组实例包括服务实例的阵列。服务实例可还包括被允许执行与服务实例相关联的某些动作的用户团队的细节。数据中心生成模块210在供应和部署期间使用团队的详细信息,例如,用于针对服务实例创建用户账户并允许团队的成员访问用户账户。
独立于云平台的详细元数据表示620包括数据中心实体的每个实例的属性。因此,扩展数据中心实体的每个实例的描述以包括所有细节。结果,数据中心的独立于云平台的详细元数据表示620可以明显大于独立于云平台的声明性规范610。例如,独立于云平台的声明性规范610可以是几千行规范,而独立于云平台的详细数据中心表示620可以是数百万行生成的代码。结果,数据中心生成模块210将独立于云平台的详细元数据表示620保持为不可变的,即,一旦该表示被最终确定,就不对该表示执行任何修改。例如,如果需要执行数据中心实体的任何更新、删除或添加,则在独立于云平台的声明性规范610上执行它们。
数据中心生成模块210接收预期在其上供应和部署数据中心的目标云平台,并生成数据中心的特定于云平台的详细元数据表示630。例如,数据中心生成模块210与目标云平台交互,以生成某些实体(或资源),例如,用户账户、虚拟私有云(VPC)和网络资源,例如VPC上的子网、云平台中实体之间的各种连接等等。数据中心生成模块210接收在目标云平台中创建的资源的资源标识符,例如,用户账户名、VPC ID等,并将这些并入独立于云平台的详细元数据表示620中,以获得数据中心的特定于云平台的元数据表示630。在一个实施方案中,数据中心生成模块210为服务组和服务的给定组合,在云平台上为每个团队创建一个唯一的用户账户。团队使用用户账户来执行与该服务组的特定服务的交互,例如,用于调试、用于接收警报等。
目标云平台可以执行几个步骤来处理特定于云平台的详细元数据表示630。例如,独立于云平台的声明性规范可以指定服务之间允许的交互。这些允许的交互在特定于云平台的详细元数据表示630中被指定,并且被实施为云平台的网络策略。云平台可进一步创建安全组来实施网络策略,以根据声明性规范实施数据中心。
独立于云平台的声明性规范指定了服务之间的依赖关系,例如,每个服务的启动依赖关系列出了启动特定服务时应该运行的所有服务。数据中心生成模块220生成数据中心的特定于云平台的详细元数据表示,其包括描述这些依赖关系的信息,使得用于部署服务的指令确保云平台以依赖关系指定的顺序启动服务,使得对于每个服务,当启动服务时,在服务之前需要启动的服务正在运行。因此,服务之间的依赖关系表示依赖关系图,并且云平台以基于依赖关系图确定的顺序开始运行服务,使得如果服务A依赖于服务B,则在服务A启动之前启动服务B。
数据中心生成模块220在用户账户之间创建信任关系,该信任关系允许服务经由安全通信信道访问其他服务。这些信任关系是使用基于声明性规范(例如,基于为服务指定的出站访问属性)生成的基层特定指令生成的。数据中心生成模块220向云平台发送指令,以基于控制服务组和服务之间的交互和访问的特定于云平台的机制来创建网络策略,例如,如声明性规范的结构所指定的,例如出站访问、安全组、安全策略等。
数据中心生成模块210在为其生成表示的特定目标云平台上部署特定于云平台的元数据表示630。数据中心生成模块210可以使用生成的元数据表示来执行各种验证,包括策略验证、格式验证等等。
独立于云平台的声明性规范610可以被称为声明的数据中心表示,独立于云平台的详细元数据表示620被称为数据中心的派生元数据表示,以及特定于云平台的元数据表示630被称为数据中心的水合元数据表示。
用于在数据中心上部署软件工件的整体过程
图7示出了根据实施方案的用于生成用于在云平台上配置的数据中心上部署软件工件的流水线的整体过程。数据中心生成模块在目标云平台上生成710一个或多个数据中心。每个数据中心都是根据独立于云平台的声明性规范生成的,并且具有数据中心实体的层次结构。
软件发布管理模块230生成720独立于云平台的主流水线。在一个实施方案中,独立于云平台的主流水线包括对应于数据中心的环境的阶段,例如,开发环境、测试环境、金丝雀环境和生产环境。主流水线组成了跨各种环境(如开发环境、测试环境、试运行环境或生产环境)的渐进和/或有条件部署的序列。可以通过传递软件工件的映像来触发主流水线,并且包括在开发类型的环境中部署构建的阶段或指令。构建的软件工件被有条件地推进到一个或多个测试环境,然后是一个或多个金丝雀环境,最后被部署到生产环境。可以由用户(例如,服务所有者)定制主流水线,以表示跨环境的特定编排。可以定制主流水线以捕获用于从一个阶段移动到下一个阶段的特定推进标准。例如,多租户系统的不同租户可以以不同的方式定制主流水线。在一个实施方案中,主流水线默认地将软件的最新版本用于服务的软件工件,并跨各种环境构建和部署该版本。用户可以使用工件版本映射来确保软件工件的特定版本部署在特定的数据中心实体上。
在一个实施方案中,部署在数据中心中的每个服务具有由数据中心的声明性规范定义的数据中心实体生成的独立于云平台的主流水线,例如,用于数据中心实例的主流水线、用于服务组的主流水线、用于小区的主流水线、用于服务的主流水线等等。可以在传递软件工件的映像时触发主流水线。主流水线可以实施服务所有者控制的连续部署。主流水线可以实施数据中心实例所有者拥有或发布所有者拥有的按需部署。
可以由用户定制主流水线的某些部分,例如,由在数据中心上部署服务的多租户系统的租户。例如,推进决策流水线可以由租户定制,以确定执行哪些测试用例以及阈值是多少。软件发布管理模块230接收730对用于将软件工件从独立于云平台的主流水线的一个阶段推进到另一个阶段的逻辑的定制。
软件发布管理模块230编译740独立于云平台的主流水线,以生成特定于每个数据中心的数据中心实体的层次结构的特定于云平台的详细部署流水线,如数据中心的独立于云平台的声明性规范所指定的。
软件发布管理模块230进一步接收750用于发布部署在数据中心上的服务的一个或多个特征的代码。软件发布管理模块230执行760特定于云平台的详细部署流水线,以基于接收到的代码部署软件工件。
图8示出了根据实施方案的示例性主流水线800。主流水线代表阶段的序列,这些阶段代表跨各种数据中心环境的渐进式条件部署。图8显示了数据中心不同环境的阶段,包括开发环境、测试环境、金丝雀环境和生产环境。每个阶段进一步表示为该阶段执行的流水线。因此,主流水线800包括开发环境流水线810,该开发环境流水线馈送到测试环境流水线820,该测试环境流水线馈送到金丝雀环境流水线830,该金丝雀环境流水线馈送到生产环境流水线840。
每个阶段的流水线是包括较低级别流水线的分层流水线。例如,开发环境流水线810包括馈送到数据中心流水线D11、D12、…的开发主流水线,这取决于在数据中心的声明性规范中指定为具有开发环境的数据中心的数量。
测试环境流水线820包括馈送到数据中心流水线D21、D22,…的测试主流水线,这取决于在数据中心的声明性规范中指定为具有测试环境的数据中心的数量。
金丝雀环境流水线820包括馈送到数据中心流水线D31、D32,…的金丝雀主流水线,这取决于在数据中心的声明性规范中指定为具有金丝雀环境的数据中心的数量。
生产环境流水线820包括馈送到数据中心流水线D21、D22,…的生产主流水线,这取决于在数据中心的声明性规范中指定为具有测试环境的数据中心的数量。
每个环境流水线810、820、830分别包括推进决策流水线815a、815b、815c。由推进决策流水线815收集环境流水线的数据中心流水线的输出,推进决策流水线确定软件工件是否准备好推进到下一阶段。推进决策流水线815可以基于数据中心获得的测试用例结果来确定服务的软件工件是否被推进到下一阶段。例如,如果通过了超过阈值测试用例,则推进决策流水线815将软件工件推进到下一阶段。最后一个环境阶段,例如,生产环境流水线可能没有推进决策流水线,因为没有软件工件需要被推进到的后续阶段。如图8中所示,开发环境流水线的推进决策流水线815a确定是否将软件工件从开发阶段推进到测试阶段;测试环境流水线的推进决策流水线815b确定是否将软件工件从测试阶段推进到金丝雀阶段,金丝雀环境流水线的推进决策流水线815c确定是否将软件工件从金丝雀阶段推进到生产阶段。
主流水线包括多个流水线,例如,用于供应目标云平台的资源的供应流水线和用于在数据中心实体上部署软件工件的部署流水线。每个流水线包括阶段的序列,每个阶段代表目标云平台需要执行的一个或多个动作,以供应和部署数据中心。数据中心生成模块210生成用于在数据中心实体上部署软件工件版本的详细流水线。
在一个实施方案中,流水线生成器模块320使用包括变量的流水线模板生成详细的流水线。通过提供流水线中变量的特定值,将流水线模板转换为流水线。从模板生成流水线的过程被称为流水线模板的水合。流水线模板包含模板表达式,用作部署中使用的实际值的占位符。例如,模板表达式可以被目标特定的参数值或表达式替换。可以通过水合不同目标的流水线模板来生成多个流水线实例。模板变量表示可以用给定目标的特定值替换的参数,以生成特定于该目标的流水线实例。例如,在水合期间,模板变量“账户_id”可以被替换为账户_id的实际值,例如,“12345”。
在一个实施方案中,流水线生成器模块320基于数据中心的数据中心实体的层次结构以层次结构的方式生成流水线。例如,数据中心包括不同类型的数据中心实体,包括数据中心、服务组、服务等等。数据中心实体可以包括一个或多个子数据中心实体。例如,数据中心包括一个或多个服务组作为子数据中心实体。服务组包括一个或多个服务作为子数据中心实体。因此,数据中心生成模块210从层次结构级别的数据中心实体开始,并生成低于该级别的数据中心实体的流水线。例如,流水线生成器模块320从数据中心级别开始,并为数据中心内的服务组生成流水线。对于每个服务组,流水线生成器模块320为服务组内的服务生成流水线。
根据一个实施方案的用于执行流水线的过程如下。软件发布部署模块230接收在目标云平台中的数据中心实体集上部署软件工件的请求。软件发布部署模块230为一个或多个数据中心执行主流水线。软件发布部署模块230为每个数据中心的每个服务组执行聚合流水线。聚合流水线包括用于服务组内的服务的流水线。对于每个服务组中的每个服务,通过执行流水线的所有阶段来执行流水线。提供流水线的执行导致为服务提供资源,并且部署流水线导致在目标云平台中部署服务。
图9示出了根据实施方案的云平台上的主流水线的环境的阶段执行的整体过程。可以由每个环境流水线810、820、830执行步骤910、920、930、940和950。生产环境流水线3可以仅执行步骤910和920。可以针对使用清单文件指定的一个服务或多个服务来执行图9中所示的步骤。
用于环境E的环境流水线包括在数据中心实体集上部署910软件的指令,例如,被指定为具有环境E的数据中心实体集。在一个实施方案中,通过编译服务的源代码来生成软件工件。可以从版本控制软件获得源代码。数据中心实体集可以包括数据中心实例、服务组、小区、服务或这些的任意组合。
用于环境E的环境流水线还包括用于运行920测试的指令,该测试用于测试数据中心实体集上部署的软件工件。用于环境E的环境流水线还包括用于例如使用推进决策流水线815对照推进标准来评估930测试结果的指令。如果不满足推进标准,则可以使用修订的软件工件,例如,从源代码生成的软件工件,该软件工件包括对在测试920期间识别的某些缺陷的修复,来重复步骤910、920、930和940。用于环境E的环境流水线还包括用于在满足推进标准的情况下前进950到下一阶段的指令。
在一个实施方案中,主流水线包括流水线的层次结构。该层次结构包括多个级,并且特定级的流水线包括下一个较低级的流水线作为子流水线。例如,在层次结构的最高级,主流水线包括发布主流水线,其部署与产品相关的服务集。下一级层次结构包括服务主流水线,其表示跨各种环境特定服务的所有部署。下一级层次结构可以包括服务组主流水线,然后是服务主流水线。
图10示出了根据实施方案的示例性主流水线。主流水线是分层流水线,其中流水线的每个阶段可以包括具有用于执行该阶段的详细指令的流水线。主流水线层次结构可以镜像数据中心层次结构。例如,主流水线的顶级代表不同环境的阶段的序列。每个环境可以包括一个或多个用于数据中心实例的流水线或用于其他类型的数据中心实体的流水线。数据中心实例流水线1010可以包括服务组流水线1020。每个服务组流水线1020可以包括一个或多个服务流水线1030。数据中心实例流水线1010可以包括小区流水线1025,每个小区流水线1025包括一个或多个服务流水线1030。服务流水线1030可以包括阶段,每个阶段代表流水线,该流水线代表用于针对特定环境部署服务的指令。层次结构中的最低级流水线或叶级流水线被称为单元流水线,并且可以包括用于执行与服务相关的操作的详细的服务特定指令。例如,服务的部署可以包括部署前步骤、部署步骤、部署后步骤以及部署后测试和验证步骤。不是叶级流水线并且具有一个或多个子流水线的流水线是编排子流水线执行的聚合流水线。
可以由发生的拉请求来驱动主流水线,其发生软件的版本控制系统接收用于考虑提交给外部存储库以包含在项目的主存储库中的更改的请求。因此,当接收到拉请求时,自动触发主流水线,并且基于接收到拉请求的最新软件版本来部署软件工件。主流水线基于拉请求执行软件工件的持续交付。例如,通过使用部署模块210的应用编程接口(API)调用请求,可以基于按需方式来驱动主流水线。可以为任何服务集和使用API指定的给定服务的任何版本请求基于主流水线的按需部署。可以调用主流水线来请求从当前版本回滚到先前版本,或者从当前部署的版本前滚到更新的版本。
在一个实施方案中,部署模块210为每个服务创建服务主流水线。当接收到对软件的存储库的拉请求时,就会触发这些流水线。部署模块210从用于特定服务的用户接收流水线模板。这些流水线模板包括用于对特定服务测试、验证、构建等的详细指令。数据中心生成模块220接收用于一个或多个数据中心的独立于云平台的声明性规范。数据中心生成模块220根据接收到的独立于云平台的声明性规范生成(或配置)数据中心。部署模块210接收推进决策815流水线。推进决策815流水线被集成到整体主流水线中。
流水线生成器根据模板为每个数据中心创建所有流水线,并经由主流水线以分层方式组合它们,例如,如图10中所示。在一个实施方案中,流水线生成器生成用于各个服务的服务流水线;流水线生成器生成小区主流水线以调用服务流水线;流水线生成器生成服务组主流水线以调用小区主流水线;流水线生成器生成数据中心实例主流水线以调用服务组流水线;流水线生成器生成服务主流水线以调用数据中心实例主流水线。
以下是显示了各个阶段的主流水线的片段。每个阶段可以指定属性,包括阶段名称、流水线的类型、阶段类型(例如,主部署流水线或推进流水线)、先前阶段等等。
如审查主流水线中所示,第一阶段是工件版本映射。下一阶段是用于部署到开发环境的主部署流水线。下一阶段是用于确定是否可以将软件工件推进到下一阶段的推进流水线。下一阶段是用于部署到测试环境的主部署流水线。下一阶段是用于确定是否可以将软件工件推进到下一阶段(即,试运行环境)的推进流水线。
软件工件版本映射
在一个实施方案中,部署模块210接收将各种软件工件及其版本与数据中心实体相关联的工件版本映射。工件版本映射提供了需要为不同数据中心实体中的服务部署的软件工件的特定版本的声明性规范。每个数据中心实体可以基于其在数据中心层次结构中的位置被唯一标识,如数据中心的声明性规范所指定的。例如,对于服务,软件库可以充当软件工件。软件工件可以具有多个版本,例如,V1、V2、V3等等。工件版本映射可以指定版本V1需要部署在数据中心实体C1和C2中,并且版本V2需要部署在数据中心实体C3和C4中。部署模块210生成主流水线和指令,其确保如在工件版本映射中指定的那样,在数据中心实体中部署适当的软件工件版本。
在一个实施方案中,工件版本映射被指定为JSON(Javascript对象符号)文件、YAML文件或使用用于表示嵌套对象的任何其他语法的文件。工件版本映射可以包括与分布在数据中心的层次结构上的各种数据中心实体相关联的<服务>:<版本>密钥对的集合。工件版本映射密钥对充当相应流水线的白名单。如果在工件版本映射中没有包括服务的密钥,那么在流水线的执行期间,该服务的所有流水线都被排除在外。不同的工件版本映射可以应用于相同的主流水线,导致在主流水线的执行期间包括/排除不同的服务。
以下是示例性工件版本映射。工件版本映射使用属性“环境_类型”指定环境类型。在以下的实施例中,指定了环境类型开发。环境类型可以包括一个或多个数据中心实例;数据中心实例可以包括一个或多个服务组,服务组可以包括一个或多个服务。在以下的实施例中,软件工件名称被指定为库1,版本被指定为版本1,并且与服务实例“实例001”相关联。然而,软件工件名称和版本可以与层次结构中的任何级别的数据中心实体相关联。例如,对于指定的软件工件名称和版本或服务组,软件工件名称和版本适用于服务组内的所有服务,除非软件工件名称和版本被为服务组内的特定服务实例指定的软件工件名称和版本的不同值覆盖。
类似地,可以为数据中心实例指定软件工件名称和版本,并且适用于数据中心实例内的所有服务组或小区,除非为服务组指定了覆盖值。
在一个实施方案中,工件版本映射使用数据中心实体的完整路径,例如“阶段_组1/数据中心1/服务_组2/服务1”来指定数据中心实体。在一个实施方案中,工件版本映射使用数据中心实体的完整路径中的正则表达式来指定数据中心实体集。例如,包括服务_组[?]的完整路径,包括服务_组1、服务_组2、服务_组3等等。
以下是工件版本映射的实施例,其指定正则表达式来定义服务集。环境类型被指定为开发和测试,并且完整路径中的数据中心实体(包括数据中心实例和服务组)被指定为通配符,并且服务实例被指定为“服务*”。因此,对于开发和测试环境的所有数据中心实例、所有服务组、与服务*匹配的服务名称,将部署应用程序app1的版本V1。
在一些实施方案中,工件版本映射可以指定流水线使用的参数。因此,指定的参数将适用于针对其指定参数的交错组。
图11示出了根据实施方案的用于在云平台上配置的数据中心上部署软件工件的整体过程。数据中心生成模块在目标云平台上生成1110一个或多个数据中心。每个数据中心都是根据独立于云平台的声明性规范生成的,并且具有数据中心实体的层次结构。
软件发布管理模块230接收1120将数据中心实体映射到软件工件的版本的工件版本映射作为输入。软件发布管理模块230还接收1130独立于云平台的主流水线作为输入。
软件发布管理模块230结合工件版本映射编译1140独立于云平台的主流水线,以生成特定于云平台的详细流水线。在一个实施方案中,所生成的特定于云平台的详细流水线包括某些阶段之前的工件版本映射过滤器,以根据工件版本映射确定是否应该启用或禁用某些阶段。
软件发布管理模块230进一步接收1150用于发布部署在数据中心上的服务的一个或多个特征的代码。例如,代码可以表示从版本控制管理系统获得的源代码,该版本控制管理系统存储由开发人员向其提交更改的源代码存储库。软件发布管理模块230执行1160特定于云平台的部署流水线,以基于接收到的代码部署软件工件。
工件版本映射和主流水线可以用于编排与基于云的数据中心中软件工件的持续交付相关的各种类型的操作。工件版本映射和主流水线可以配置为对服务或服务组或任何数据中心实体执行聚合重试操作。工件版本映射包括对数据中心实体的重试操作的配置,包括重试策略、在执行流水线的阶段失败的情况下要执行的重试的阈值数量、在重试之前是否需要来自用户的确认或自动执行重试,等等。例如,重试策略可以是在重试之前暂停执行一段固定时间段的固定回退策略。可以使用工件版本映射和主流水线来配置其他重试策略。在一个实施方案中,流水线生成器在聚合流水线内引入调用重试阶段,以在先前流水线阶段失败时触发重试策略。为数据中心实体指定的重试策略和配置参数适用于数据中心实体内的所有数据中心实体和服务,除非嵌套数据中心实体覆盖了该值。
用于容错持续交付的系统架构
图12是示出根据一个实施方案的容错持续交付模块的架构的框图。容错持续交付模块包括数据中心配置模块1210、持续交付请求路由器1220和控制数据中心元数据存储1230。其他实施方案可以包括比图12中所指示的更多或更少的模块。如本文所指示的由特定模块执行的功能可以由所指示的模块之外的其他模块执行。
在一个实施方案中,容错持续交付模块在云平台上配置主控制数据中心和辅助控制数据中心。主控制数据中心也可以被称为主动控制数据中心或主动控制平面。辅助控制数据中心也可以被称为备用控制数据中心或备用控制平面。本文中控制数据中心也可以被称为引导数据中心,例如,被称为主动引导数据中心的主动控制数据中心和被称为备用引导数据中心的备用控制数据中心。控制数据中心包括配置其他数据中心和对数据中心的配置进行更改(例如,重新配置在数据中心上安装的服务、配置与数据中心上的服务相关联的软件工件等)所需的最小服务集。
数据中心配置模块1210在目标云平台上配置一个或多个控制数据中心。在一个实施方案中,数据中心配置模块1210在目标云平台上配置主控制数据中心和辅助控制数据中心。主控制数据中心用于处理配置数据中心或数据中心上的服务的请求,并且辅助控制数据中心代替主控制数据中心使用,例如作为备用控制数据中心。在主控制数据中心的一个或多个服务的故障、主控制数据中心的一个或多个服务的计划维护、主控制数据中心的数据存储的数据损坏、主数据中心中的安全漏洞或其他原因的情况下,可以使用辅助控制数据中心代替主控制数据中心。两个控制数据中心的使用提供了容错,因为两个控制数据中心同时出现故障或不可用的可能性明显低于单个控制数据中心出现故障或不可用的可能性。
数据中心配置模块1210可以在一个目标云平台上配置主控制数据中心,并且在不同的目标云平台上配置辅助控制数据中心。这在云平台出现故障的情况下提供了额外的容错能力。例如,如果两个控制数据中心都在同一个云平台上运行,并且由于任何原因云平台出现故障或无法访问云平台,则如果需要配置或重新配置任何服务,两个控制数据中心都将不可用,导致停机。在不同的云平台上运行两个控制数据中心,确保两个云平台都不可用的可能性极小,从而显著降低持续交付平台的停机几率。其他实施方案可以包括多于两个用于额外容错的控制数据中心。
持续交付请求路由器1220监视对租户数据中心的配置的请求、对租户数据中心上的配置或服务组或服务的请求等等,并将它们发送到控制数据中心。在一个实施方案中,如果主控制数据中心是功能性的,则持续交付请求路由器1220保持向主控制数据中心发送配置请求。持续交付请求路由器1220可以接收控制应当从主控制数据中心转移至另一控制数据中心(例如,辅助控制数据中心)的指示。可以在本文描述的各种情况的情况下接收该指示,例如,主控制数据中心的故障、主控制数据中心的计划停机时间等等。如果接收到这样的指示,则持续交付请求路由器1220开始将配置请求路由到另一个控制数据中心,例如,辅助控制数据中心。在一个实施方案中,持续交付请求路由器1220包括路由请求的域名服务(DNS)。
控制数据中心元数据存储1230存储用于配置任何控制数据中心的元数据,例如,主控制数据中心和辅助控制数据中心。可以使用声明性规范来接收描述控制中心的元数据,例如,图4中所示的声明性规范,其包括如本文进一步描述的特定的服务组或服务实例的集。数据中心配置模块1210调用软件发布管理模块来生成用于配置控制数据中心的特定于云平台的详细流水线255,并发送特定于云平台的详细流水线255以供执行,从而在目标云平台上创建或配置控制数据中心。
图13是示出根据一个实施方案的控制数据中心的架构的框图。控制数据中心包括服务集组,如图13中所示。这些服务组是在云平台中执行配置数据中心和在数据中心上执行软件工件的持续交付所必需的。根据实施方案,控制数据中心包括服务组,包括生产服务组1310、功能集成和测试服务组1320、基础服务组1330、访问控制服务组1340、加密服务组1350和站点桥服务组1360。其他实施方案可以包括更多或更少的服务组。控制数据中心的服务组是使用存储在控制数据中心元数据存储1230中的元数据来定义的,并且是使用用于控制数据中心的声明性规范来指定的。
生产服务组1310提供部署软件工件所需的服务,包括流水线生成、流水线执行等。功能集成和测试服务组1320提供用于执行软件工件的功能测试和集成测试的服务,以确定软件工件是否可以从一个环境推进到另一个环境。基础服务组1330包括基础服务,例如网络时间协议(NTP)、域名系统(DNS)和其他核心基础设施服务。访问控制服务组1340管理密码和凭证,并管理用户对计算资源的访问。加密服务组1350管理传输中和存储时的数据的加密。站点桥服务组1360提供组织网络(例如,作为多租户系统的租户的组织)和充当云平台中的端点的计算系统之间的连接。因此,控制数据中心包括执行持续交付所需的服务。计算系统访问控制数据中心,以在云平台中配置数据中心,并在云平台中部署的数据中心中部署软件工件。
控制数据中心被组织的所有系统或多租户系统用于持续交付,并且可能是故障点,因为控制数据中心的故障影响使用控制数据中心用于持续交付的所有实体。因此,实施方案使用如图14A-图14B中所示的容错架构。
图14A-图14B示出了根据一个实施方案的用于在云平台中配置的数据中心持续交付软件工件的控制数据中心的容错架构的架构。图14A-图14B都示出了主控制数据中心1410、辅助控制数据中心1420和租户数据中心1430。主控制数据中心1410和辅助控制数据中心1420可以在两个单独的地理区域中,例如,两个不同的状态。这确保了任何可能影响一个控制中心的灾难都不太可能影响另一个控制数据中心。
数据中心配置模块1210向主控制数据中心1410和辅助控制数据中心1420发送1415描述租户数据中心的元数据。主控制数据中心1410基于接收到的1415元数据生成用于配置租户数据中心的流水线。
如图14A中所示,主控制数据中心1410控制租户数据中心1430的配置过程。因此,主控制数据中心1410执行生成的流水线,并执行租户数据中心1430的基础设施配置1435。例如,主控制数据中心1410可以创建用户账户以供租户数据中心的声明性规范中定义的各种团队访问,并且根据租户数据中心的声明性规范配置所创建的用户账户可以访问的计算资源,使得用户账户能够执行声明性规范中指定的任何特定任务。控制数据中心基于描述租户数据中心的元数据、描述服务的元数据、描述服务组的元数据等,在云平台中动态创建用户账户并配置基础设施,作为持续交付过程的一部分。如果根据元数据不需要用户账户,则控制数据中心可以删除该账户,例如,以垃圾收集不再使用的旧账户。
根据一个实施方案,由控制数据中心创建用户账户包括以下步骤。控制数据中心访问租户数据中心的声明性规范。声明性规范可以被存储为描述租户数据中心的元数据。控制数据中心处理租户数据中心的声明性规范中的服务定义。例如,如果在租户数据中心的声明性规范中标识了新的服务定义,则控制数据中心确定配置新服务所需的用户账户,并创建新的用户账户。可能需要用户账户来访问计算资源,例如数据库、网络资源、文件系统、处理资源、负载均衡器、Kubernetes集群等等。控制数据中心配置租户数据中心的云平台的相关联的计算资源,以提供用户账户所请求的功能。例如,如果服务需要数据库访问,则控制数据中心可以在数据库中创建用户账户,并在数据库中配置一个或多个表空间,以允许新的用户账户在数据库中存储数据。控制数据中心执行任何生成的流水线来部署服务,并在租户数据中心上配置和管理服务和相关联的基础设施。
在主控制数据中心中注册创建的用户账户。注册用户账户包括将它们存储在数据存储中,主控制数据中心可以从数据存储中访问用户账户信息,并将它们用于与租户数据中心的软件工件的持续交付相关的任务。用户账户的注册向控制数据中心提供信息,以执行与服务相关联的各种动作,例如,更改配置、安装软件工件等等。当控制数据中心接收到与服务相关联的请求时,控制数据中心访问用户账户信息以标识与服务相关联的用户账户,并使用用户账户来执行任何必要的动作,例如升级、修补等。
主控制数据中心1410执行描述租户数据中心1430的配置状态的信息到辅助控制数据中心1420的转移1425。这导致主控制数据中心创建的用户账户也在辅助控制数据中心中注册。例如,主控制数据中心1410将描述在租户数据中心1430中创建的每个用户账户的信息和用于访问用户账户的凭证发送到辅助控制数据中心1420。在云平台中创建数据中心时,大型组织或多租户系统可能会创建数千个用户账户。
辅助控制数据中心1420从数据中心配置模块1210接收1415b描述租户数据中心的元数据。辅助控制数据中心1420生成用于租户数据中心配置的流水线,但不执行它们。辅助控制数据中心1420简单地存储生成的流水线,并基于从主控制数据中心1410接收的状态信息跟踪流水线的执行。辅助控制数据中心1420基于接收到的状态信息执行基础设施验证1445。例如,辅助控制数据中心1420访问经由状态转移1425接收的由主控制数据中心1410创建的每个用户账户,并验证用户账户是否可以访问由租户数据中心的声明性规范指定的任何计算资源,以及是否已经在租户数据中心中配置了适当的计算资源。
图14B示出了其中辅助控制数据中心已经控制执行租户数据中心1430的配置过程的配置。因此,在图14B中,辅助控制数据中心1420正在执行流水线并执行基础设施配置1455。辅助控制数据中心1420正在向主控制数据中心1410转移1475状态信息,例如,所创建的任何用户账户,并且主控制数据中心1410正在执行基础设施验证1465,以确保由辅助控制数据中心1420创建的用户账户能够访问由租户数据中心1420的声明性规范所指定的计算资源。因此,与图14A相比,在图14B中颠倒主控制数据中心1410和辅助控制数据中心1420的角色。从图14A到图14B的这种配置变化可能是由于主控制数据中心1410的一些故障而发生的。辅助控制数据中心1420可以在向主控制数据中心1410发送1475状态信息之前等待主控制数据中心1410的故障被纠正。辅助控制数据中心1420收集主控制数据中心1410不可用的持续时间的状态信息。辅助控制数据中心1420周期性地检查主控制数据中心1410是否可用,即,任何故障是否被修复(即,已修复)或者计划的停机时间是否结束。一旦主控制数据中心1410可用,则辅助控制数据中心1420将收集的状态信息作为批发送到主控制数据中心1410。之后,当辅助控制数据中心1420执行1455基础设施配置时,辅助控制数据中心1420继续发送状态信息。
一旦主控制数据中心完全运行,容错持续交付模块350可以将租户数据中心的整个配置过程的控制切换到主控制数据中心1410,使其成为主动控制数据中心,并使辅助控制数据中心1420成为备用控制数据中心,如图14A中所示。
在一个实施方案中,执行各种步骤以执行从主控制数据中心到辅助控制数据中心的切换。容错持续交付模块350首先确保没有新的流水线被触发以在主控制数据中心中执行。容错持续交付模块350接下来向从主控制数据中心发送指令,以完成当前正在执行的所有流水线。具体地,容错持续交付模块350识别处于运行状态的所有流水线,并发送指令以完成它们的执行。容错持续交付模块350改变持续交付请求路由器1220的配置,以开始将与云平台中的数据中心的持续交付和配置相关联的所有请求定向到辅助控制数据中心,而不是主控制数据中心。
如果在主控制数据中心中发生阻止主数据中心完成流水线执行的故障,则容错持续交付模块350使整个流水线自动失效。容错持续交付模块350使辅助控制数据中心执行在主控制数据中心中未能完成执行的所有流水线。在流水线执行期间执行的操作是幂等的。因此,如果操作被执行多次,则在系统上执行该操作的效果与执行该操作一次相同。例如,创建用户账户的操作检查该账户是否已经存在,以及是否具有租户数据中心的元数据中指定的对系统资源的所需访问权限。如果账户已经存在并且具有所需的访问权限,则控制数据中心不会采取任何进一步的动作。如果账户不存在,控制数据中心将创建账户。类似地,如果系统执行配置服务的动作,系统检查先前是否执行了配置。如果先前执行了配置,控制数据中心跳过剩余的步骤。如果之前没有执行配置,控制数据中心执行用于执行配置的步骤。
用于容错持续交付的过程
图15示出了根据实施方案的用于使用图14中所示的控制数据中心的容错架构在云平台上配置数据中心的过程。
容错持续交付模块350在云平台上配置1510主控制数据中心1410和辅助控制数据中心1420。容错持续交付模块350访问主控制数据中心1410和辅助控制数据中心1420的声明性规范,并在云平台上配置它们。主控制数据中心1410和辅助控制数据中心1420可以在两个不同的云平台上配置。
容错持续交付模块350接收1520在云平台上配置租户数据中心1430的请求。租户数据中心与多租户系统的租户相关联。尽管图15中描述的过程是结合多租户系统示出的,但是该技术可以应用于任何在线系统,例如,单个组织的在线系统。
容错持续交付模块350向主控制数据中心1410发送1530指令以配置租户数据中心。发送到主控制数据中心1410的指令使主控制数据中心1410执行以下步骤。主控制数据中心1410在云平台上针对租户数据中心配置基础设施,例如,通过根据声明性规范创建用户账户,并根据声明性规范配置云平台的计算资源以供用户账户访问。主控制数据中心1410周期性地向辅助控制数据中心传输1540为租户数据中心配置的基础设施的状态,例如,主控制数据中心1410周期性地向辅助控制数据中心1420传输描述所创建的用户账户和相关联的凭证的信息。
容错持续交付模块350向辅助控制数据中心1420传达发送指令,该发送指令使得辅助控制数据中心验证1540由主控制数据中心配置的租户数据中心的基础设施。例如,辅助控制数据中心1420验证由主控制数据中心1410创建并传输1540到辅助控制数据中心1420的任何用户账户是否可访问,并且可以访问云平台所需的计算资源。
图16示出了根据实施方案的用于处理主控制数据中心中的故障的过程。
容错持续交付模块350接收1610将云平台上租户数据中心的配置控制从主控制数据中心转移至辅助控制数据中心的请求。响应于接收到转移控制的请求,容错持续交付模块350将与租户数据中心的配置相关联的请求从主控制数据中心重定向1620到辅助控制数据中心。
容错持续交付模块350向辅助控制数据中心1420发送1630指令,以接管租户数据中心的配置过程。因此,辅助控制数据中心1420例如通过根据租户数据中心的声明性规范创建用户账户和配置云平台的计算资源来执行租户数据中心的配置。辅助控制数据中心1420向主控制数据中心1410传输1640租户数据中心的配置状态。主控制数据中心1410验证1640由辅助控制数据中心1420在租户数据中心上配置的基础设施,以确保根据租户数据中心的声明性规范创建的用户账户具有对云平台的计算资源的所需访问。
将一个控制数据中心D1的配置状态转移至另一个控制数据中心D2使得将控制从控制数据中心D1转移至另一个控制数据中心D2的过程高效,因为另一个控制数据中心D2不必重复已经由控制数据中心D1执行的处理。另一个控制数据中心D2可以从第一控制数据中心停止配置过程的地方恢复配置过程。
计算机架构
图17是示出根据实施方案的用作图1的环境100中所示的实体之一的通常的计算机系统的功能视图的高级框图。示出了联接到芯片组1704的至少一个处理器1702。还联接到芯片组1704的是存储器1706、存储设备1708、键盘1710、图形适配器1712、指示设备1714和网络适配器1716。显示器1718联接到图形适配器1712。在一个实施方案中,由存储器控制器集线器1720和I/O控制器集线器1722提供芯片组1704的功能。在另一个实施方案中,存储器1706直接联接到处理器1702而不是芯片组1704。
存储设备1708是非暂时性计算机可读存储介质,如硬盘驱动器、光盘只读存储器(CD-ROM)、DVD或固态存储器设备。存储器1706保存由处理器1702使用的指令和数据。指示设备1714可以是鼠标、轨迹球或其他类型的指示设备,并且与键盘1710结合使用以将数据输入到计算机系统200中。图形适配器1712在显示器1718上显示图像和其他信息。网络适配器1716将计算机系统1700联接到网络。
如本领域中已知的,计算机1700可以具有与图17中所示的那些不同的和/或其他部件。此外,计算机1700可以缺少某些图示的部件。例如,充当多租户系统110的计算机系统1700可以缺少键盘1710和指示设备1714。此外,存储设备1708可以是本地的和/或远离计算机1700的(例如体现在存储区域网络(SAN)内)。
计算机1700适于执行用于提供本文描述的功能的计算机模块。如本文所使用的,术语“模块”指的是用于提供指定功能的计算机程序指令和其他逻辑。模块可以用硬件、软件和/或固件来实施。模块可以包括一个或多个过程,和/或仅由过程的一部分提供。模块通常存储在存储设备1708上,加载到存储器1706中,并由处理器1702执行。
系统环境的实体所使用的计算机系统1700的类型可以根据实施方案和实体所使用的处理能力而变化。例如,客户端设备可以是具有有限处理能力的移动电话、小型显示器1718,并且可以缺少指示设备1714。相比之下,多租户系统或云平台可以包括协同工作以提供本文描述的功能的多个刀片服务器。
其他注意事项
部件的特定命名、术语的大写、属性、数据结构或任何其他编程或结构方面不是强制性的或重要的,并且实施所描述的实施方案的机制可以具有不同的名称、格式或协议。此外,如所描述的,系统可以经由硬件和软件的组合来实施,或者完全以硬件元件来实施。此外,本文描述的各种系统部件之间的功能的特定划分仅仅是示例性的,而不是强制性的;由单个系统部件执行的功能可以替代地由多个部件执行,并且由多个部件执行的功能可以替代地由单个部件执行。
以上描述的一些部分根据对信息的操作的算法和符号表示来呈现特征。这些算法描述和表示是数据处理技术领域的技术人员用来最有效地将其工作的实质传达给本领域的其他技术人员的方式。虽然在功能上或逻辑上描述了这些操作,但被理解为由计算机程序来实施。此外,在不丧失通用性的情况下,将这些操作安排称为模块或功能名称有时也被证明是方便的。
除非从上面的讨论中明确地说明,否则应该理解,在整个描述中,利用诸如“处理”或“计算”或“算数”或“确定”或“显示”等术语的讨论是指计算机系统或类似电子计算设备的动作和过程,其操纵和转换计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内表示为物理(电子)量的数据。
本文描述的某些实施方案包括以算法形式描述的处理步骤和指令。应当注意,实施方案的处理步骤和指令可以体现在软件、固件或硬件中,并且当体现在软件中时,可以下载以驻留在实时网络操作系统使用的不同平台上并从其进行操作。
所描述的实施方案还涉及用于执行本文的操作的装置。装置可以为所需目的而特别构造,或者其可以包括通用计算机,该通用计算机由存储在计算机可读介质上的计算机程序选择性地激活或重新配置,该计算机可读介质可以被计算机访问。这种计算机程序可以存储在非暂时性计算机可读存储介质中,例如但不限于包括软盘、光盘、CD-ROM、磁光盘的任何类型的盘、只读存储器、随机存取存储器、EPROM、EEPROM、磁卡或光卡、专用集成电路(ASIC)、或适用于存储电子指令的任何类型的介质,并且每种介质都联接到计算机系统总线。此外,说明书中提到的计算机可以包括单个处理器,或者可以是采用多个处理器设计以提高计算能力的架构。
本文提出的算法和操作与任何具体计算机或其他装置没有本质的关系。各种通用系统也可以与根据本文教导的程序一起使用,或者可以证明构造更专用的装置来执行所需的方法步骤是方便的。对于本领域的技术人员来说,各种这些系统所需的结构以及等效的变体将是显而易见的。此外,本实施方案不参考任何具体编程语言来描述。应当理解,可以使用各种编程语言来实施如本文所描述的实施方案的教导。
实施方案非常适用于多种拓扑上的各种各样的计算机网络系统。在该领域中,大型网络的配置和管理包括存储设备和计算机,其通过网络(如互联网)通信地联接到不同计算机和存储设备。
最后,应当注意,说明书中使用的语言主要是为了可读性和指导性目的而选择的,并且可以不是为了描绘或限定本发明主题而选择的。因此,实施方案的公开旨在是说明性的,但不是限制性的。
Claims (20)
1.一种用于在云平台上配置数据中心的计算机实施的方法,所述方法包括:
在所述云平台上配置主控制数据中心和辅助控制数据中心;
接收在云平台上配置租户数据中心的请求,所述租户数据中心与多租户系统的租户相关联;
向所述主控制数据中心发送指令以配置所述租户数据中心,所述指令使得所述主控制数据中心执行包括以下的步骤:
在所述云平台上针对所述租户数据中心配置基础设施,以及
周期性地将针对所述租户数据中心配置的基础设施的状态传输至所述辅助控制数据中心;
接收将对所述云平台上的所述租户数据中心的配置的控制从所述主控制数据中心转移至所述辅助控制数据中心的请求;和
响应于接收到转移控制的所述请求,将与所述租户数据中心的配置相关联的请求从所述主控制数据中心重定向至所述辅助控制数据中心。
2.根据权利要求1所述的计算机实施的方法,还包括:
向所述辅助控制数据中心发送指令,所述指令使得所述辅助控制数据中心验证由所述主控制数据中心配置的所述租户数据中心的所述基础设施。
3.根据权利要求1所述的计算机实施的方法,其中响应于接收到转移控制的请求,根据所述辅助控制数据中心从所述主控制数据中心接收的当前状态,所述辅助控制数据中心恢复所述租户数据中心的所述基础设施的配置。
4.根据权利要求3所述的计算机实施的方法,其中根据所述当前状态恢复所述一个或多个租户数据中心的所述基础设施的配置使得所述辅助控制数据中心执行先前由所述主控制数据中心执行的操作。
5.根据权利要求1所述的计算机实施的方法,其中配置每个租户数据中心包括:
接收用于所述租户数据中心的独立于云平台的声明性规范;和
编译所述独立于云平台的声明性规范,以生成特定于云平台的数据中心表示。
6.根据权利要求1所述的计算机实施的方法,其中配置所述一个或多个租户数据中心的基础设施包括在云平台上创建多个账户,每个账户根据所述租户数据中心的所述声明性规范进行配置。
7.根据权利要求1所述的计算机实施的方法,其中配置所述一个或多个租户数据中心的基础设施包括创建一个或多个流水线,每个流水线包括用于针对所述租户数据中心配置一个或多个数据中心实体的阶段。
8.根据权利要求1所述的计算机实施的方法,其中租户数据中心包括一个或多个服务组,其中每个服务组包括服务集。
9.根据权利要求1所述的计算机实施的方法,其中租户数据中心包括数据中心实体的层次结构,其中所述数据中心实体包括服务或服务组,其中每个服务组包括服务集。
10.根据权利要求1所述的计算机实施的方法,其中响应于由所述辅助控制数据中心恢复所述一个或多个租户数据中心的所述基础设施的配置,周期性地将由所述辅助控制数据中心针对所述租户数据中心配置的基础设施的状态传输至所述主控制数据中心。
11.根据权利要求1所述的计算机实施的方法,其中响应于以下一项或多项,接收将对所述云平台上的所述一个或多个数据中心的配置的控制从所述主控制数据中心转移至所述辅助控制数据中心的所述请求:
所述主控制数据中心的一个或多个服务的故障;
所述主控制数据中心的一个或多个服务的计划维护;
所述主控制数据中心的数据存储的数据损坏;或
所述主数据中心中的安全漏洞。
12.根据权利要求1所述的计算机实施的方法,其中所述主控制数据中心在第一云平台中,而所述辅助控制数据中心在第二云平台中。
13.一种用于存储指令的非暂时性计算机可读存储介质,当由一个或多个计算机处理器执行时,所述指令使得所述一个或多个计算机处理器执行用于在云平台上配置数据中心的步骤,所述步骤包括:
在所述云平台上配置主控制数据中心和辅助控制数据中心;
接收在云平台上配置租户数据中心的请求,所述租户数据中心与多租户系统的租户相关联;
向所述主控制数据中心发送指令以配置所述租户数据中心,所述指令使得所述主控制数据中心执行包括以下的步骤:
在所述云平台上针对所述租户数据中心配置基础设施,以及
周期性地将针对所述租户数据中心配置的基础设施的状态传输至所述辅助控制数据中心;
接收将对所述云平台上的所述租户数据中心的配置的控制从所述主控制数据中心转移至所述辅助控制数据中心的请求;和
响应于接收到转移控制的所述请求,将与所述租户数据中心的配置相关联的请求从所述主控制数据中心重定向至所述辅助控制数据中心。
14.根据权利要求13所述的非暂时性计算机可读存储介质,其中所述指令还使得所述一个或多个计算机处理器执行包括以下的步骤:
向所述辅助控制数据中心发送指令,所述指令使得所述辅助控制数据中心验证由所述主控制数据中心配置的所述租户数据中心的所述基础设施。
15.根据权利要求13所述的非暂时性计算机可读存储介质,其中响应于接收到转移控制的请求,根据所述辅助控制数据中心从所述主控制数据中心接收的当前状态,所述辅助控制数据中心恢复所述租户数据中心的所述基础设施的配置。
16.根据权利要求15所述的非暂时性计算机可读存储介质,其中根据所述当前状态恢复所述一个或多个租户数据中心的所述基础设施的配置使得所述辅助控制数据中心执行先前由所述主控制数据中心执行的操作。
17.根据权利要求13所述的非暂时性计算机可读存储介质,其中配置所述一个或多个租户数据中心的基础设施包括在云平台上创建多个账户,每个账户根据所述租户数据中心的声明性规范进行配置。
18.根据权利要求1所述的计算机实施的方法,其中响应于由所述辅助控制数据中心恢复所述一个或多个租户数据中心的所述基础设施的配置,周期性地将由所述辅助控制数据中心针对所述租户数据中心配置的基础设施的状态传输至所述主控制数据中心。
19.根据权利要求1所述的计算机实施的方法,其中响应于以下一项或多项,接收将对所述云平台上的一个或多个数据中心的配置的控制从所述主控制数据中心转移至所述辅助控制数据中心的所述请求:
所述主控制数据中心的一个或多个服务的故障;
所述主控制数据中心的一个或多个服务的计划维护;
所述主控制数据中心的数据存储的数据损坏;或
所述主数据中心中的安全漏洞。
20.一种计算系统,包括:
一个或多个计算机处理器;和
用于存储指令的非暂时性计算机可读存储介质,当由所述一个或多个计算机处理器执行时,所述指令使得所述一个或多个计算机处理器执行用于在云平台上配置数据中心的步骤,所述步骤包括:
在所述云平台上配置主控制数据中心和辅助控制数据中心;
接收在云平台上配置租户数据中心的请求,所述租户数据中心与多租户系统的租户相关联;
向所述主控制数据中心发送指令以配置所述租户数据中心,所述指令使得所述主控制数据中心执行包括以下的步骤:
在所述云平台上针对所述租户数据中心配置基础设施,以及
周期性地将针对所述租户数据中心配置的基础设施的状态传输至所述辅助控制数据中心;
接收将对所述云平台上的所述租户数据中心的配置的控制从所述主控制数据中心转移至所述辅助控制数据中心的请求;和
响应于接收到转移控制的所述请求,将与所述租户数据中心的配置相关联的请求从所述主控制数据中心重定向至所述辅助控制数据中心。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/161,387 US11388231B1 (en) | 2021-01-28 | 2021-01-28 | Multi-substrate fault tolerant continuous delivery of datacenter builds on cloud computing platforms |
US17/161,387 | 2021-01-28 | ||
PCT/US2022/014438 WO2022165269A1 (en) | 2021-01-28 | 2022-01-28 | Multi-substrate fault tolerant continuous delivery of datacenter builds on cloud computing platforms |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117120984A true CN117120984A (zh) | 2023-11-24 |
Family
ID=80787225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280016223.XA Pending CN117120984A (zh) | 2021-01-28 | 2022-01-28 | 云计算平台上构建数据中心的多基层容错持续交付 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11388231B1 (zh) |
EP (1) | EP4268080A1 (zh) |
JP (1) | JP2024506834A (zh) |
CN (1) | CN117120984A (zh) |
WO (1) | WO2022165269A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11018938B1 (en) * | 2020-11-06 | 2021-05-25 | Salesforce.Com, Inc. | Auditing metadata representation of a cloud-computing platform based datacenter |
US20220253297A1 (en) * | 2021-02-11 | 2022-08-11 | Capital One Services, Llc | Automated deployment of changes to applications on a cloud computing platform |
US11265211B1 (en) * | 2021-04-02 | 2022-03-01 | Vmware, Inc. | Continuous delivery of management configurations |
US11797351B2 (en) * | 2021-04-28 | 2023-10-24 | Salesforce, Inc. | High-availability continuous delivery of datacenter builds on cloud computing platforms |
US11968203B2 (en) * | 2021-11-29 | 2024-04-23 | Salesforce, Inc. | Administration of services executing in cloud platform based datacenters using token with data structure |
CN116055283B (zh) * | 2023-03-30 | 2023-05-30 | 国网江苏省电力有限公司信息通信分公司 | 支持全局设置租户应用资源配额的多平台统一云管系统 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140289391A1 (en) * | 2013-03-19 | 2014-09-25 | Cognizant Technology Solutions India Pvt. Ltd. | Framework for facilitating implementation of multi-tenant saas architecture |
US20140317716A1 (en) * | 2013-04-18 | 2014-10-23 | International Business Machines Corporation | Extending infrastructure security to services in a cloud computing environment |
US9087322B1 (en) * | 2011-12-22 | 2015-07-21 | Emc Corporation | Adapting service provider products for multi-tenancy using tenant-specific service composition functions |
US20150381576A1 (en) * | 2014-06-30 | 2015-12-31 | International Business Machines Corporation | Multi-tenant secure separation of data in a cloud-based application |
US20160306719A1 (en) * | 2015-04-14 | 2016-10-20 | Karolin Laicher | Disaster recovery framework for cloud delivery |
CN106897947A (zh) * | 2017-01-04 | 2017-06-27 | 上海易谷网络科技有限公司 | 一种基于云平台的多租户服务快速部署方法 |
CN109416651A (zh) * | 2016-06-15 | 2019-03-01 | 微软技术许可有限责任公司 | 多租户云计算环境中的更新协调 |
US20190098055A1 (en) * | 2017-09-28 | 2019-03-28 | Oracle International Corporation | Rest-based declarative policy management |
US20190138342A1 (en) * | 2015-12-09 | 2019-05-09 | Commvault Systems, Inc. | Live synchronization and management of virtual machines across computing and virtualization platforms and using live synchronization to support disaster recovery |
CN109889595A (zh) * | 2019-02-26 | 2019-06-14 | 中电科软件信息服务有限公司 | 基于多租户的高可用云基础设施管理系统 |
CN110557975A (zh) * | 2018-04-02 | 2019-12-10 | 甲骨文国际公司 | 用于多租户身份云服务的租户数据比较 |
CN110622484A (zh) * | 2018-04-04 | 2019-12-27 | 甲骨文国际公司 | 多租户身份云服务的本地写入 |
CN111625346A (zh) * | 2019-02-27 | 2020-09-04 | 慧与发展有限责任合伙企业 | 高性能计算基础设施即服务 |
US10819598B1 (en) * | 2019-06-28 | 2020-10-27 | Sap Se | Metering multi-tenant, microservice architecture-based integration service in a cloud computing environment |
CN112166588A (zh) * | 2019-02-19 | 2021-01-01 | 甲骨文国际公司 | 多租户身份云服务的租户复制自举 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8412809B2 (en) * | 2007-10-24 | 2013-04-02 | International Business Machines Corporation | Method, apparatus and computer program product implementing multi-tenancy for network monitoring tools using virtualization technology |
US9571896B2 (en) * | 2012-12-10 | 2017-02-14 | Time Warner Cable Enterprises Llc | Methods and apparatus for dynamic management and bandwidth allocation for content delivery |
US9519553B2 (en) * | 2014-12-31 | 2016-12-13 | Servicenow, Inc. | Failure resistant distributed computing system |
CN104516795A (zh) * | 2015-01-15 | 2015-04-15 | 浪潮(北京)电子信息产业有限公司 | 一种数据存取方法及系统 |
US10534417B1 (en) * | 2015-03-10 | 2020-01-14 | Amazon Technologies, Inc. | Mass storage device electrical power consumption monitoring |
CN104683161B (zh) * | 2015-03-18 | 2018-06-12 | 新华三技术有限公司 | 基于SaaS的网络管理方法及装置 |
US10270712B1 (en) * | 2015-03-31 | 2019-04-23 | EMC IP Holding Company LLC | Virtual storage network connectivity service |
US10193961B2 (en) * | 2015-12-21 | 2019-01-29 | Amazon Technologies, Inc. | Building deployment pipelines for a production computing service using live pipeline templates |
US10957326B2 (en) * | 2016-12-30 | 2021-03-23 | Google Llc | Device identifier dependent operation processing of packet based data communication |
US11593234B2 (en) * | 2020-01-16 | 2023-02-28 | Vmware, Inc. | Cloud restart for VM failover and capacity management |
-
2021
- 2021-01-28 US US17/161,387 patent/US11388231B1/en active Active
-
2022
- 2022-01-28 EP EP22705499.6A patent/EP4268080A1/en active Pending
- 2022-01-28 CN CN202280016223.XA patent/CN117120984A/zh active Pending
- 2022-01-28 WO PCT/US2022/014438 patent/WO2022165269A1/en active Application Filing
- 2022-01-28 JP JP2023545874A patent/JP2024506834A/ja active Pending
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9087322B1 (en) * | 2011-12-22 | 2015-07-21 | Emc Corporation | Adapting service provider products for multi-tenancy using tenant-specific service composition functions |
US20140289391A1 (en) * | 2013-03-19 | 2014-09-25 | Cognizant Technology Solutions India Pvt. Ltd. | Framework for facilitating implementation of multi-tenant saas architecture |
US20140317716A1 (en) * | 2013-04-18 | 2014-10-23 | International Business Machines Corporation | Extending infrastructure security to services in a cloud computing environment |
US20150381576A1 (en) * | 2014-06-30 | 2015-12-31 | International Business Machines Corporation | Multi-tenant secure separation of data in a cloud-based application |
US20160306719A1 (en) * | 2015-04-14 | 2016-10-20 | Karolin Laicher | Disaster recovery framework for cloud delivery |
US20190138342A1 (en) * | 2015-12-09 | 2019-05-09 | Commvault Systems, Inc. | Live synchronization and management of virtual machines across computing and virtualization platforms and using live synchronization to support disaster recovery |
CN109416651A (zh) * | 2016-06-15 | 2019-03-01 | 微软技术许可有限责任公司 | 多租户云计算环境中的更新协调 |
CN106897947A (zh) * | 2017-01-04 | 2017-06-27 | 上海易谷网络科技有限公司 | 一种基于云平台的多租户服务快速部署方法 |
US20190098055A1 (en) * | 2017-09-28 | 2019-03-28 | Oracle International Corporation | Rest-based declarative policy management |
CN110557975A (zh) * | 2018-04-02 | 2019-12-10 | 甲骨文国际公司 | 用于多租户身份云服务的租户数据比较 |
CN110622484A (zh) * | 2018-04-04 | 2019-12-27 | 甲骨文国际公司 | 多租户身份云服务的本地写入 |
CN112166588A (zh) * | 2019-02-19 | 2021-01-01 | 甲骨文国际公司 | 多租户身份云服务的租户复制自举 |
CN109889595A (zh) * | 2019-02-26 | 2019-06-14 | 中电科软件信息服务有限公司 | 基于多租户的高可用云基础设施管理系统 |
CN111625346A (zh) * | 2019-02-27 | 2020-09-04 | 慧与发展有限责任合伙企业 | 高性能计算基础设施即服务 |
US10819598B1 (en) * | 2019-06-28 | 2020-10-27 | Sap Se | Metering multi-tenant, microservice architecture-based integration service in a cloud computing environment |
Non-Patent Citations (1)
Title |
---|
QQXHB: "多租户SaaS平台的三大数据库方案及数据库设计的五大约束", pages 1 - 4, Retrieved from the Internet <URL:https://blog.csdn.net/qq_43792385/article/details/99287711> * |
Also Published As
Publication number | Publication date |
---|---|
EP4268080A1 (en) | 2023-11-01 |
US20220239736A1 (en) | 2022-07-28 |
JP2024506834A (ja) | 2024-02-15 |
WO2022165269A1 (en) | 2022-08-04 |
US11388231B1 (en) | 2022-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117120984A (zh) | 云计算平台上构建数据中心的多基层容错持续交付 | |
US11561784B2 (en) | Versioning of pipeline templates for continuous delivery of services on datacenters configured in cloud platforms | |
US11487546B2 (en) | Change management of services deployed on datacenters configured in cloud platforms | |
US11573786B1 (en) | Deployment strategies for continuous delivery of software artifacts in cloud platforms | |
US11356508B1 (en) | Retry strategies for handling failures during continuous delivery of software artifacts in a cloud platform | |
US12056537B2 (en) | Managing execution of continuous delivery pipelines for a cloud platform based data center | |
US11797351B2 (en) | High-availability continuous delivery of datacenter builds on cloud computing 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 | |
US11733987B2 (en) | Executing shared pipelines for continuous delivery of services in cloud platforms | |
US11392361B2 (en) | Software release orchestration for continuous delivery of features in a cloud platform based data center | |
US11277303B1 (en) | Declarative specification based override mechanism for customizing data centers deployed on cloud platforms | |
US20220147399A1 (en) | Declarative language and compiler for provisioning and deploying data centers on cloud platforms | |
US11403145B1 (en) | Enforcing system configuration freeze of services deployed via continuous delivery on datacenters configured in cloud platforms | |
US20240220222A1 (en) | Orchestration of datacenter creation on a cloud platform | |
US11848829B2 (en) | Modifying a data center based on cloud computing platform using declarative language and compiler | |
JP2023551963A (ja) | クラウドプラットフォームにおいて構成されたデータセンタへのソフトウェアリリースのデプロイ | |
WO2022154811A1 (en) | System configuration freeze and change management of services deployed via continuous delivery on datacenters configured in cloud platforms | |
US20240256250A1 (en) | Orchestration of upgrades of datacenters deployed in cloud platforms | |
US20240256297A1 (en) | Orchestration of datacenter destruction on a cloud platform | |
US20240256251A1 (en) | Orchestration of software releases on a cloud platform | |
US20240256497A1 (en) | Testing templates used for implementing infrastructure as code | |
EP4217863A1 (en) | Declaratively provisioning resources on cloud platforms | |
CN117149259A (zh) | 应用配置库创建方法、应用发布方法及装置、电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40103676 Country of ref document: HK |