CN111868685A - 用于对装置的云环境进行版本控制的系统和方法 - Google Patents
用于对装置的云环境进行版本控制的系统和方法 Download PDFInfo
- Publication number
- CN111868685A CN111868685A CN201980018919.4A CN201980018919A CN111868685A CN 111868685 A CN111868685 A CN 111868685A CN 201980018919 A CN201980018919 A CN 201980018919A CN 111868685 A CN111868685 A CN 111868685A
- Authority
- CN
- China
- Prior art keywords
- environment
- version
- cloud
- resource template
- resource
- 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 title claims abstract description 60
- 230000004044 response Effects 0.000 claims abstract description 8
- 230000008859 change Effects 0.000 claims description 22
- 238000013507 mapping Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 13
- 230000004069 differentiation Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000005012 migration Effects 0.000 description 8
- 238000013508 migration Methods 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 3
- 241000699666 Mus <mouse, genus> Species 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 244000062793 Sorghum vulgare Species 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 235000019713 millet Nutrition 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000000859 sublimation Methods 0.000 description 1
- 230000008022 sublimation Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- 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
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
Abstract
公开的实施例描述了用于对装置的云环境的进行版本控制的系统和方法。版本控制系统可以存储用于使用多个云提供商中的云提供商的装置环境的第一版本的快照。该环境可以包括云提供商的一个或多个资源模板文件和一个或多个部署应用编程接口(API)。版本控制系统可以接收自动部署装置环境的第二版本的请求。该环境的第二版本的快照可以包括不同于该环境的第一版本的快照的一个或多个资源模板文件的至少一个第二资源模板文件。该版本控制系统可以响应于该请求自动部署环境的第二版本。
Description
相关申请的交叉引用
本申请要求于2018年1月24日提交的名称为“SYSTEMS AND METHODS FORVERSIONING A CLOUD ENVIRONMENT FOR A DEVICE”的美国专利申请No.15/878,892的优先权和利益,其全部内容通过引用合并于此以用于所有目的。
技术领域
本申请总体上涉及用于对装置的云环境进行版本控制的系统和方法。特别地,本申请涉及用于简化和抽象化特定部署协议和应用编程接口(API)以允许用户容易地创建和保存云计算环境的版本的系统和方法。
背景技术
云服务提供商向需要访问软件和硬件工具的个人和组织提供此类工具。通常,由云服务提供的软件和硬件(包括虚拟化的硬件)的任何组合可以被称为云环境。用户可能希望随着时间推移修改云环境的某些方面。用户可能还希望能够在稍后的时间还原到较早版本的云环境,或者可能希望将云环境迁移到不同的云提供商。但是,云提供商之间的版本控制和迁移可能需要对特定的部署协议、应用编程接口(API)和其他程序详细信息的广泛了解,而这些缺乏经验的用户可能并不了解。
发明内容
用于对云计算环境进行版本控制的现有解决方案将传统的版本控制系统(例如Git)与模板的版本控制结合在一起。模板可以是由云服务提供商提供的模板。但是,将这种版本控制系统与特定于特定云服务提供商的模板一起使用可能需要对特定云提供商部署协议和应用编程接口(API)有深入了解,以便创建要部署到云的配置文件。本公开描述了可以允许用户手动设置云环境的实例,然后从该基础设施创建云环境的映像的技术。此外,本公开描述了用于在不同的云提供商的服务之间创建映射的技术,其可以允许用户在两个或更多个不同的云提供商之间迁移云环境,而无需手动转换模板或过程来完成该转换过程。
学习对不同的云提供商的云环境实例的部署进行版本控制,需要了解其各自的部署API的知识以及任何资源模板文件或描述资源的其他文件的知识。此外,还可能需要特定版本控制软件和管理工具的知识,以便在云提供商的环境中使用程序化部署和管理。
然而,如本公开中所描述的,使用可以利用云提供商直接与用户环境交互的版本控制系统,可以允许不太有经验的用户(例如,个人和小型公司)有随着时间推移维护其云环境的历史记录以及随着时间推移还原其云基础设施的选项、设置或其他参数的能力。因此,本公开通过允许具有有限编程知识的用户设置云环境并制作云环境的快照来提供了针对上述问题的解决方案。可以对云环境的快照进行版本控制,从而允许用户在需要时返回到云环境的特定状态。用户还可以跟踪云环境的不同版本之间的更改,并可以轻松地将更改应用于当前云环境。一旦用户设置了云环境,用户就可以将云环境保存到系统的版本控制组件中以保存更改或者将环境更改为以前的状态。因此,本公开的系统和方法可以允许用户执行所需的操作,以便保留云基础设施的记录并在必要时返回到先前状态,而不必以编程方式与云服务提供商进行交互(其对于不太有经验的用户这可能是一个挑战)。
在一些实施例中,本公开的系统和方法可以利用与云服务提供商无关的可以在任何云环境的快照中捕获的通用模板。这样的模板可以足够通用,以允许在不同云提供商的部署协议和API之间进行映射。因此,该系统还可以用作在云提供商之间迁移云环境的可能的迁移工具。
本公开的一个方面针对一种用于对装置的云环境进行版本控制的方法。该方法可以包括由版本控制系统存储用于使用多个云提供商中的云提供商的装置环境的第一版本的快照。该环境可以包括云提供商的一个或多个资源模板文件以及一个或多个部署应用编程接口(API)。版本控制系统可以存储环境版本的多个快照。该方法可以包括由版本控制系统接收自动部署装置环境的第二版本的请求。该环境的第二版本的快照可以包括至少一个第二资源模板文件,该第二资源模板文件不同于该环境的第一版本的快照的一个或多个资源模板文件。该方法可以包括:由版本控制系统响应于该请求而自动地部署该装置环境的第二版本,以将该装置环境改变为使用环境的第二版本的一个或多个资源模板文件以及部署API的版本。
在一些实施例中,装置环境的第二版本可以对应于以下至少一项的改变:(i)云提供商的一个或多个部署API的版本,或者(ii)该云提供商使用的一个或多个资源模板文件的格式或语法。在一些实施例中,该方法进一步包括接收自动部署关于多个云提供商中的第二云提供商的环境的第二版本的请求。在一些实施例中,该方法进一步包括自动部署环境的第二版本以将装置环境从使用云提供商改变为使用第二云提供商。
在一些实施例中,该方法还包括识别包括在环境的第一版本中但不包括在环境的第二版本中的至少一个资源模板文件。该方法还可以包括从环境的第一版本中释放至少一个资源模板文件。在一些实施例中,该方法还包括识别包括在环境的第二版本中但不包括在环境的第一版本中的至少一个资源模板文件。该方法还可以包括向环境的第一版本分配至少一个资源模板文件。
在一些实施例中,一个或多个资源模板文件中的每个资源模板文件包括要经由云提供商部署的相应资源的一个或多个参数值。在一些实施例中,环境的第一版本的一个或多个资源模板文件具有与环境的第二版本的一个或多个资源模板不同的格式或语法。
在一些实施例中,环境的第一版本和环境的第二版本中的每一个的一个或多个资源模板文件具有用于向多个云提供商部署的公共格式或语法。在一些实施例中,该方法还包括修改一个或多个资源模板文件以将该公共格式或语法改变为云提供商所支持的格式或语法。
本公开的另一方面针对一种用于对装置的云环境进行版本控制的系统。该系统可以包括服务器,该服务器包括一个或多个处理器,其被耦合到存储器,并且被配置为存储用于使用多个云提供商中的云提供商的装置环境的第一版本的快照。该环境可以包括云提供商的一个或多个资源模板文件以及一个或多个部署应用编程接口(API)。服务器可以存储环境版本的多个快照。该系统还可以包括在服务器上可执行的版本控制系统。可以将版本控制系统配置为接收自动部署装置环境的第二版本的请求。该环境的第二版本的快照可以包括至少一个第二资源模板文件,该第二资源模板文件不同于该环境的第一版本的快照的一个或多个资源模板文件。版本控制系统还可以配置为响应于请求而自动部署装置环境的第二版本,以将装置环境改变为使用环境的第二版本的一个或多个资源模板文件以及部署API的版本。
在一些实施例中,装置环境的第二版本可以对应于以下至少一项的改变:(i)云提供商的一个或多个部署API的版本,或者(ii)由该云提供商使用的一个或多个资源模板文件的格式或语法。在一些实施例中,版本控制系统还被配置为接收自动部署关于多个云提供商中的第二云提供商的环境的第二版本的请求。在一些实施例中,版本控制系统还被配置为自动部署环境的第二版本,以将装置的环境从使用该云提供商改变为使用第二云提供商。
在一些实施例中,版本控制系统还被配置为识别包括在环境的第一版本中的但不包括在环境的第二版本中的至少一个资源模板文件,并从环境的第一版本中释放该至少一个资源模板文件。在一些实施例中,版本控制系统还被配置为识别包括在环境的第二版本中的但不包括在环境的第一版本中的至少一个资源模板文件,并向环境的第一版本分配该至少一个资源模板文件。
在一些实施例中,一个或多个资源模板文件中的每个资源模板文件包括要经由云提供商部署的相应资源的一个或多个参数值。在一些实施例中,环境的第一版本的一个或多个资源模板文件具有与环境的第二版本的一个或多个资源模板不同的格式或语法。
在一些实施例中,环境的第一版本和环境的第二版本中的每一个的一个或多个资源模板文件具有用于向多个云提供商部署的公共格式或语法。在一些实施例中,服务器还被配置为修改一个或多个资源模板文件,以将该公共格式或语法改变为云提供商所支持的格式或语法。
附图说明
通过参考以下结合附图的描述,本解决方案的前述和其他目的、方面、特征和优点将变得更加明显和更好地理解,其中:
图1A-1D是计算装置的实施例的框图;
图2是用于对计算装置的云环境进行版本控制的系统的实施例的框图;
图3是描绘图2所示系统的实施例中的信息流的图。
图4是用于对计算装置的云环境进行版本控制的方法的实施例的流程图。
当结合附图时,根据下面阐述的详细描述,本解决方案的特征和优点将变得更加明显,在附图中,相似的附图字符始终标识相应的元件。在附图中,相似的附图标记通常表示相同、功能相似和/或结构相似的元件。
具体实施方式
为了阅读下面各个实施例的描述,说明书各节及其各自内容的以下描述可能会有所帮助:
A节描述了计算环境,该计算环境可用于实践本文所述的实施例;以及
B节描述用于对装置的云环境进行版本控制的系统和方法。
A.计算环境
在讨论设备和/或客户端的系统和方法的实施例的细节之前,讨论可以在其中部署这样的实施例的计算环境可能是有帮助的。图1A和1B描绘了可用于实践下面在B节中进一步描述的系统和装置的实施例的计算装置100的框图。如图1A和1B所示,每个计算装置100包括中央处理单元101和主存储单元122。参照图1A,计算装置100可以包括视觉显示装置124,键盘126和/或诸如鼠标的指示装置127。每个计算装置100还可以包括另外的可选元件,例如一个或多个输入/输出装置130a-130b(总的使用标号130)和与中央处理单元101通信的高速缓冲存储器140。在某些实施例中,输入/输出装置130a-130b可以包括音频输出装置,例如扬声器、耳机或配置为与外部音频输出装置通信耦合的音频输出端口。
中央处理单元101是响应和处理从主存储单元122提取的指令的任何逻辑电路。在许多实施例中,中央处理单元由微处理器单元提供,例如:由加利福尼亚州山景城Intel公司制造的产品;韩国水原Samsung电子制造的产品;由爱达荷州博伊西的MicronTechnology制造的产品;由加利福尼亚州圣克拉拉的Transmeta公司制造的产品;由纽约怀特普莱恩斯International Business Machines公司制造的产品;或者由位于加利福尼亚州森尼韦尔的Advanced Micro Devices制造的产品等。计算装置100可以基于这些处理器中的任何一个,或者能够按照本文所述进行操作的任何其他处理器。
主存储单元122可以是一个或多个能够存储数据并允许任何存储位置被微处理器101直接访问的存储芯片,例如静态随机存取存储器(SRAM)、突发SRAM或同步突发SRAM(BSRAM)、动态随机存储器(DRAM)、快速页面模式DRAM(FPM DRAM)、增强型DRAM(EDRAM)、扩展数据输出RAM(EDO RAM),扩展数据输出DRAM(EDO DRAM)、突发扩展数据输出DRAM(BEDODRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100 SDRAM、双数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、SyncLink DRAM(SLDRAM),直接Rambus DRAM(DRDRAM)或铁电RAM(FRAM)。主存储器122可以基于任何上述存储芯片,或者能够按照本文所述进行操作的任何其他可用的存储芯片。在图1A所示的实施例中,处理器101经由系统总线150(在下面更详细地描述)与主存储器122通信。图1B描绘了计算装置100的实施例,其中处理器经由存储器端口103直接与主存储器122通信。例如,在图1B中,主存储器122可以是DRDRAM。
图1B描绘了一个实施例,其中主处理器101经由有时称为背侧总线的辅助总线与高速缓冲存储器140直接通信。在其他实施例中,主处理器101使用系统总线150与高速缓冲存储器140通信。高速缓冲存储器140通常具有比主存储器122更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图1B所示的实施例中,处理器101经由本地系统总线150与各种I/O装置130通信。各种总线可用于将中央处理单元101连接到任何I/O装置130,包括VESAVL总线、ISA总线、EISA总线、微通道架构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于其中I/O装置是视频显示器124的实施例,处理器101可以使用高级图形端口(AGP)来与显示器124通信。图1B描绘了计算机100的实施例,其中主处理器101经由超传输、快速I/O或InfiniBand直接与I/O装置130b通信。图1B还描绘了本地总线和直接通信被混合的实施例:处理器101使用本地互连总线与I/O装置130b通信,同时直接与I/O装置130a通信。
计算装置100可以支持任何合适的安装装置116,例如CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、各种格式的磁带驱动器、USB装置、硬盘驱动器或任何其他适合安装软件和程序的装置。计算装置100可以进一步包括存储装置128,例如一个或多个硬盘驱动器或独立磁盘的冗余阵列,用于存储操作系统和其他相关软件,以及用于存储应用软件程序。可选地,任何安装装置116也可以用作存储装置128。此外,操作系统和软件可以从可引导介质启动,例如,储如的可引导CD,该可引导CD用于从knoppix.net可获得的作为GNU/Linux发行版的GNU/Linux。
此外,计算装置100可以包括网络接口118,以通过各种连接来接口局域网(LAN)、广域网(WAN)或互联网,所述连接包括但不限于标准电话线、LAN或WAN链接(例如802.11、T1、T3、56kb、X.25),宽带连接(例如ISDN、帧中继、ATM),无线连接或上述任意或全部的某种组合。网络接口118可以包括内置网络适配器、网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适合于将计算装置100接口到任何类型的能够通信并执行本文所述操作的网络的任何其他装置。
计算装置100中可以存在各种各样的I/O装置130a-130n。输入装置包括键盘、鼠标、触控板、轨迹球、麦克风和绘图板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机。如图1A所示,I/O装置130可以由I/O控制器123控制。I/O控制器可以控制一个或多个I/O装置,例如键盘126和指示装置127,例如鼠标或光学笔。此外,I/O装置还可以为计算装置100提供存储128和/或安装介质116。在其他实施例中,计算装置100可以提供USB连接以接收手持USB存储装置,诸如由加利福尼亚州洛斯阿拉米托斯的TwintechIndustry公司或加利福尼亚州米尔皮塔斯的SanDisk公司制造的USB闪存驱动器系列装置。
在一些实施例中,计算装置100可以包括或连接到多个显示装置124a-124n,每个显示装置可以是相同或不同的类型和/或形式。这样,任何I/O装置130a-130n和/或I/O控制器123可以包括任何类型和/或形式的合适的硬件、软件、或硬件和软件的组合以支持、启用或提供由计算装置100连接和使用多个显示装置124a-124n。例如,计算装置100可以包括任何类型和/或形式的视频适配器、视频卡、驱动程序和/或库,以进行接口、通信、连接或者使用显示装置124a-124n。在一个实施例中,视频适配器可以包括多个连接器以与多个显示装置124a-124n接口。在其他实施例中,计算装置100可以包括多个视频适配器,每个视频适配器连接到一个或多个显示装置124a-124n。在一些实施例中,计算装置100的操作系统的任何部分可以被配置为使用多个显示器124a-124n。在其他实施例中,显示装置124a-124n中的一个或多个可以由一个或多个其他计算装置提供,储如例如经由网络连接到计算装置100的计算装置100a和100b。这些实施例可以包括被设计和构造为将另一台计算机的显示装置用作计算装置100的第二显示装置124a的任何类型的软件。本领域的普通技术人员将认识并理解可以将计算装置100配置为具有多个显示装置124a-124n的各种方式和实施例。
在其他实施例中,I/O装置130可以是系统总线150和外部通信总线之间的桥接器170,该外部通信总线例如是USB总线、Apple Desktop总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire 800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线,HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤通道总线或串行连接小型计算机系统接口总线。
图1A和1B中描绘的那种计算装置100通常在操作系统的控制下进行操作,该操作系统控制任务的调度和对系统资源的访问。计算装置100可以运行任何操作系统,例如Windows操作系统的任何版本、Unix和Linux操作系统的不同版本、用于Macintosh计算机的Mac的任何版本、任何嵌入式操作系统、任何实时操作系统、任何开源操作系统、任何专有操作系统、用于移动计算装置的任何操作系统、或能够在计算装置上运行并执行本文所述操作的任何其他操作系统。典型的操作系统包括:由华盛顿州雷德蒙德的Microsoft公司制造的WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWS NT 3.51、WINDOWS NT 4.0、WINDOWS CE、WINDOWS XP、WINDOWS 7和WINDOWS 10;由加利福尼亚州库比蒂诺的Apple计算机制造的MacOS;由纽约州阿蒙克的国际商业机器公司制造的OS/2,;以及由犹他州盐湖城的Caldera公司发行的免费提供的操作系统Linux,或任何类型和/或形式的UNIX操作系统。
在其他实施例中,计算装置100可以具有不同的处理器、操作系统以及与该装置一致的输入装置。例如,在一个实施例中,计算机100可以是智能手机或平板电脑,诸如由Apple公司、由三星电子、由小米公司或Google公司开发的那些。在本实施例中,智能电话或平板电脑可以在操作系统(如Android或iOS)的控制下操作并且可以包括指示笔输入装置以及一个触敏屏。此外,计算装置100可以是能够通信并且具有足够处理器能力和存储器容量以执行本文所述操作的任何工作站、台式计算机、膝上型计算机或笔记本计算机、服务器、手持计算机、移动电话、任何其他计算机、或其他形式的计算或电信装置。
如图1C所示,计算装置100可以包括多个处理器,并且可以提供用于同时执行指令或用于同时在多于一条数据上执行一个指令的功能。在一些实施例中,计算装置100可以包括具有一个或多个核的并行处理器。在这些实施例的一个中,计算装置100是共享存储器并行装置,具有多个处理器和/或多个处理器核,访问作为单个全局地址空间的所有可用存储器。在这些实施例的另一个中,计算装置100是具有多个处理器的分布式存储器并行装置,每个处理器仅访问本地存储器。在这些实施例的又一个中,计算装置100具有共享的一些存储器和只能由特定处理器或处理器子集访问的某些存储器。在这些实施例的又一个中,诸如多核微处理器的计算装置100将两个或更多个独立处理器组合成单个封装,通常是单个集成电路(IC)。在这些实施例的又一个中,计算装置100包括芯片,该芯片具有单元宽带引擎架构,并且包括功率处理器元件和多个协同处理元件,该功率处理器元件和多个协同处理元件通过可称为元素互连总线的内部高速总线连接在一起。
在一些实施例中,处理器提供用于在多条数据上同时执行单个指令(SIMD)的功能。在其他实施例中,处理器提供用于在多条数据上同时执行多条指令(MIMD)的功能。在其他实施例中,处理器可以在单个装置中使用SIMD和MIMD内核的任意组合。
在一些实施例中,计算装置100可以包括图形处理单元。在图1D中描绘的这些实施例的一个中,计算装置100包括至少一个中央处理单元101和至少一个图形处理单元。在这些实施例的另一个中,计算装置100包括至少一个并行处理单元和至少一个图形处理单元。在这些实施例的又一个中,计算装置100包括任何类型的多个处理单元,多个处理单元之一包括图形处理单元。
在一些实施例中,第一计算装置100a代表客户端计算装置100b的用户执行应用。在其他实施例中,计算装置100a执行虚拟机,该虚拟机提供执行会话,在该会话中,应用代表用户或客户端计算装置100b执行。在这些实施例之一中,执行会话是托管的桌面会话。在这些实施例的另一个中,计算装置100执行终端服务会话。终端服务会话可以提供托管的桌面环境。在这些实施例的又一个中,执行会话提供对计算环境的访问,该计算环境可以包括以下一项或多项:应用、多个应用、桌面应用、以及可以在其中执行一个或多个应用的桌面会话。
B.对装置的云环境进行版本控制
用于对云计算环境进行版本控制的现有解决方案将传统的版本控制系统(例如Git)与模板的版本结合在一起。模板可以是由云服务提供商提供的模板。但是,将这种版本控制系统与特定于特定云服务提供商的模板一起使用可能需要对特定云提供商部署协议和应用编程接口(API)有深入了解,以便创建要部署到云的配置文件。本公开描述了可以允许用户手动设置云环境的实例,然后从该基础设施创建云环境的映像的技术。此外,本公开描述了用于在不同的云提供商的服务之间创建映射的技术,其可以允许用户在两个或更多个不同的云提供商之间迁移云环境,而无需手动转换模板或过程来完成该转换过程。
学习使用不同的云提供商对云环境的实例的部署进行版本控制需要了解其各自的部署API的知识以及任何资源模板文件或描述资源的其他文件的知识。此外,还可能需要特定版本控制软件和管理工具的知识,以便在云提供商的环境中使用程序化部署和管理。
然而,如本公开中所描述的,使用可以利用云提供商直接与用户环境交互的版本控制系统可以允许不太有经验的用户(例如,个人和小型公司)有随着时间推移维护其云环境的历史记录以及随着时间推移还原其云基础设施的选项、设置或其他参数的能力。因此,本公开通过允许具有有限编程知识的用户设置云环境并制作云环境的快照来提供了针对上述问题的解决方案。可以对云环境的快照进行版本控制,从而允许用户在需要时返回到云环境的特定状态。用户还可以跟踪云环境的不同版本之间的更改,并可以轻松地将更改应用于当前云环境。一旦用户设置了云环境,用户就可以将云环境保存到系统的版本控制组件中以保存更改,或者将环境更改为以前的状态。因此,本公开的系统和方法可以允许用户执行所需的操作,以便保留云基础设施的记录并在必要时返回到先前状态,而不必以编程方式与云服务提供商进行交互,这对于不太有经验的用户可能是一个挑战。
在一些实施例中,本公开的系统和方法可以利用与云服务提供商无关的可以在任何云环境的快照中捕获的通用模板。这样的模板可以足够通用,以允许在不同云提供商的部署协议和API之间进行映射。因此,该系统还可以用作在云提供商之间迁移云环境的可能的迁移工具。
图2是用于对计算装置的云环境进行版本控制的系统200的实施例的框图。简而言之,系统200包括服务器202、计算装置260和云资源275。服务器202执行版本控制系统205,其具有请求管理器215、资源模板引擎220、模板分配引擎225、模板释放引擎230、模板区分引擎235和API映射引擎240。在服务器202上执行的版本快照系统205还存储了多个快照245。每个快照245包括资源模板文件250和部署API 255。
如图2所示,服务器202、计算装置260和云资源275都能够彼此通信。在各种实施例中,系统200的每个上述元素或实体可以以硬件、软件或硬件和软件的组合来实现。在一些实施例中,系统200的每个组件可以使用硬件或结合图1A–1D在前面详述的硬件或软件的组合来实现。例如,在一些实施例中,包括请求管理器215、资源模板引擎220、模板分配引擎225、模板释放引擎230、模板区分引擎235和API映射引擎240的版本控制系统205,可以包括在服务器202的硬件上执行的任何应用、程序、库、脚本、任务、服务、进程或任何类型和形式的可执行指令。在一个或多个实施例中,硬件可包括诸如一个或多个处理器的电路。服务器202、计算装置260和云资源275之间的通信可以在任何类型或形式的网络上进行。例如,可以经由能够支持服务器202、计算装置260和云资源275之间的通信的任何类型的网络来进行这样的通信。在一些实施例中,可以经由局域网(LAN)(例如,公司内联网),城域网(MAN)或广域网(WAN)(例如,互联网)中的任何一个来进行这些通信。还应该理解的是,尽管出于说明目的在图2中被示为分离的组件,但是,下面结合服务器202、版本控制系统205及其组件、计算装置260和云资源275描述的某些功能可以被组合,使得图2中所描绘的这些元件中的两个或更多个的功能可以由单个装置实现。
更详细地,可以使用系统200来促进对由计算装置260使用或在计算装置260上运行的一个或多个云环境的版本控制。云环境可以包括云资源275中所包含的硬件、软件或虚拟化基础设施的任何组合。这样的硬件、软件和虚拟化基础设施可以由一个或多个云提供商作为服务提供,例如Amazon.com有限责任公司提供的Amazon Web Services。因此,应该理解,这样的云供应商自己,以及它们提供给计算装置260作为云环境的一部分的任何系统、平台、应用、服务、工具、或其他资源,也可以被包括在云资源275中。
通常,可以根据特定于特定云提供商的一组部署协议或API来部署由云提供商提供的允许计算装置260的用户实现云环境的资源。与这些部署协议和API直接交互可能需要许多用户可能不具备的一定程度的编程知识。在一些实施例中,每个云提供商可以通过抽象一些程序细节来帮助促进其云资源275的部署,例如通过可以由计算装置260的用户远程访问的控制台或其他应用。然而,这样的控制台通常不提供用户可以用来及时保存作为其在特定时间点存在的已部署的云环境的版本的机制。此外,这样的控制台通常也不提供任何机制来允许用户将已部署的云环境迁移到不同的云提供商。因此,由于缺乏每个云提供商的部署协议和API的详细的编程知识,计算装置260的用户通常将无法实现云环境的版本控制或迁移。
在服务器202上执行的版本控制系统205可以通过容易地允许计算装置260的用户保存或存储由任意数量的云提供商提供的任意数量的云环境的任意数量的版本来帮助解决这些问题。另外,即使两个云提供商使用不同的部署协议,并且即使用户不熟悉这些协议,版本控制系统205也可以允许计算装置260的用户容易地将给定的云环境从一个云提供商迁移到另一个云提供商。
在一些实施例中,请求管理器215可以被配置为从计算装置260接收与包括云资源275的任一组合的特定云环境的存储或操作有关的请求。例如,云环境通常可以包括:由云提供商提供的并由云资源275中的硬件、软件或虚拟化基础设施实现的任何计算资源和相关功能。与云环境有关的请求的一个这样的示例是存储云环境的当前版本的请求。在一些实施例中,在请求管理器215接收到这样的请求时,资源模板引擎220可以被配置为收集、检索或生成与云环境相关联的一个或多个资源模板。例如,资源模板引擎220可以从云资源275或从计算装置260检索资源模板。资源模板可以包括与包括在云环境中的任何计算资源有关的任何信息(例如,虚拟化计算装置、软件应用、操作系统、网络服务等)。例如,给定资源的资源模板可以包括相应资源的标识信息,该资源的网络地址信息以及与该资源关联的任何参数的值。对于云环境的每个资源,资源模板引擎220可以存储包括与资源有关的任何上述信息的相应资源模板文件250。
另外,资源模板引擎220还可以收集、检索或生成与云环境相关联的一个或多个部署API。通常,部署API可以是调用或以其他方式使用或访问一个或多个资源所需的任何指令集或部署协议集。资源模板引擎220可以将该信息存储在一个或多个部署API 255中。在一些实施例中,资源模板引擎220可以将资源模板文件250和部署API 255存储为相应的快照245。快照245还可以包括其他信息,例如对应于快照245的云环境版本的唯一标识符,或创建快照245的日期和/或时间。因此,快照245可以代表计算装置260请求创建版本的整个云计算环境。在一些实施例中,版本控制系统205可以在任何时间长度上保持快照245,并且还可以随着时间推移创建其他快照245(例如,响应于来自计算装置260的存储云环境版本的稍后的请求)。
在一些实施例中,计算装置260可以在确定环境满足用于部署成功的某些标准(例如,充分执行期望的功能)时,发出存储云环境的快照245的请求。随着时间的推移,计算装置260的用户可能对云环境进行改变。在一些实施例中,在确定改变是可接受的之后,计算装置260可以发出另一请求以保存或存储与云环境的更新版本相对应的更新快照245。因此,如果确定对云环境的后期改变是不期望的,则仍可以以相应的快照245的形式访问与云环境的较早成功版本相对应的信息。
为了还原到云环境的不同版本,计算装置260可以将相应的请求发送到版本控制系统205。请求管理器215可以接收该请求。在一些实施例中,该请求可以包括对与要还原到的云环境的版本相对应的特定快照245的指示。在一些其他实施例中,该请求可以指示应当还原到的云环境版本的日期或时间,并且可以通过参考存储在快照中的日期或时间信息来识别对应的快照245。
模板分配引擎225、模板释放引擎230和模板区分引擎235可以被配置为在已经识别了对应的快照245之后促使向所选择的云环境的还原。例如,在一些实施例中,模板区分引擎235可以确定与云环境的当前部署版本相对应的第一组当前资源模板文件250(例如,通过检查当前部署在云资源275中的模板资源文件以实现云环境的当前版本,或通过检查存在于与云环境的当前部署版本对应的快照245中的模板资源文件250)以及被包含在与要还原到的云环境的版本对应的快照245中的第二组资源模板文件250。然后,模板区分引擎235可以确定在两组资源模板文件中包含的模板资源文件250之间的差异。换句话说,模板区分引擎235可以确定哪些模板资源文件250被包含在两个集合中,哪些仅被包含在一个集合中。
模板分配引擎225可以被配置为分配被包含在与要还原到的云环境的版本对应的快照245中但没有被包含在当前部署的云环境中的每个模板资源文件250。例如,模板分配引擎225可以通过向云资源275发送模板资源文件250以及(例如,根据部署API 255中相应的一个而被格式化的)一组指令以使相应的资源被激活来分配模板资源文件250。类似地,模板释放引擎230可以被配置为释放被包括在当前部署的云环境中但没有被包括在与要被还原到的却没有被还原的云环境的版本对应的快照245中的每个模板资源文件250。在一些实施例中,模板释放引擎230可以通过生成一组指令以使与当前云环境相对应的云资源275禁用或停用相应的资源,并且通过将该组指令发送至相应的云资源275来释放模板资源文件250。在模板分配引擎225已经分配了被包含在要还原到的云环境的版本的快照245中的每个模板资源文件250,并且模板释放引擎230已经释放了没有被包含在要还原到的云环境的快照245中的、先前部署的云环境的每个模板资源文件250之后,当前部署的云环境将与由为该还原选择的快照245所表示的云环境匹配,并且该还原完成。
应当理解,模板分配引擎225和模板释放引擎230都可以通过使用在所选快照245的部署API 255中找到的信息来执行上述功能。例如,为了激活或停用给定资源,模板分配引擎225和模板释放引擎230可以生成以由部署API 255指定的方式格式化的一个或多个指令,并且可以将一个或多个指令发送到云资源275。因此,计算装置260的用户仅需要发出指示特定快照245的还原请求,而版本控制系统205可以实现该还原。因此,即使计算装置260的用户不熟悉提供特定云环境的云提供商的编程细节,也可以实现还原。
在一些实施例中,计算装置260还可以向版本控制系统205发出请求,以将特定的云环境从第一云提供商迁移到第二云提供商。例如,在第一云提供商相对于第二云提供商提高其价格的情况下,或者在第一云提供商的产品劣于第二云提供商的产品的情况下,这可能是期望的。如上所述,通常的情况是,第一云提供商使用的部署协议和API可能与第二云提供商使用的部署协议和API不同。因此,在常规系统中,用户必须了解两个云提供商的编程细节,以便将云环境从第一云提供商迁移到第二云提供商,因为唯一备选是利用第二云提供商从头开始建立新的云环境。然而,在请求管理器215接收到将云环境从第一云提供商迁移到第二云提供商的请求之后,版本控制系统205可以被配置为自动执行迁移。
在一些实施例中,API映射引擎240可以通过创建和/或存储第一云服务的部署协议和API与第二云服务的部署协议和API之间的映射帮助迁移。尽管第一云服务和第二云服务可能提供类似的基础设施和功能,但是用于调用此类基础设施和功能的特定部署协议和API可能有所不同。例如,为了实现负载匀衡功能,第一云服务提供商可能需要根据第一协议格式化的第一组指令,而第二云服务提供商可能需要根据不同于第一个协议的第二协议格式化的第二组指令。API映射引擎240可配置为创建和/或存储第一云服务所需的第一组指令与第二云服务所需的第二组指令之间的映射。在该示例中,API映射引擎可以存储第一组指令和第二组指令之间的关联。在一些实施例中,第一组指令和第二组指令可以连同对于两组指令对应于它们各自的云提供商的负载匀衡功能的指示一起存储在数据结构中。在一些实施例中,这样的数据结构还可包括用于为其他云提供商实现负载匀衡功能的其他组指令。此外,应当理解,API映射引擎240还可以存储与跨不同云提供商的云资源275的其他功能或配置有关的指令组的相似映射。在一些实施例中,API映射引擎240可以在跨任何数量的云提供商的任何数量的指令、服务或其他功能之间存储这样的映射。因此,当请求管理器215从计算装置260接收到将云环境从第一云提供商迁移到第二云提供商的请求时,可以通过根据由API映射引擎240确定的映射,使用模板分配引擎225分配与经由第二云服务的云环境对应的所有资源来实现迁移。模板释放引擎225可以释放由第一云供应商提供的所有资源,然后从第一云提供商到第二云提供商的云环境迁移就完成了。
图3是描绘图2所示系统200的实施例中的信息流的图300。图3中示出了图2的版本控制系统205的几个组件,诸如资源模板引擎220、模板分配引擎225、模板释放引擎230和模板区分引擎235。还示出了云资源275。云资源275内包括数据库350a-350c和相应的云环境360a-360c。另外,图3示出了多个定制部署模板305、先前模板文件310、旧资源模板315、以及新资源模板320。应当理解,定制部署模板305、先前模板文件310、旧资源模板315、新资源模板320可以被实现为如图2所示及以上所述的资源模板文件250的实例。然而,出于说明性的目的,图3中的模板由不同的名称和附图标记标识。
资源模板引擎220可以接收云环境360a中包括的一个或多个定制部署模板305。在一些实施例中,云环境360a可以存储在数据库350a中。同时,定制部署模板305可以对应于包含在云环境360a中的所有资源。在判定框307,可以确定定制部署模板305是否表示成功的部署。换句话说,因为定制部署模板305对应于云环境360a,所以在框307处做出的判定可以涉及对云环境360a是否被成功部署的确定。如上所述,可以基于许多不同度量中的任何一种来评估部署成功,包括当前云环境是否实现期望的功能。如果定制部署模板305表示成功部署,则它们可以作为先前模板文件310存储在存储器元件325中。在一些实施例中,可以将这些先前模板文件310视为与快照245相关联的资源模板文件250,该快照245对应于如图2所示已经在版本控制系统205中保存并被版本控制的云环境的先前版本。
模板区分引擎225可以接收一个或多个定制部署模板305以及先前模板文件310,并且可以执行与以上结合图2描述的功能相似的功能。例如,模板区分引擎235可确定定制部署模板305和先前模板文件310之间的重叠程度的。换句话说,模板区分引擎235可确定先前模板文件310中哪些被包括在定制部署模板305中,哪些没有。
模板区分引擎235将那些未包括在定制部署模板305中的模板标识为旧资源模板315,并且将其发送到模板释放引擎230。然后,如上所述,模板释放引擎230释放这些旧资源模板315。例如,模板释放引擎230可以从云环境360b和从数据库350b中提取旧资源模板315,以使得旧资源模板315不再包含在云资源275中。从云环境360b和数据库350b至模板释放引擎230的有向箭头代表从激活的云环境中释放对应于旧资源模板315的资源。因此,在该示例中,云环境360b可以代表正被释放的云环境的旧版本。在一些实施方式中,云环境360b可以被存储在数据库350b中,如由连接云环境360b和数据库350b的箭头所指示的。
模板区分引擎235将包含在定制部署模板305中的模板集合标识为新资源模板320,并将其发送到模板分配引擎225。然后如上所述,模板分配引擎225分配这些新资源模板320。例如,模板分配引擎225可以将新资源模板320发送到云环境360c和数据库350c。从模板分配引擎225到云环境360c和数据库350c的有向箭头表示分配对应于激活的云环境中的新资源模板320的资源。因此,旧资源被释放而新资源被分配,使得基于定制部署模板305成功地更新了激活的云环境。因此,云环境360c可以代表在图3的图300中新近被激活的(即,当前激活的)云环境。
图4是用于对计算装置的环境进行版本控制的方法400的实施例的流程图。在一些实施例中,方法400可以由诸如图2所示的版本控制系统205的版本控制系统执行。简要概述,方法400包括存储装置环境的第一版本的快照(步骤405),接收为装置自动部署环境的第二版本的请求(步骤410),以及自动部署装置环境的第二版本(步骤415)。
再次参考图4,方法400包括存储装置环境的第一版本的快照(步骤405)。在一些实施例中,该装置可以是计算装置,诸如图2中所示的计算装置260,并且环境可以是被包括在云资源275中的云环境。该环境可以使用多个云提供商中的云提供商或可以由多个云提供商中的云提供商提供。通常,环境可以包括与任何计算资源相对应的信息,计算资源例如虚拟化基础设施、硬件、软件应用或网络功能。在一些实施例中,环境可以被存储为快照,该快照包括一个或多个资源模板文件以及云提供商的一个或多个部署API。在一些实施例中,资源模板文件可以对应于环境的资源,并且可以包括诸如相应资源的标识或网络地址之类的信息,以及可以与相应资源相关联的任何参数的值。根据云提供商,部署API可以描述用于访问、修改、启用或禁用资源的特定编程接口或协议。在一些实施例中,版本控制系统还可存储多个其他快照,每个快照可对应于环境的不同相应版本。随着时间的推移,多个快照可以一起形成环境的完整版本历史记录。
方法400包括接收为该装置自动部署环境的第二版本的请求(步骤410)。在一些实施例中,诸如图2中所示的版本控制系统205的请求管理器215的请求管理器可以接收请求。装置环境的第二版本可以对应于版本控制系统存储的多个其他快照之一。例如,环境的第二版本可以是环境的旧版本。装置可以基于环境的第二版本比环境的第一版本更可取的确定来发起请求,例如由于相对于环境的第一版本,环境的第二版本的更好的稳定性或性能。
方法400还包括自动部署装置环境的第二版本(步骤415)。版本控制系统可以响应于请求而自动部署环境的第二版本。在一些实施例中,作为部署第二版本的结果,环境可以基于一个或多个资源模板文件和环境的第二版本的部署API的版本而改变。在一些实施例中,可以相对于环境的第一版本在增量的基础上实现环境的第二版本的部署。换句话说,作为部署环境的第二版本的结果,仅在环境的第一版本和环境的第二版本中不同的那些资源才可以更改。在一些实施例中,版本控制系统的区分引擎、分配引擎和释放引擎可用于完成环境的第二版本的这种增量实现。例如,区分引擎可以被配置为确定第一环境的资源模板文件和部署API与第二环境的资源模板文件和部署API之间的差异。对于环境的第一版本和环境的第二版本都相同的资源模板文件和部署API,无需进行任何更改。但是,作为部署环境的第二版本的一部分,对于仅被包含在环境的第二版本中而未被包含在第一版本中的资源模板文件,分配引擎可以被配置为分配相应的资源。类似地,作为部署环境的第二版本的一部分,对于仅被包含在环境的第一版本中而未被包含在第二版本中的资源模板文件,释放引擎可以被配置为释放相应的资源。在以这种方式分配和释放资源文件之后,完成了环境的第二版本的部署。
应当理解,上述系统可以提供那些组件中的任何的多个或那些组件中的每一个,并且这些组件可以在独立的机器上或者,在一些实施例中,在分布式系统中的多个机器上提供。可以使用编程和/或工程技术以产生软件、固件、硬件或其任何组合的方式,将上述系统和方法实现为制造的方法、设备或产品。另外,可以将上述系统和方法作为嵌入在一个或多个制造产品之上或之中的一个或多个计算机可读程序来提供。本文所使用的术语“制造产品”旨在包括可从一个或多个计算机可读装置、固件、可编程逻辑、存储装置(例如EEPROM、ROM、PROM、RAM、SRAM等)、硬件(例如集成电路芯片、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)、电子装置、计算机可读非易失性存储单元(例如CD-ROM、USB闪存、硬盘驱动器等)可访问的或嵌入其中的代码或逻辑。可以从文件服务器访问该制造产品,该文件服务器经由网络传输线、无线传输介质、在空间传播的信号、无线电波、红外信号等提供对计算机可读程序的访问。该制造产品可以是闪存存储卡或磁带。该制造产品包括硬件逻辑以及嵌入在计算机可读介质中的由处理器执行的软件或可编程代码。通常,计算机可读程序可以以任何编程语言(例如LISP、PERL、C、C++、C#、PROLOG)或任何字节代码语言(例如JAVA)实现。软件程序可以作为目标代码存储在一个或多个制造产品之上或之中。
尽管已经描述了方法和系统的各种实施例,但是这些实施例是说明性的,绝不限制所描述的方法或系统的范围。相关领域的技术人员可以在不脱离所描述的方法和系统的最广泛范围的情况下,对所描述的方法和系统的形式和细节进行改变。因此,本文描述的方法和系统的范围不应受到任何说明性实施例的限制,而应根据所附权利要求及其等同物来定义。
Claims (20)
1.一种用于对装置的云环境进行版本控制的方法,所述方法包括:
(a)由版本控制系统存储用于使用多个云提供商中的云提供商的装置环境的第一版本的快照,该环境包括云提供商的一个或多个资源模板文件和一个或多个部署应用编程接口(API),版本控制系统存储环境版本的多个快照;
(b)由版本控制系统接收自动部署装置环境的第二版本的请求,该环境的第二版本的快照包括与该环境的第一版本的快照的一个或多个资源模板文件不同的至少一个第二资源模板文件;以及
(c)由版本控制系统响应于所述请求而自动部署装置环境的第二版本,以将装置环境改变为使用该环境的第二版本的一个或多个资源模板文件以及部署API的版本。
2.根据权利要求1所述的方法,其中,所述装置环境的第二版本对应于以下至少一项的改变:(i)云提供商的一个或多个部署API的版本;或者(ii)由云提供商使用的一个或多个资源模板文件的格式或语法。
3.根据权利要求1所述的方法,其中,(b)还包括:接收自动部署关于所述多个云提供商中的第二云提供商的所述环境的第二版本的请求。
4.根据权利要求3所述的方法,其中,(c)还包括自动部署所述环境的第二版本以将所述装置的环境从使用所述云提供商改变为使用所述第二云提供商。
5.根据权利要求1所述的方法,其中,(c)还包括:
识别包括在环境的第一版本中但不包括在环境的第二版本中的至少一个资源模板文件;以及
从环境的第一版本中释放该至少一个资源模板文件。
6.根据权利要求1所述的方法,其中(c)包括:
识别包括在环境的第二版本中但不包括在环境的第一版本中的至少一个资源模板文件;以及
向环境的第一版本分配该至少一个资源模板文件。
7.根据权利要求1所述的方法,其中,所述一个或多个资源模板文件中的每个资源模板文件包括要经由所述云提供商部署的相应资源的一个或多个参数值。
8.根据权利要求1所述的方法,其中,环境的第一版本的一个或多个资源模板文件具有与环境的第二版本的一个或多个资源模板不同的格式或语法。
9.根据权利要求1所述的方法,其中,环境的第一版本和环境的第二版本中的每一个的一个或多个资源模板文件具有用于向所述多个云提供商部署的公共格式或语法。
10.根据权利要求9所述的方法,其进一步包括修改一个或多个资源模板文件以将所述公共格式或语法改变为由所述云提供商所支持的格式或语法。
11.一种用于对装置的云环境进行版本控制的系统,该系统包括:
服务器,包括一个或多个处理器,其耦合到存储器,并被配置为存储用于使用多个云提供商中的云提供商的装置环境的第一版本的快照,该环境包括云提供商的一个或多个资源模板文件和一个或多个部署应用编程接口(API),服务器存储环境版本的多个快照;以及
在所述服务器上可执行的版本控制系统,其被配置为:
接收自动部署装置环境的第二版本的请求,该环境的第二版本的快照包括与该环境的第一版本的快照的一个或多个资源模板文件不同的至少一个第二资源模板文件;以及
响应于所述请求而自动部署装置环境的第二版本,以将装置环境改变为使用环境的第二版本的一个或多个资源模板文件以及部署API的版本。
12.根据权利要求11所述的系统,其中,所述装置环境的第二版本对应于以下至少一项的改变:(i)所述云提供商的一个或多个部署API的版本,或者(ii)云提供商使用的一个或多个资源模板文件的格式或语法。
13.根据权利要求11所述的系统,其中,所述版本控制系统还被配置为接收自动部署关于所述多个云提供商中的第二云提供商的环境的第二版本的请求。
14.根据权利要求13所述的系统,其中,所述版本控制系统还被配置为自动部署所述环境的第二版本,以将所述装置的环境从使用所述云提供商改变为使用所述第二云提供商。
15.根据权利要求11所述的系统,其中,所述版本控制系统还被配置为识别包括在环境的第一版本中但不包括在环境的第二版本中的至少一个资源模板文件,并从环境的第一版本中释放该至少一个资源模板文件。
16.根据权利要求11所述的系统,其中,所述版本控制系统还被配置为识别包括在环境的第二版本中但不包括在环境的第一版本中的至少一个资源模板文件,并向环境的第一版本分配该至少一个资源模板文件。
17.根据权利要求11所述的系统,其中,所述一个或多个资源模板文件中的每个资源模板文件包括要经由所述云提供商部署的相应资源的一个或多个参数值。
18.根据权利要求11所述的系统,其中,环境的第一版本的一个或多个资源模板文件具有与环境的第二版本的一个或多个资源模板不同的格式或语法。
19.根据权利要求11所述的系统,其中,环境的第一版本和环境的第二版本中的每一个的一个或多个资源模板文件具有用于向所述多个云提供商部署的公共格式或语法。
20.根据权利要求19所述的系统,其中,所述服务器还被配置为修改一个或多个资源模板文件,以将所述公共格式或语法改变为所述云提供商所支持的格式或语法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/878892 | 2018-01-24 | ||
US15/878,892 US10620934B2 (en) | 2018-01-24 | 2018-01-24 | Systems and methods for versioning a cloud environment for a device |
PCT/US2019/012887 WO2019147415A1 (en) | 2018-01-24 | 2019-01-09 | Systems and methods for versioning a cloud environment for a device |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111868685A true CN111868685A (zh) | 2020-10-30 |
Family
ID=65352102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980018919.4A Pending CN111868685A (zh) | 2018-01-24 | 2019-01-09 | 用于对装置的云环境进行版本控制的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10620934B2 (zh) |
EP (1) | EP3743804A1 (zh) |
CN (1) | CN111868685A (zh) |
AU (1) | AU2019211959B2 (zh) |
CA (1) | CA3088985A1 (zh) |
WO (1) | WO2019147415A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019246630A1 (en) * | 2018-06-22 | 2019-12-26 | Otsuka America Pharmaceutical Inc. | Application programming interface using digital templates to extract information from multiple data sources |
US11032213B1 (en) * | 2018-12-14 | 2021-06-08 | Amazon Technologies, Inc. | Centralized management of computing resources across service provider networks |
CN109766084B (zh) * | 2018-12-28 | 2021-04-23 | 百富计算机技术(深圳)有限公司 | 支付应用的定制开发方法、装置、计算机设备和存储介质 |
US11036612B1 (en) * | 2019-12-12 | 2021-06-15 | Vmware, Inc. | Centralized application resource determination based on performance metrics |
US11288055B2 (en) | 2020-02-18 | 2022-03-29 | International Business Machines Corporation | Model-based differencing to selectively generate and deploy images in a target computing environment |
CN113703807B (zh) * | 2021-08-26 | 2023-12-15 | 上海德拓信息技术股份有限公司 | 一种静态资源版本实时检测与更新的方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103563294A (zh) * | 2011-06-30 | 2014-02-05 | 国际商业机器公司 | 用于云计算平台安全性的认证和授权方法 |
CN104714847A (zh) * | 2013-12-13 | 2015-06-17 | 国际商业机器公司 | 用于动态地改变云计算环境的方法和系统 |
US20170041192A1 (en) * | 2015-08-07 | 2017-02-09 | Hewlett-Packard Development Company, L.P. | Cloud models based on logical network interface data |
CN106462467A (zh) * | 2014-06-19 | 2017-02-22 | 微软技术许可有限责任公司 | 在不同分布式网络上针对消费服务的集成api和ui |
US20180004509A1 (en) * | 2016-06-29 | 2018-01-04 | Salesforce.Com, Inc. | Automated systems and techniques to manage cloud-based metadata configurations |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8429630B2 (en) * | 2005-09-15 | 2013-04-23 | Ca, Inc. | Globally distributed utility computing cloud |
US8671222B2 (en) * | 2010-05-11 | 2014-03-11 | Smartshift Gmbh | Systems and methods for dynamically deploying an application transformation tool over a network |
US11016935B2 (en) * | 2017-11-28 | 2021-05-25 | Rubrik, Inc. | Centralized multi-cloud workload protection with platform agnostic centralized file browse and file retrieval time machine |
-
2018
- 2018-01-24 US US15/878,892 patent/US10620934B2/en active Active
-
2019
- 2019-01-09 CA CA3088985A patent/CA3088985A1/en active Pending
- 2019-01-09 EP EP19704081.9A patent/EP3743804A1/en not_active Withdrawn
- 2019-01-09 CN CN201980018919.4A patent/CN111868685A/zh active Pending
- 2019-01-09 AU AU2019211959A patent/AU2019211959B2/en not_active Ceased
- 2019-01-09 WO PCT/US2019/012887 patent/WO2019147415A1/en unknown
-
2020
- 2020-04-07 US US16/842,317 patent/US11360760B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103563294A (zh) * | 2011-06-30 | 2014-02-05 | 国际商业机器公司 | 用于云计算平台安全性的认证和授权方法 |
CN104714847A (zh) * | 2013-12-13 | 2015-06-17 | 国际商业机器公司 | 用于动态地改变云计算环境的方法和系统 |
CN106462467A (zh) * | 2014-06-19 | 2017-02-22 | 微软技术许可有限责任公司 | 在不同分布式网络上针对消费服务的集成api和ui |
US20170041192A1 (en) * | 2015-08-07 | 2017-02-09 | Hewlett-Packard Development Company, L.P. | Cloud models based on logical network interface data |
US20180004509A1 (en) * | 2016-06-29 | 2018-01-04 | Salesforce.Com, Inc. | Automated systems and techniques to manage cloud-based metadata configurations |
Also Published As
Publication number | Publication date |
---|---|
AU2019211959B2 (en) | 2021-10-21 |
US11360760B2 (en) | 2022-06-14 |
US20200233656A1 (en) | 2020-07-23 |
WO2019147415A1 (en) | 2019-08-01 |
AU2019211959A1 (en) | 2020-08-06 |
US10620934B2 (en) | 2020-04-14 |
EP3743804A1 (en) | 2020-12-02 |
CA3088985A1 (en) | 2019-08-01 |
US20190227780A1 (en) | 2019-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11360760B2 (en) | Systems and methods for versioning a cloud environment for a device | |
US9292215B2 (en) | Managing virtual hard disk snapshots | |
US9286087B2 (en) | Storage optimization selection within a virtualization environment | |
US10545837B2 (en) | Extending deployed cloud infrastructure for disaster recovery sequencing | |
US20180260241A1 (en) | Method and system of migrating applications to a cloud-computing environment | |
US9396004B1 (en) | System and method for management of a configuration of a virtual machine | |
WO2012131507A1 (en) | Running a plurality of instances of an application | |
US9448807B2 (en) | Automatic creation, deployment, and upgrade of disk images | |
US10282190B2 (en) | System and method for updating a UEFI image in an information handling system | |
US11709692B2 (en) | Hot growing a cloud hosted block device | |
US20080229031A1 (en) | Method of Automated Resource Management In A Partition Migration Capable Environment | |
US20200106711A1 (en) | Apparatus and method for managing application on multi-cloud service environment | |
CN103207805A (zh) | 基于虚拟化的硬盘复用系统 | |
CN114691300A (zh) | 一种虚拟机实例的热迁移方法 | |
CN112286633A (zh) | 基于CloudStack平台的虚拟机创建方法、装置、设备及存储介质 | |
US10732842B2 (en) | Computing system with processing and method of operation thereof | |
JP2023547070A (ja) | アプリケーションの実行を停止しない更新された共有ライブラリの再読み込み | |
US20200110666A1 (en) | Data recovery of guest virtual machines | |
US20180336058A1 (en) | Apparatus for providing virtual desktop service and method for the same | |
US20180341475A1 (en) | Just In Time Deployment with Package Managers | |
CN115665231A (zh) | 服务创建方法、装置以及计算机可读存储介质 | |
US20140366010A1 (en) | Enabling parallel websphere runtime on different computer | |
EP4304154A1 (en) | Information processing device, information processing method, program, and information processing system | |
US11409615B2 (en) | Cloning storage volumes from backup | |
KR101211673B1 (ko) | 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템 및 그 방법 |
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 |