Techniques for modifying the state of computation instances
The method allows users to modify compute instances by using hash values to verify changes, addressing the restriction and convergence issues in cloud computing, simplifying the control plane implementation.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- ORACLE INT CORP
- Filing Date
- 2026-01-14
- Publication Date
- 2026-06-02
AI Technical Summary
Cloud computing providers restrict users from modifying compute instances, and it is difficult to ascertain when changes to a compute instance have converged.
A method and system that allows users to modify compute instances through an application programming interface, using hash values to verify that requested changes have been applied, decoupling the control plane from the management plane by calculating hash values in the management plane.
Enables user modification of compute instances with simplified implementation in the control plane by using hash values to verify changes, ensuring changes are applied correctly and efficiently.
Smart Images

Figure 2026090258000001_ABST
Abstract
Description
Technical Field
[0001] Cross - reference to Related Applications This non - provisional application claims priority to U.S. Patent Application No. 17 / 125,802, filed on December 17, 2020, entitled "Techniques for Modifying a Compute Instance", the disclosure of which is hereby incorporated by reference in its entirety for all purposes.
Background Art
[0002] Background Cloud computing providers can manage many compute instances on behalf of various users. Generally speaking, users cannot modify aspects of those compute instances. Further, it would be difficult to ascertain when changes to a compute instance have converged. The embodiments described herein address these and other problems both individually and collectively.
Summary of the Invention
Means for Solving the Problems
[0003] Brief Summary Techniques (e.g., methods, systems, non - transient computer - readable media storing code or instructions executable by one or more processors) for modifying aspects of a compute instance managed by a cloud computing infrastructure (CCI) provider are provided. Various embodiments are described herein, including methods, systems, non - transient computer - readable storage media storing programs, code, or instructions executable by one or more processors, and the like.
[0004] One embodiment is directed to a method. The method may comprise the steps of a computing system managing a compute instance, at least in part on the management of a first state object corresponding to the compute instance in a cloud computing environment. In some embodiments, the first state object includes a set of attributes indicating the current state of the compute instance. The method may further comprise the steps of the computing system receiving change request data from a requesting computing component indicating a requested change to a particular attribute of the compute instance. The method may further comprise the steps of the computing system deriving a second state object of the compute instance, at least in part on the requested change and the first state object indicating the current state of the compute instance. The method may further comprise the steps of the computing system calculating a first hash value, at least in part on a first subset of attributes from a set of attributes of the second state object. The method may further comprise the steps of the computing system providing the first hash value to the requesting computing component. The method may further comprise the steps of the computing system performing the requested change to the compute instance. The above method may further include the step of the computing system updating the first state object based at least in part on performing the requested change to the computation instance. The above method may further include the step of the computing system calculating a second hash value based at least in part on a second subset of the set of attributes of the first state object. The above method may further include the computing system However, the process may include the step of providing the requesting computing component with the second hash value. In some embodiments, the first and second hash values are configured to be used by the requesting computing component to verify that the requested change has been performed on the compute instance.
[0005] Another embodiment is directed to a computing device. The computing device may include a computer-readable medium for storing non-temporary computer executable program instructions. The computing device may further include a processing unit communicatively coupled to the computer-readable medium for executing the non-temporary computer executable program instructions. Executing the non-temporary computer executable program instructions using the processing unit causes the computing device to perform the method described above.
[0006] Another embodiment, when executed by a processing unit of a computing device, directs the instructions to a non-temporary computer-readable storage medium that stores computer executable program instructions causing the computing device to perform the method described above.
[0007] Another embodiment is directed to an apparatus comprising means for performing the steps of the above method.
[0008] Another embodiment, when executed by a processor, is directed to a computer program product comprising computer instructions that perform the steps of the above method.
[0009] The above matters, along with other features and embodiments, will become clearer with reference to the following specification, claims, and accompanying drawings.
[0010] Various embodiments relating to this disclosure will be described with reference to the drawings. [Brief explanation of the drawing]
[0011] [Figure 1] This figure shows an exemplary environment in which the disclosed technique for modifying a computation instance, according to at least one embodiment, may be implemented. [Figure 2] This flowchart illustrates an exemplary method for deriving a hash value representing a requested change to a computation instance, according to at least one embodiment. [Figure 3] This figure shows an exemplary current object according to at least one embodiment. [Figure 4] This figure shows an exemplary desired state object according to at least one embodiment. [Figure 5] This flowchart illustrates an exemplary method for applying a requested change to a compute instance, according to at least one embodiment. [Figure 6] This flowchart illustrates an exemplary method for identifying that a previously requested change has been made to a compute instance, according to at least one embodiment. [Figure 7] This flowchart shows an example of a method for modifying the attributes of a compute instance according to at least one embodiment. [Figure 8] This is a block diagram showing one pattern for realizing a cloud infrastructure as a service system, according to at least one embodiment. [Figure 9] This is a block diagram showing another pattern for realizing a cloud infrastructure as a service system, according to at least one embodiment. [Figure 10] This is a block diagram showing another pattern for realizing a cloud infrastructure as a service system, according to at least one embodiment. [Figure 11] This is a block diagram showing another pattern for realizing a cloud infrastructure as a service system, according to at least one embodiment. [Figure 12]A block diagram showing an exemplary computer system according to at least one embodiment. [Modes for carrying out the invention]
[0012] Detailed explanation In the following description, specific details are provided for illustrative purposes to ensure a thorough understanding of the particular embodiment. However, it will be apparent that various embodiments can be carried out without these specific details. The drawings and description are not intended to be limiting. The term “exemplary” is used herein to mean “provided as an example, case, or illustration.” No embodiment or design described herein as “exemplary” should necessarily be construed as being preferable or advantageous over other embodiments or designs.
[0013] This disclosure relates to a system and technology for enabling user modification of compute instances managed by one or more cloud computing provider computers (hereinafter referred to as "cloud computing computers" for brevity). A user may want to change a particular aspect of a compute instance. For example, a user may want to request a name change for a component of a compute instance. Accordingly, a user may submit a request to modify an attribute of the compute instance (for example, an attribute corresponding to the name of a component of the compute instance) through an application programming interface exposed by the cloud computing computer. The cloud computing computer may receive this request and retrieve the current state of the compute instance. The current state of the compute instance may be maintained in a state object (referred to as the "current state object"). If the change is performed, the cloud computing computer may calculate the future state of the compute instance. For example, the state object may be copied and its attributes may be modified in accordance with the change request. These modified sets of attributes may be stored for subsequent use as a separate state object (referred to as the "requested state object").
[0014] Each compute instance can be associated with any number of suitable attributes. These attributes include the image version running on the instance (e.g., the image version corresponding to the operating system, software packages, default configuration, etc.), the number of central processing units (CPUs), the amount of memory allocated to the host, and one It may include, for example, the expiration date of one or more security tokens, an address indicating which computing instance to use, etc. Although the examples in this specification discuss the modification of component names by a user, it should be understood that these examples apply equally to other changes that a user may request. These changes requested by the user may relate to one or more modifications of any suitable combination of attributes associated with the computing instance.
[0015] A hash value can be calculated from a subset of the set of attributes of the requested state object. The specific set of attributes to be hashed is predefined and may vary depending on the requester (or the computing component used to initiate the change request). Different users may be interested in different aspects of the computing instance. Thus, the set of object attributes / data fields used to calculate the hash value for one user may be different from the set of object attributes / data fields used to calculate the hash for another user.
[0016] The hash value (e.g., the hash value corresponding to the requested change) can be provided to the component that provided the change request (e.g., the requesting computing component) and stored for subsequent verification. Periodically, the current object of the computing instance can be retrieved, and a hash value corresponding to the current state of the computing instance can be calculated from the object and provided to the requesting computing component. These hash values can be used by the requesting computing component to determine whether the requested change has been applied to the computing instance. As an example, the requesting computing component can compare the hash value corresponding to the requested change with the hash value corresponding to the current state of the computing instance. If these hash values match, the requesting computing component can be configured to determine that the requested change has been applied to the computing instance.
[0017] The disclosed technology offers improvements over conventional systems. Conventional systems may restrict users from modifying aspects of compute instances, and / or it may be difficult to determine when specific changes were made to compute instances. By utilizing the technology described herein, the requesting compute component does not need to compare the attributes of the requested state object with the attributes of the state object that maintains the current state of the compute instance. Instead, the requesting compute component only needs to compare two hash values to determine whether the requested changes have been performed. The management plane of the cloud compute provider computer can be used to implement the requested changes, update the current state of the compute instance, and calculate the hash values. Thus, while certain attributes and / or exact implementations associated with the requesting compute component may change within the management plane, there is no need to modify the requesting compute component (e.g., the control plane of the cloud compute provider computer). By maintaining the logic in the management plane that corresponds to modifying the compute instance and calculating the hash values, the implementation of the requesting compute component (e.g., the control plane of the compute system) is significantly simplified and decoupled from changes made to the management plane.
[0018] Moving on to FIG. 1, FIG. 1 is a diagram showing an exemplary environment 100 in which the disclosed technology for modifying a computing instance according to at least one embodiment can be implemented. Environment 100 can include a cloud infrastructure system 102 configured to manage one or more infrastructure components (e.g., infrastructure component 104) on behalf of a user. A cloud computing provider can host a cloud computing environment 102 that provides infrastructure components 104 (e.g., servers, storage devices, network nodes (e.g., hardware), deployment software, platform virtualization (e.g., hypervisor layer), etc.). One or more infrastructure components can include any suitable number of computing instances configured to provide a particular infrastructure component. Computing instances can include one or more bare-metal computing instances that provide dedicated physical server access for high performance and strong isolation, and / or one or more virtual machines. A virtual machine is an independent computing environment that runs on physical bare-metal hardware. Infrastructure component 104 can be configured to provide computing resources to any suitable number of users. In some embodiments, the cloud computing provider can also supply various services (e.g., billing, monitoring, logging, security, load balancing, and clustering, etc.) associated with those infrastructure components. Thus, since these services can be policy-driven, users will be able to enforce policies for driving load balancing to maintain application availability and performance. Possibility and the performance will be able to enforce policies for driving load balancing to maintain.
[0019] In some cases, a user device 106 may be used to access the resources and services of the cloud infrastructure system 102 (for example, via the user interface 108). The user device 106 may be any suitable type of computing device, including but not limited to mobile phones, handheld scanners, touchscreen devices, smartphones, personal digital assistants (PDAs), laptop computers, desktop computers, thin client devices, and tablet PCs. In some examples, the user device 106 may communicate with the cloud infrastructure system 102 via the network 110 or other network connections. In some examples, the network 110 may include one or a combination of many different types of networks, such as cable networks, the internet, wireless networks, cellular networks, and other private and / or public networks. The user device 106 may be used to access virtual machines (VMs) (for example, The cloud infrastructure system 102 can invoke functions such as creating compute instances (VMs), installing operating systems (OS) on these VMs, deploying middleware such as databases, creating storage buckets for workloads and backups, and / or installing enterprise software on the VMs. Furthermore, the user device 106 can be used to request provider services to perform various functions, including balancing network traffic, troubleshooting application issues, monitoring performance, and managing disaster recovery.
[0020] The cloud infrastructure system 102 may include a control plane 112 and a data plane 114. In some embodiments, the control plane 112 may expose one or more application programming interfaces that can invoke the functions of the cloud infrastructure system 102 (for example, by a user device 106). The control plane 112 may be configured to receive requests (for example, from a user device 106) and, in response to those requests, provide the data plane 114 with data to perform actions corresponding to those requests. In some embodiments, the control plane 112 may be configured to provide the user device 106 with status updates regarding the status of one or more requests initiated by the user device 106. Some of the requests received by the control plane 112 may request modifications to existing infrastructure components 104.
[0021] The cloud infrastructure system 102 may include a data plane 114. In some embodiments, the data plane 114 may be configured to perform any preferred actions for provisioning, deploying, and maintaining infrastructure components 104 in accordance with requests provided by the control plane 112. In some embodiments, the data plane 114 may utilize one or more computing processes (e.g., workers 116) to perform various actions related to provisioning infrastructure components 104, deploying software artifacts to infrastructure components 104, modifying aspects of infrastructure components 104, and so on.
[0022] The data plane 114 may be configured to maintain state objects corresponding to the current state of each infrastructure component 104. These state objects are updated when they change, according to a predefined periodicity, according to a schedule, or at any preferred time. The data plane may be periodically updated by the monitoring service 120. In some embodiments, the data plane 114 may maintain additional state objects, each of which corresponds to a requested change presented for a given infrastructure component. These additional state objects may be referred to herein as “desired state objects.” Examples of current state objects and desired state objects are provided associated with Figures 3 and 4, respectively. In some embodiments, these objects may be stored in the state information data store 118.
[0023] The data plane 114 may calculate a hash of one or more attributes of a state object at any suitable time. In some embodiments, the specific attribute used to calculate the hash will be determined by the requesting and / or requesting computing component that requested the change to the infrastructure component. In some embodiments, the data plane 114 may consist of a mapping that identifies from the state object a corresponding set of attributes used to calculate a hash value for a particular requesting / requesting computing component. The data plane 114 may calculate hash values corresponding to the desired state and current state of the infrastructure component. For example, the data plane 114 may maintain attributes corresponding to the current state of the infrastructure in a current object stored in the state information data store 118. The data plane 114 may retrieve the current object and modify its attributes according to the requested change received from the control plane 112 (and, in some embodiments, initiated from the user device 106). The data plane 114 may calculate a hash value corresponding to the desired state and provide this hash value to the control plane 112, which may then store this hash value for subsequent use. The control plane 112 may be configured to request current hash values from the data plane 114 according to a predefined periodicity and / or schedule.
[0024] The data plane 114 may be configured to instantiate and / or assign workers 116 by performing actions to apply requested changes to a given infrastructure component. In some embodiments, the data plane 114 may store data corresponding to various tasks associated with managing and / or modifying the infrastructure component 104 in a state information data store 118 (or another preferred location). The worker 116 may be configured to retrieve this data sequentially (for example, in the order in which the data was stored) and perform any preferred action to carry out a task (for example, modifying an attribute of the infrastructure component). The monitoring service 120 may monitor the state of the infrastructure component and, if it determines that a change has occurred, update a status object corresponding to the current state of the infrastructure component. This updated object may then be stored in the state information data store 118. The monitoring service 120 may invoke functions of the data plane 114, and / or the monitoring service 120 may be configured to calculate a hash value corresponding to the status object modified by the requested change. Hash values calculated by the data plane 114 and / or components of the data plane 114 (e.g., monitoring service 120) may be provided to the control plane 112 at any convenient time (e.g., immediately, or at the next request for a current hash value received from the control plane 112). The control plane 112 may be configured to perform arbitration operations, such as comparing previously provided desired state hash values with each current hash value obtained from the data plane 114. If the control plane 112 determines that the desired state hash value and the current hash value match, the control plane 112 may be configured to provide status data to the user device 106 via the user interface 108 indicating that the requested change has been completed. In some embodiments, once the requested change is complete, the data plane 114 (or worker 116, etc.) The data plane component 114 may perform an action to delete any data related to the requested change, but the current object remains in the state information data store 118 and continues to be updated over time by the monitoring service 120.
[0025] Figure 2 is a flowchart illustrating an exemplary method 200 for deriving a hash value representing a requested change to a compute instance, according to at least one embodiment. Method 200 may be performed by a user device 202 (e.g., user device 106 in Figure 1), a control plane 204 (e.g., control plane 112 in Figure 1), a data plane 206 (e.g., data plane 114 in Figure 1), and a state information data store 208 (e.g., state information data store 118 in Figure 1). Method 200 may include more or fewer operations than those shown in Figure 2. These operations may be performed in any preferred order. In some embodiments, one or more operations performed by multiple components may be performed by a single component, and / or operations performed by a single component may be divided and provided by multiple components.
[0026] Method 200 may begin in 210, in which user device 202 may initiate a request (for example, via a user interface such as user interface 108 in Figure 1) to modify a certain aspect of an existing infrastructure component. For example, user device 202 may be used to initiate a request (e.g., a change request) to modify the component name (or other attributes such as image version, number of CPUs, amount of memory, expiration date corresponding to one or more security tokens, address) of a particular infrastructure component. This change request may include an identifier for user device 202 and / or an entity associated with user device 202 (e.g., a user), any preferred data to indicate the requested change, and any preferred data indicating the infrastructure component to which the change request applies (e.g., one or more of the infrastructure components 104 in Figure 1).
[0027] In 212, the control plane 204 may pass a change request to the data plane 206 using any preferred application programming interface exposed by the data plane 206. In 214, in response to receiving a change request, the data plane 206 may be configured to retrieve a state object from the state information datastore 208 corresponding to the infrastructure component identified in the change request. For illustrative purposes, an exemplary change request may indicate a change to a single infrastructure component (e.g., a name change, an image version change, a change to the number of CPUs, a change to the amount of memory, a change to the expiration date, an address change, etc.). In this example, the state object used by the data plane 206 to maintain the current attributes associated with the infrastructure component may be retrieved from the state information datastore 208. In some embodiments, an identifier for the infrastructure component may be obtained from the change request, and this identifier may be used to retrieve the corresponding state object from the state information datastore 208.
[0028] Figure 3 shows an exemplary state object (for example, state object 300, a state object that maintains a set of attributes corresponding to the state of an infrastructure component modified in association with Figure 2) according to at least one embodiment. The state object may include any number of attributes. Each attribute may include an attribute identifier (for example, "attribute 1", "attribute 2", etc.) and a corresponding value (for example, value 1, value 2, etc.). The state object 300 is associated with the state of a particular infrastructure component. It can be used to store a superset of the attributes that have been attached. In some embodiments, at least one of the attributes in the set may include an identifier corresponding to the infrastructure component to which the object is related. This identifier can be used to search for and retrieve objects from a set of objects, each corresponding to a different infrastructure component.
[0029] In some embodiments, a particular requester may not be interested in any of the current attributes. Conversely, one change requester may be interested in a subset of attributes (e.g., attribute subset 302), while a different change requester may be interested in a different subset of attributes (e.g., attribute subset 304). In some embodiments, these subsets may be mutually exclusive, or two or more subsets may share one or more attributes within them. The data plane 206 in Figure 2 may consist of mappings that show specific subsets of attributes relevant to a particular requester. In some embodiments, these mappings may be preloaded before runtime as part of the configuration effort associated with the data plane.
[0030] Returning to Figure 2, the data plane 206 may identify from this mapping a subset of attributes associated with the change request. As a non-limiting example, the mapping may identify subset 302 as relating to the change request. The data plane 206 may generate a new state object (e.g., a desired state object) and copy the attributes of the current object 300 into this new state object. The desired state object may then be modified according to the change request. In other words, the data plane 206 may modify one or more attributes of the desired state object to the values that should exist in the current object after the changes to the infrastructure component are complete. These attributes and corresponding values, including any changes made in response to the change request, may be referred to as “desired state data” and can be used to indicate the desired and / or future state of the infrastructure component.
[0031] Figure 4 shows an exemplary desired state object (e.g., desired state object 400) according to at least one embodiment. The desired state object 400 may be substantially similar to the current object 300 in Figure 3 in that it may contain the same attributes as the current object 300, although the values of each of those attributes may differ between the objects. The desired state object 400 may also include a superset of attributes that indicate the state of the infrastructure component. While the current object maintains data that indicates the current state of the infrastructure component (e.g., current data), the desired state object 400 may be used to maintain data that indicates the desired and / or future state in response to a change request. The desired state object 400 may also include attribute subsets 402 and 404, corresponding to attribute subsets 302 and 304, respectively.
[0032] Returning to Figure 2, method 200 may proceed to 218, where the data plane 206 may identify an attribute subset (e.g., attribute subset 402 in Figure 2) corresponding to the requesting computing component (e.g., the entity associated with user device 106) from the mappings it stores. For example, the data plane 206 may obtain an identifier for user device 202 and / or the entity associated with user device 202 (e.g., user) from the change request data received in 212, and use this identifier to identify attribute subset 402. Using the attributes of attribute subset 402, the data plane 206 may compute a hash value using a predefined hashing algorithm and attribute subset 402 as input. The specific actions performed to compute a hash value using any preferred number of attributes are as follows: It can be identified according to a predefined scheme known to and implemented by the data plane 206. In some embodiments, in 220, change request data can be stored in the state information data store 208. For example, in some embodiments, the change request data and the calculated hash value can be stored in a desired state object, which is then stored in the state information data store 208. In some embodiments, the state information data store 208 can serve as a queue for pending changes to be made. Thus, change request data indicating actions for changes that have not yet been made can be stored in any preferred manner.
[0033] In step 222, the data plane 206 may provide the control plane 204 with a hash value calculated from the desired state data, and then, in step 224, the control plane 204 may store the hash value in local memory. This hash value may be referred to herein as the "desired state hash value".
[0034] Figure 5 is a flowchart illustrating an exemplary method 500 for applying a requested change to a compute instance (for example, a specific infrastructure component of infrastructure component 104 in Figure 1) according to at least one embodiment. Method 500 involves a state information data store 502 (for example, state information data store 118 in Figure 1), a worker 504 (for example, one of the workers 116 in Figure 1), and a compute instance 506. (For example, a specific infrastructure component related to the change request in Figure 2, one of the infrastructure components 104 in Figure 1), and monitoring service 508 (for example, monitoring service 120 in Figure 1) may perform the operation. Method 500 may include more or fewer operations than those shown in Figure 5. The operations of Method 500 may be performed in any preferred order. In some embodiments, one or more operations performed by multiple components may be performed by a single component, and / or operations performed by a single component may be divided and provided by multiple components.
[0035] Method 500 may begin in 510, in which worker 504 may instantiate and request change request data from state information datastore 502 corresponding to the next change to be made to the infrastructure component. In some embodiments, state information datastore 502 may maintain a queue of one or more change requests that have not yet been applied. In some embodiments, worker 504 may be configured to retrieve the oldest change request from state information datastore 502.
[0036] A worker may be configured to access logic for identifying specific actions that should be performed to apply the requested changes indicated by the change request data. In 512, worker 504 may perform these actions to apply the changes to compute instance 506 (the specific infrastructure component to which the change request is related).
[0037] In 514, the monitoring service 508 may be configured to request state data corresponding to the compute instance 506. In some embodiments, the monitoring service 508 may be configured to request state data from the compute instance 506 according to a predefined periodicity, schedule, etc.
[0038] In 516, the monitoring service 508 may receive status data indicating the current status of compute instance 506. Additionally or alternatively, compute instance 506 may report its status data as a result of actions performed by the worker in 512. Additionally or alternatively, worker 504 may report changes to the monitoring service 508 (for example, upon completion of requested changes).
[0039] In 518, the monitoring service 508 may request access to a current object corresponding to the compute instance 506. For example, the monitoring service 508 may submit a request to the state information data store 502 for a current object corresponding to an identifier associated with the compute instance 506, and in response to this request, the state information data store 502 may return the current object.
[0040] In 520, the monitoring service 508 may perform any preferred actions to update the current object with current data received in 516. In some embodiments, these actions may include overwriting one or more previous attribute values stored in the current object with various values obtained from the current data received in 516.
[0041] In 522, the monitoring service 508 may perform an operation to store the newly modified status object in the status information data store 502. By storing the newly modified status object in the status information data store 502, the monitoring service 508 can make the status data accessible to the data plane 114 and / or any preferred component of the data plane 114 in Figure 1.
[0042] Figure 6 is a flowchart illustrating an exemplary method 600 for identifying that a previously requested change has been made to a compute instance, according to at least one embodiment. Method 500 may be performed by a user device 602 (e.g., user device 202 in Figure 2), a control plane 604 (e.g., control plane 204 in Figure 2), a data plane 606 (e.g., data plane 206 in Figure 2), and a state information data store 608 (e.g., state information data store 502 in Figure 5). Method 600 may include more or fewer operations than those shown in Figure 6. The operations of Method 600 may be performed in any preferred order. In some embodiments, one or more operations performed by multiple components may be performed by a single component, and / or operations performed by a single component may be divided and provided by multiple components. In some embodiments, Method 600 may be performed after Method 200 in Figure 2 has been performed.
[0043] Method 600 may begin at 610, where the control plane 604 may present a request for current data to the data plane 606. In some embodiments, the control plane 604 may present this request according to a predefined periodicity, according to a predefined schedule, or at any preferred time. As a non-limiting example, once Method 200 is performed, the control plane 604 may be configured to request current data for the corresponding infrastructure component associated with the change request in Figure 2 at a periodic pace (e.g., every 5 minutes, every 2 minutes, every 30 seconds, daily, every night, etc.). In some embodiments, this request may indicate the requesting party of the change request in Figure 2 (e.g., the user device 106 in Figure 1 and / or the entity associated with that device) and an identifier of the infrastructure component to which the change request relates.
[0044] In 612, the data plane 606 may access a current object corresponding to the identifier of the infrastructure component to which the change request relates. In 614, the state information data store 608 may return the current object of the infrastructure component in question.
[0045] In 616, the requesting party identification provided by the control plane 604 in 610 Using the child, data plane 606 may examine its locally stored mappings to identify the attribute subset to which the requester is associated (for example, attribute subset 302 in Figure 3). Using only the attributes of that subset and a predefined hashing algorithm, data plane 606 may be configured to compute another hash value representing the current state of the infrastructure component for that attribute subset. The specific actions performed to compute this hash value may be identified according to a predefined scheme known to and performed by data plane 206.
[0046] In 618, the hash value calculated in 616 (referred to as the current hash value) may be provided to the control plane 604 in response to a request presented in 610.
[0047] In 620, the control plane 604 may be configured to compare the desired state hash value received in 222 as part of performing method 200 in Figure 2. In some embodiments, if the current hash value provided in 618 does not match the desired state hash value received in 222 during method 200, method 600 may return to 610, where a new request for current data is subsequently presented, resulting in the calculation of a new current hash value, which is then compared to the desired state hash value. This method may be repeated any number of preferred times until the comparison indicates that the current hash value and the desired state hash value match. In this context, a match means that the requested change to the corresponding infrastructure component has been completed.
[0048] In 622, the control plane 604 may provide the user device 602 with an indication that the requested change has been completed. In some embodiments, this indication may be displayed on the user interface 108 in Figure 1. Although not shown, it should be understood that the user interface 108 may provide one or more options to cancel a previously presented change request. This option may be performed by the user at any suitable time (for example, after a relatively sufficient amount of time has elapsed since the change request was presented, for example, 30 minutes for a change that should have taken about 2 minutes to complete).
[0049] Figure 7 is a flowchart illustrating an example of a method 700 for modifying the attributes of a compute instance according to at least one embodiment. Method 700 may be performed by one or more components of the cloud infrastructure system 102 in Figure 1. Method 700 may include more or fewer operations than those shown in Figure 7. These operations may be performed in any preferred order.
[0050] Method 700 may begin in 701, in which compute instances of a cloud computing environment (e.g., Environment 100 in Figure 1) (e.g., infrastructure components of Infrastructure Component 104 in Figure 1) may be managed by a computing system (e.g., by a cloud infrastructure system 102). In some embodiments, compute instances may be managed at least in part on the basis of managing a first state object corresponding to the compute instance (e.g., current object 300 in Figure 3). In some embodiments, the first state object includes a set of attributes (e.g., attributes 1 to N in Figure 3) that indicate the current state of the compute instance.
[0051] In 702, change request data indicating the requested change to a specific attribute of the compute instance is sent by the compute system (e.g., by the control plane 204, by the data plane 206, etc.) to the requesting compute component. It can be received from a control plane (for example, user device 202 in Figure 2, user device 106 in Figure 1, control plane 204, etc.).
[0052] In 703, a second state object of the compute instance (for example, the desired state object 400 in Figure 4) can be derived (for example, by the data plane 206 in Figure 2) based at least partially on the first state object that shows the requested changes and the current state of the compute instance. An example of this derivation is discussed in 216 in Figure 2.
[0053] In 704, a first hash value (e.g., a desired state hash value) is calculated by a computing system (e.g., a data plane 206). In some embodiments, the first hash value is calculated based at least in part on a first subset of attributes from a set of attributes of a second state object (e.g., attribute subset 402 in Figure 4). An example of this calculation is described above in 218 of Figure 2.
[0054] In 705, a first hash value (e.g., a desired state hash value) is provided by the computing system (e.g., data plane 206) to the requesting computing component (e.g., control plane 204, via control plane 204 to user device 202).
[0055] In 706, the computing system performs the requested changes to the compute instance. Performing the requested changes may include starting a separate computing process (for example, worker 504 in Figure 5, worker 116 in Figure 1) to perform one or more actions to apply the change request to the compute instance.
[0056] In 707, the first state object (e.g., the current state object associated with the compute instance) may be updated by the computing system (e.g., the monitoring service 508 in Figure 5) at least in part based on the execution of the requested changes to the compute instance. An example of this update is described above in 520 in Figure 5.
[0057] In 708, a second hash value is calculated (for example, by the data plane 606 in Figure 6 and the data plane 114 in Figure 1). In some embodiments, the second hash value (for example, the current hash value) is calculated based at least in part on a second subset of the set of attributes of the first state object (for example, attribute subset 302 in Figure 3, corresponding to attribute subset 402 in Figure 4).
[0058] In 709, a second hash value (e.g., a current hash value) is provided by the computing system to the requesting computing component (e.g., the control plane 604, and the user device 602 via the control plane 604). In some embodiments, the first and second hash values are configured to be used by the requesting computing component to verify that the requested change has been performed in the compute instance. For example, the control plane 604 may be configured to compare the first hash value (e.g., the desired state hash value received in 222 in Figure 2) with the second hash value (e.g., the current hash value received in 618 in Figure 6). The requesting computing component may identify that the requested change has been completed if these two hash values match. If these hash values do not match, the requesting computing component (e.g., the control plane 604) then obtains new current data (e.g., new data representing the attributes of the subsequent state). The current hash value can be requested, and the comparison can be performed again. This process can be repeated any number of times until a match is identified and / or the modification request is canceled (for example, via the user interface 108 in Figure 1).
[0059] Process 700 can be executed any number of times as preferred. For example, a second change request may be received from a different requesting computing component. The second change request may request a second requested change to one or more attributes of the compute instance. A third state object of the compute instance can be derived, at least partially based on the first state object and the second requested change. A third hash value can be calculated, at least partially based on a third subset of attributes from the set of attributes of the third state object. In some embodiments, the third subset of attributes has different attributes from the first subset of attributes. The third hash value can be provided to the different requesting computing component. In some embodiments, the third hash value is configured to be used by the different requesting computing component to verify that the second requested change has been performed on the compute instance.
[0060] As mentioned above, Infrastructure as a Service (IaaS) is a specific type of cloud computing. It can be configured to provide virtualized computing resources over a public network (e.g., the internet). In the IaaS model, the cloud computing provider may host infrastructure components (e.g., servers, storage devices, network nodes (e.g., hardware), deployment software, platform virtualization (e.g., hypervisor layer)). In some cases, the IaaS provider may also supply various services (e.g., billing, monitoring, logging, security, load balancing, and clustering) to accompany those infrastructure components. Since these services can be policy-driven, the IaaS user may be able to implement policies to drive load balancing in order to maintain application availability and performance.
[0061] In some cases, IaaS customers may access resources and services through a wide area network (WAN), such as the internet. Alternatively, the remaining elements of the application stack may be installed using the cloud provider's services. For example, a user might log into an IaaS platform, create virtual machines (VMs), install an operating system (OS) on each VM, deploy middleware such as databases, create storage buckets for workloads and backups, and even install enterprise software on those VMs. The customer can then use the provider's services to perform various functions, including balancing network traffic, troubleshooting application issues, monitoring performance, and managing disaster recovery.
[0062] In most cases, the cloud computing model will require the participation of a cloud provider. This cloud provider may be, but does not have to be, a third-party service specializing in providing IaaS (e.g., offering, renting, or selling). Entities can also choose to deploy their own private cloud and become their own infrastructure service provider.
[0063] In some cases, IaaS deployment is the process of placing a new application or a new version of an application onto a pre-configured application server. It also involves preparing the server (for example, installing libraries, daemons, etc.). This may also include the process, which is often managed by the cloud provider under the hypervisor layer (e.g., servers, storage, network hardware, and virtualization). Therefore, the customer may be responsible for handling (OS), middleware, and / or application deployment (e.g., on self-service virtual machines, which can be launched on demand).
[0064] In some examples, IaaS provisioning can refer to acquiring computers or virtual hosts for use and even installing the necessary libraries or services on them. In most cases, deployment does not include provisioning, and provisioning may need to be performed first.
[0065] In some cases, IaaS provisioning presents two distinct challenges. First, there's the initial challenge of provisioning an initial set of infrastructure before anything is operational. Second, once everything is provisioned, there's the challenge of evolving the existing infrastructure (e.g., adding new services, modifying services, removing services, etc.). In some cases, these two challenges can be addressed by allowing the infrastructure configuration to be defined declaratively. In other words, the infrastructure (e.g., what components are needed and how they interact) can be defined by one or more configuration files. Thus, the overall topology of the infrastructure (e.g., which resources depend on which resources and how they work together) can be described declaratively. In some cases, once the topology is defined, this can generate workflows for creating and / or managing the different components described in the configuration files.
[0066] In some examples, infrastructure can have many interconnected elements. For example, one or more virtual private clouds (VPCs), also known as core networks (e.g., configurable and / or shared There may be a pool of computing resources that are potentially on-demand. In some examples, there may also be one or more security group rules and one or more virtual machines (VMs) that are provisioned to define how network security is set up. Other infrastructure elements such as load balancers and databases may also be provisioned. The infrastructure can evolve incrementally as more and more infrastructure elements are desired and / or added.
[0067] In some cases, sequential deployment techniques may be employed to enable the deployment of infrastructure code across various virtual computing environments. In addition, the techniques described may enable infrastructure management within these environments. In some examples, a service team may write code that is to be deployed to one or more, but often many, different production environments (e.g., across various different geographical locations, sometimes spanning the entire world). However, in some examples, the infrastructure to which the code is deployed must be set up first. In some cases, provisioning may be done manually, resources may be provisioned using provisioning tools, and / or, once the infrastructure is provisioned, the code may be deployed using deployment tools.
[0068] Figure 8 is a block diagram 800 showing an exemplary pattern of an IaaS architecture according to at least one embodiment. The service operator 802 is a virtual cloud network (VCN) 806 and a secure host subnet 808 It may be communicatively coupled to a secure host tenancy 804, which may include a service operator 802. In some examples, the service operator 802 may use one or more client computing devices, which may be portable handheld devices (e.g., iPhone®, cellular phones, iPad®, computing tablets, personal digital assistants (PDAs)) or wearable devices (e.g., Google Glass® head-mounted displays), running software such as Microsoft Windows Mobile® and / or various mobile operating systems such as iOS®, Windows Phone, Android, BlackBerry 8, Palm OS, and the Internet, email, Short Message Service (SMS), Blackberry®, or other enabled communication protocols. Alternatively, the client computing devices may be general-purpose personal computers, including personal computers and / or laptop computers, running various versions of the Microsoft Windows®, Apple Macintosh®, and / or Linux® operating systems, for example. Client computing devices can be workstation computers running any of the various commercially available UNIX® or UNIX-like operating systems, including, but not limited to, various GNU / Linux operating systems such as Google® Chrome OS.Alternatively, or additionally, the client computing device may be any other electronic device, such as a thin client computer, an internet-enabled gaming system (e.g., a Microsoft Xbox game console with or without a Kinect® gesture input device), and / or a personal messaging device, that can communicate via a network that has access to the VCN806 and / or the Internet.
[0069] VCN806 is a Local Peering Gateway (LPG). )810 may include, which may be communicatively coupled to Secure Shell (SSH) VCN812 via LPG810 contained in SSH VCN812. SSH VCN812 may include SSH subnet 814, which may be communicatively coupled to control plane VCN816 via LPG810 contained in control plane VCN816. SSH VCN812 may also be communicatively coupled to data plane VCN818 via LPG810. Control plane VCN816 and data plane VCN818 may be contained in a service tenancy 819 which may be owned and / or operated by the IaaS provider.
[0070] The control plane VCN816 may include a control plane demilitarized zone (DMZ) layer 820 that functions as a peripheral network (for example, a portion of the corporate network between the corporate intranet and the external network). DMZ-based servers may have limited responsibilities and help keep breaches contained. Furthermore, the DMZ layer 820 may include one or more load balancer (LB) subnets. The control plane DMZ layer 820 may include a control plane application layer 824 which may include an application subnet 826, and a control plane data layer 828 which may include a database (DB) subnet 830 (for example, a front-end DB subnet and / or a back-end DB subnet). The LB subnet 822 included in the control plane DMZ layer 820 may be communicatively coupled to the application subnet 826 included in the control plane application layer 824 and to an internet gateway 834 which may be included in the control plane VCN 816, and the application subnet 826 may be communicatively coupled to the DB subnet 830 included in the control plane data layer 828, to a service gateway 836 and to a network address translation (NAT) gateway 838. The control plane VCN 816 is This may include service gateway 836 and NAT gateway 838.
[0071] The control plane VCN 816 may include a data plane mirror application layer 840 which may include an application subnet 826. The application subnet 826 included in the data plane mirror application layer 840 may include a virtual network interface controller (VNIC) 842 which may run a compute instance 844. The compute instance 844 may communicatively connect the application subnet 826 of the data plane mirror application layer 840 to an application subnet 826 which may be included in the data plane application layer 846.
[0072] The data plane VCN818 may include a data plane application layer 846, a data plane DMZ layer 848, and a data plane data layer 850. The data plane DMZ layer 848 may include an LB subnet 822 that can be communicatively coupled to the application subnet 826 of the data plane application layer 846 and the internet gateway 834 of the data plane VCN818. The application subnet 826 may be communicatively coupled to the service gateway 836 of the data plane VCN818 and the NAT gateway 838 of the data plane VCN818. The data plane data layer 850 may also include a DB subnet 830 that can be communicatively coupled to the application subnet 826 of the data plane application layer 846.
[0073] The Internet gateway 834 of the control plane VCN816 and data plane VCN818 can be communicatively coupled to a metadata management service 852, which can be communicatively coupled to the public internet 854. The public internet 854 can be communicatively coupled to the NAT gateway 838 of the control plane VCN816 and data plane VCN818. The service gateway 836 of the control plane VCN816 and data plane VCN818 can be communicatively coupled to a cloud service 856.
[0074] In some examples, a service gateway 836 of the control plane VCN816 or data plane VCN818 may make application programming interface (API) calls to cloud services 856 without passing through the public internet 854. API calls to the cloud service 856 can be one-way, with the service gateway 836 making API calls to the cloud service 856, and the cloud service 856 sending the requested data to the service gateway 836. However, the cloud service 856 does not have to initiate API calls to the service gateway 836.
[0075] In some examples, a secure host tenancy 804 can connect directly to a service tenancy 819, which may otherwise be isolated. A secure host subnet 808 can communicate with an SSH subnet 814 via an LPG 810, which may otherwise enable bidirectional communication through an isolated system. Connecting the secure host subnet 808 to the SSH subnet 814 may give the secure host subnet 808 access to other entities within the service tenancy 819.
[0076] The control plane VCN816 may allow users of service tenancy 819 to set up or otherwise provision desired resources. Desired resources provisioned within the control plane VCN816 may be deployed or otherwise used within the data plane VCN818. In some examples, the control plane VCN816 may be isolated from the data plane VCN818, and the control plane VCN816 may be isolated from the data plane The mirror application layer 840 can communicate with the data plane application layer 846 of the data plane VCN 818 via the VNIC 842, which may be included in the data plane mirror application layer 840 and the data plane application layer 846.
[0077] In some examples, a system user or customer may perform a request, such as a create, read, update, or delete (CRUD) operation, via the public internet 854, which can communicate the request to the metadata management service 852. The metadata management service 852 may communicate the request to the control plane VCN 816 via the internet gateway 834. This request may be received by the LB subnet 822, which is included in the control plane DMZ layer 820. The LB subnet 822 may determine that the request is valid, and in response to this determination, the LB subnet 822 may send the request to the application subnet 826, which is included in the control plane application layer 824. If the request is validated and requires a call to the public internet 854, the call to the public internet 854 may be sent to the NAT gateway 838, which can make calls to the public internet 854. Memory that may be desired to be stored by the request may be stored in the DB subnet 830.
[0078] In some examples, the data plane mirror application layer 840 can facilitate direct communication between the control plane VCN816 and the data plane VCN818. For example, it may be desirable that configuration changes, updates, or other appropriate modifications be applied to the resources contained in the data plane VCN818. Through VNIC842, the control plane VCN816 can communicate directly with the resources contained in the data plane VCN818, thereby enabling it to perform configuration changes, updates, or other preferred modifications.
[0079] In some embodiments, the control plane VCN816 and data plane VCN818 may be included in the service tenancy 819. In this case, the system user or customer does not have to own or operate either the control plane VCN816 or the data plane VCN818. Instead, the IaaS provider may own or operate the control plane VCN816 and the data plane VCN818, and both may be included in the service tenancy 819. This embodiment may enable network isolation that can prevent the user or customer from interacting with resources of other users or other customers. This embodiment may also enable the system user or customer to store databases privately without having to rely on the public internet 854 for storage, which may not have the desired level of security.
[0080] In another embodiment, the LB subnet 822 included in the control plane VCN 816 may be configured to receive signals from the service gateway 836. In this embodiment, the control plane VCN 816 and the data plane VCN 818 may be configured to be invoked by the IaaS provider's customer without calling the public internet 854. The IaaS provider's customer may desire this embodiment because the database used by the customer may be controlled by the IaaS provider and may be stored on a service tenancy 819 that can be isolated from the public internet 854.
[0081] Figure 9 is a block diagram 900 showing another exemplary pattern of an IaaS architecture according to at least one embodiment. A service operator 902 (for example, service operator 802 in Figure 8) may be communicably coupled to a secure host tenancy 904 (for example, secure host tenancy 804 in Figure 8), which may include a virtual cloud network (VCN) 906 (for example, VCN806 in Figure 8) and a secure host subnet 908 (for example, secure host subnet 808 in Figure 8). VCN906 is SSH Secure Shell (SSH) via LPG810 included in VCN912 VCN912 This may include a local peering gateway (LPG) 910 (e.g., LPG810 in Figure 8) that can be communicatively coupled to (e.g., SSH VCN812 in Figure 8). VCN912 may include an SSH subnet 914 (for example, SSH subnet 814 in Figure 8), and SSH VCN912 may be communicably coupled to control plane VCN916 (for example, control plane VCN816 in Figure 8) via an LPG 910 included in control plane VCN916. Control plane VCN916 may be included in service tenancy 919 (for example, service tenancy 819 in Figure 8), and data plane VCN918 (for example, data plane VCN818 in Figure 8) may be included in customer tenancy 921, which may be owned or operated by a user or customer of the system.
[0082] The control plane VCN916 may include a control plane DMZ layer 920 (e.g., control plane DMZ layer 820 in Figure 8) which may include an LB subnet 922 (e.g., LB subnet 822 in Figure 8), a control plane application layer 924 (e.g., control plane application layer 824 in Figure 8) which may include an application subnet 926 (e.g., application subnet 826 in Figure 8), and a control plane data layer 928 (e.g., control plane data layer 828 in Figure 8) which may include a database (DB) subnet 930 (e.g., similar to DB subnet 830 in Figure 8). The LB subnet 922 included in the control plane DMZ layer 920 may be communicatively coupled to the application subnet 926 included in the control plane application layer 924 and to an internet gateway 934 (for example, internet gateway 834 in Figure 8) which may be included in the control plane VCN 916. The application subnet 926 may be communicatively coupled to the DB subnet 930 included in the control plane data layer 928, to a service gateway 936 (for example, the service gateway in Figure 8) and to a network address translation (NAT) gateway 938 (for example, NAT gateway 838 in Figure 8). The control plane VCN 916 may include the service gateway 936 and the NAT gateway 938.
[0083] The control plane VCN916 may include a data plane mirror application layer 940 (for example, the data plane mirror application layer 840 in Figure 8) which may include an application subnet 926. The application subnet 926 included in the data plane mirror application layer 940 may include a virtual network interface controller (VNIC) 942 (for example, VNIC 842) which may run a compute instance 944 (for example, similar to compute instance 844 in Figure 8). The compute instance 944 may facilitate communication between the application subnet 926 of the data plane mirror application layer 940 and the application subnet 926 that may be included in the data plane application layer 946 (for example, the data plane application layer 846 in Figure 8) via the VNIC 942 included in the data plane mirror application layer 940 and the VNIC 942 included in the data plane application layer 946.
[0084] The Internet gateway 934 included in the control plane VCN916 may be communicably coupled to a metadata management service 952 (e.g., metadata management service 852 in Figure 8), which may be communicably coupled to the public internet 954 (e.g., public internet 854 in Figure 8). The public internet 954 may be communicably coupled to a NAT gateway 938 included in the control plane VCN916. The service gateway 936 included in the control plane VCN916 may be communicably coupled to a cloud service 956 (e.g., cloud service 856 in Figure 8).
[0085] In some examples, the data plane VCN918 may be included in the customer tenancy 921. In this case, the IaaS provider may provide a control plane VCN916 per customer, and the IaaS provider may set up a unique compute instance 944 included in the service tenancy 919 for each customer. Each compute instance 944 is included in the control plane VCN916 included in the service tenancy 919 and the data plane included in the customer tenancy 921. Compute instance 944 may enable communication with the control plane VCN918. Compute instance 944 may enable resources provisioned in the control plane VCN916 included in service tenancy 919 to be deployed or otherwise used in the data plane VCN918 included in customer tenancy 921.
[0086] In another example, an IaaS provider's customer may have a database residing in customer tenancy 921. In this example, the control plane VCN916 may include a data plane mirror app layer 940, which may include an app subnet 926. The data plane mirror app layer 940 may reside within the data plane VCN918, but does not have to reside within the data plane VCN918. That is, the data plane mirror app layer 940 may have access to customer tenancy 921, but does not have to reside within the data plane VCN918, nor does it have to be owned or operated by the IaaS provider's customer. The data plane mirror app layer 940 may be configured to make calls to the data plane VCN918, but does not have to be configured to make calls to any entity contained in the control plane VCN916. The customer may wish to deploy or otherwise use resources in the data plane VCN918 provisioned in the control plane VCN916, and the data plane mirror application layer 940 can facilitate the customer's desired deployment or other use of resources.
[0087] In some embodiments, a customer of the IaaS provider may apply filters to the data plane VCN918. In this embodiment, the customer may determine what the data plane VCN918 can access, and may restrict access from the data plane VCN918 to the public internet 954. The IaaS provider may not be able to filter or otherwise control the data plane VCN918's access to any external network or database. Applying filters and controls by the customer on the data plane VCN918 included in the customer tenancy 921 can help isolate the data plane VCN918 from other customers and the public internet 954.
[0088] In some embodiments, the cloud service 956 may be invoked by the service gateway 936 to access services that may not reside on the public internet 954, the control plane VCN 916, or the data plane VCN 918. The connection between the cloud service 956 and the control plane VCN 916 or data plane VCN 918 may not be live or continuous. The cloud service 956 may reside on different networks owned or operated by the IaaS provider. The cloud service 956 may be configured to receive calls from the service gateway 936 and not to receive calls from the public internet 954. Some cloud services 956 may be isolated from other cloud services 956, and the control plane VCN 916 may be isolated from cloud services 956 that may not be in the same region as the control plane VCN 916. For example, the control plane VCN 916 may be located in "Region 1", and the cloud service "Deployment 8" may be located in Region 1 and "Region 2". If a call to deployment 8 is made by a service gateway 936 included in the control plane VCN916 located in region 1, the call may be transmitted to deployment 8 in region 1. In this example, the control plane VCN916, or deployment 8 in region 1, does not have to be communicatively coupled to, or otherwise communicate with, deployment 8 in region 2.
[0089] Figure 10 is a block diagram 1000 showing another exemplary pattern of an IaaS architecture according to at least one embodiment. Service operator 1002 (for example, Figure 1000) A service operator (802) may be communicatively coupled to a secure host tenancy (e.g., secure host tenancy 804 in Figure 8), which may include a virtual cloud network (VCN) 1006 (e.g., VCN806 in Figure 8) and a secure host subnet 1008 (e.g., secure host subnet 808 in Figure 8). VCN1006 may include an LPG 1010 (e.g., LPG810 in Figure 8), which may be communicatively coupled to an SSH VCN1012 (e.g., SSH VCN812 in Figure 8) via an LPG 1010 contained within the SSH VCN1012. SSH VCN1012 may include SSH subnet 1014 (for example, SSH subnet 814 in Figure 8), and SSH VCN1012 may be communicatively coupled to control plane VCN1016 (for example, control plane VCN816 in Figure 8) via LPG1010 included in control plane VCN1016, and may be communicatively coupled to data plane VCN1018 (for example, data plane 818 in Figure 8) via LPG1010 included in data plane VCN1018. Control plane VCN1016 and data plane VCN1018 may be included in service tenancy 1019 (for example, service tenancy 819 in Figure 8).
[0090] The control plane VCN1016 may include a control plane DMZ layer 1020 (e.g., control plane DMZ layer 820 in Figure 8) which may include a load balancer (LB) subnet 1022 (e.g., LB subnet 822 in Figure 8), a control plane application layer 1024 (e.g., control plane application layer 824 in Figure 8) which may include an application subnet 1026 (e.g., similar to application subnet 826 in Figure 8), and a control plane data layer 1028 (e.g., control plane data layer 828 in Figure 8) which may include a DB subnet 1030. The LB subnet 1022 included in the control plane DMZ layer 1020 may be communicatively coupled to the application subnet 1026 included in the control plane application layer 1024 and to an internet gateway 1034 (for example, internet gateway 834 in Figure 8) which may be included in the control plane VCN 1016. The application subnet 1026 may be communicatively coupled to the DB subnet 1030 included in the control plane data layer 1028, as well as to a service gateway 1036 (for example, the service gateway in Figure 8) and a network address translation (NAT) gateway 1038 (for example, the NAT gateway 838 in Figure 8). The control plane VCN 1016 may include the service gateway 1036 and the NAT gateway 1038.
[0091] The data plane VCN 1018 may include a data plane application layer 1046 (for example, the data plane application layer 846 in Figure 8), a data plane DMZ layer 1048 (for example, the data plane DMZ layer 848 in Figure 8), and a data plane data layer 1050 (for example, the data plane data layer 850 in Figure 8). The data plane DMZ layer 1048 may include a trusted application subnet 1060 and an untrusted application subnet 1062 of the data plane application layer 1046, and an LB subnet 1022 that can be communicatively coupled to the internet gateway 1034 included in the data plane VCN 1018. The trusted application subnet 1060 may be communicatively coupled to the service gateway 1036 included in the data plane VCN 1018, the NAT gateway 1038 included in the data plane VCN 1018, and the DB subnet 1030 included in the data plane data layer 1050. An untrusted application subnet 1062 may be communicatively coupled to a service gateway 1036 included in the data plane VCN 1018 and to a DB subnet 1030 included in the data plane data layer 1050. The data plane data layer 1050 may include a DB subnet 1030 that can be communicatively coupled to a service gateway 1036 included in the data plane VCN 1018.
[0092] The untrusted application subnet 1062 may contain one or more primary VNICs 1064(1)-(N) that can be communicably coupled to tenant virtual machines (VMs) 1066(1)-(N). Each tenant VM 1066(1)-(N) is connected to its respective customer tenant Each container egress VCN 1068(1)~(N) that may be included in VCN 1070(1)~(N) can be communicably coupled to each application subnet 1067(1)~(N) that may be included in VCN 1070(1)~(N). Each secondary VNIC 1072(1)~(N) can facilitate communication between the untrusted application subnet 1062 included in data plane VCN 1018 and the application subnets included in container egress VCN 1068(1)~(N). Each container egress VCN 1068(1)~(N) may include a NAT gateway 1038 that can be communicably coupled to the public internet 1054 (for example, public internet 854 in Figure 8).
[0093] The Internet gateway 1034, included in the control plane VCN1016 and the data plane VCN1018, can be communicatively coupled to a metadata management service 1052 (for example, the metadata management system 852 in Figure 8), which can be communicatively coupled to the public internet 1054. The public internet 1054 can be communicatively coupled to a NAT gateway 1038, included in the control plane VCN1016 and the data plane VCN1018. The service gateway 1036, included in the control plane VCN1016 and the data plane VCN1018, can be communicatively coupled to a cloud service 1056.
[0094] In some embodiments, the data plane VCN 1018 may be integrated with the customer tenancy 1070. This integration may be useful or desirable for the IaaS provider's customer in several cases, such as when they may want support when executing code. The customer may provide code to be executed that may be disruptive, communicate with other customer resources, or otherwise cause undesirable effects. In response, the IaaS provider may decide whether to execute the code provided to the IaaS provider by the customer.
[0095] In some examples, an IaaS provider's customer might grant temporary network access to the IaaS provider and request that a certain function be attached to a dataplane tier application 1046. The code for executing the function may run in VMs 1066(1)-(N) and may not be configured to run anywhere else on the dataplane VCN 1018. Each VM 1066(1)-(N) may be connected to one customer tenancy 1070. Each container 1071(1)-(N) contained within VMs 1066(1)-(N) may be configured to execute the code. In this case, double isolation may be possible (for example, containers 1071(1)-(N) may execute the code, and containers 1071(1)-(N) may be contained within at least VMs 1066(1)-(N) that are in an untrusted application subnet 1062), which can help prevent incorrect or otherwise undesirable code from damaging the IaaS provider's network or the network of a different customer. Containers 1071(1)-(N) may be communicatively coupled to customer tenancy 1070 and may be configured to send or receive data to or from customer tenancy 1070. Containers 1071(1)-(N) do not have to be configured to send or receive data to or from any other entities in the data plane VCN 1018. Once code execution is complete, the IaaS provider may kill or otherwise discard containers 1071(1)-(N).
[0096] In some embodiments, a trusted application subnet 1060 may execute code that may be owned or operated by the IaaS provider. In this embodiment, the trusted application subnet 1060 may be communicatively coupled to a DB subnet 1030 and configured to perform CRUD operations within the DB subnet 1030. An untrusted application subnet 1062 may be communicatively coupled to the DB subnet 1030, but this implementation In this configuration, an untrusted application subnet may be configured to perform read operations within the DB subnet 1030. Containers 1071(1)-(N), which may be contained within each customer's VM1066(1)-(N) and capable of executing code from that customer, do not need to be coupled to the DB subnet 1030 in a communicative manner.
[0097] In other embodiments, the control plane VCN1016 and the data plane VCN1018 do not need to be directly communicatively coupled. In this embodiment, there may be no direct communication between the control plane VCN1016 and the data plane VCN1018. However, communication may occur indirectly through at least one method. An LPG1010 that facilitates communication between the control plane VCN1016 and the data plane VCN1018 may be established by the IaaS provider. In another example, the control plane VCN1016 or the data plane VCN1018 may make a call to the cloud service 1056 via the service gateway 1036. For example, a call from the control plane VCN1016 to the cloud service 1056 may include a request for a service that can communicate with the data plane VCN1018.
[0098] Figure 11 is a block diagram 1100 showing another exemplary pattern of an IaaS architecture according to at least one embodiment. A service operator 1102 (e.g., service operator 802 in Figure 8) may be communicatively coupled to a secure host tenancy 1104 (e.g., secure host tenancy 804 in Figure 8), which may include a virtual cloud network (VCN) 1106 (e.g., VCN806 in Figure 8) and a secure host subnet 1108 (e.g., secure host subnet 808 in Figure 8). VCN 1106 may include an LPG 1110 (e.g., LPG810 in Figure 8), which may be communicatively coupled to an SSH VCN 1112 (e.g., SSH VCN812 in Figure 8) via an LPG 1110 included in the SSH VCN 1112. SSH VCN1112 may include SSH subnet 1114 (for example, SSH subnet 814 in Figure 8), SSH VCN1112 may be communicatively coupled to control plane VCN1116 (for example, control plane VCN816 in Figure 8) via LPG1110 included in control plane VCN1116, and may be communicatively coupled to data plane VCN1118 (for example, data plane 818 in Figure 8) via LPG1110 included in data plane VCN1118. Control plane VCN1116 and data plane VCN1118 may be included in service tenancy 1119 (for example, service tenancy 819 in Figure 8).
[0099] The control plane VCN1116 may include a control plane DMZ layer 1120 (for example, the control plane DMZ layer 820 in Figure 8) which may include an LB subnet 1122 (for example, the LB subnet 822 in Figure 8), a control plane application layer 1124 (for example, the control plane application layer 824 in Figure 8) which may include an application subnet 1126 (for example, the application subnet 826 in Figure 8), and a control plane data layer 1128 (for example, the control plane data layer 828 in Figure 8) which may include a DB subnet 1130 (for example, the DB subnet 1030 in Figure 10). The LB subnet 1122 included in the control plane DMZ layer 1120 may be communicatively coupled to the application subnet 1126 included in the control plane application layer 1124 and to an internet gateway 1134 (for example, internet gateway 834 in Figure 8) which may be included in the control plane VCN 1116. The application subnet 1126 may be communicatively coupled to the DB subnet 1130 included in the control plane data layer 1128 and to a service gateway 1136 (for example, the service gateway in Figure 8) and a network address translation (NAT) gateway 1138 (for example, the NAT gateway 838 in Figure 8). The control plane VCN 1116 may include the service gateway 1136 and the NAT gateway 1138.
[0100] The data plane VCN1118 is the data plane application layer 1146 (for example, Figure 8) The data plane may include an application layer 846, a data plane DMZ layer 1148 (for example, the data plane DMZ layer 848 in Figure 8), and a data plane data layer 1150 (for example, the data plane data layer 850 in Figure 8). The data plane DMZ layer 1148 may include a trusted application subnet 1160 (for example, the trusted application subnet 1060 in Figure 10) and an untrusted application subnet 1162 (for example, the untrusted application subnet 1162 in Figure 10) of the data plane application layer 1146, and an LB subnet 1122 that can be communicatively coupled to an internet gateway 1134 included in the data plane VCN 1118. The trusted application subnet 1160 may be communicatively coupled to a service gateway 1136 included in the data plane VCN 1118, a NAT gateway 1138 included in the data plane VCN 1118, and a DB subnet 1130 included in the data plane data layer 1150. An untrusted application subnet 1162 may be communicatively coupled to a service gateway 1136 included in the data plane VCN 1118 and to a DB subnet 1130 included in the data plane data layer 1150. The data plane data layer 1150 may include a DB subnet 1130 that can be communicatively coupled to a service gateway 1136 included in the data plane VCN 1118.
[0101] An untrusted application subnet 1162 may include primary VNICs 1164(1)-(N) that can be communicatively coupled to tenant virtual machines (VMs) 1166(1)-(N) residing within the untrusted application subnet 1162. Each tenant VM 1166(1)-(N) may execute code in its respective container 1167(1)-(N) and can be communicatively coupled to an application subnet 1126 that may be included in a dataplane application layer 1146 that may be included in a container egress VCN 1168. Each secondary VNIC 1172(1)-(N) can facilitate communication between the untrusted application subnet 1162 included in the dataplane VCN 1118 and the application subnet included in the container egress VCN 1168. The container egress VCN may include a NAT gateway 1138 that can be communicatively coupled to the public internet 1154 (for example, the public internet 854 in Figure 8).
[0102] The Internet gateway 1134, included in the control plane VCN1116 and data plane VCN1118, can be communicatively coupled to a metadata management service 1152 (for example, the metadata management system 852 in Figure 8), which can be communicatively coupled to the public internet 1154. The public internet 1154 can be communicatively coupled to a NAT gateway 1138, included in the control plane VCN1116 and data plane VCN1118. The service gateway 1136, included in the control plane VCN1116 and data plane VCN1118, can be communicatively coupled to a cloud service 1156.
[0103] In some examples, the pattern shown by the architecture of block diagram 1100 in Figure 11 may be considered an exception to the pattern shown by the architecture of block diagram 1000 in Figure 10, which may be desirable for the IaaS provider's customers when the IaaS provider cannot communicate directly with the customers (e.g., in a disconnected region). Each container 1167(1)~(N) contained within VM 1166(1)~(N) for each customer may be accessible by the customer in real time. Each container 1167(1)~(N) may be configured to make calls to each secondary VNIC 1172(1)~(N) contained within the application subnet 1126 of the data plane application layer 1146, which may be contained within the container egress VCN 1168. The secondary VNICs 1172(1)~(N) may send calls to the NAT gateway 1138, which may send calls to the public internet 1154. In this example, containers 1167(1)~(N), which can be accessed by customers in real time, are controlled It may be isolated from the customer plane VCN1116 and from other entities included in the data plane VCN1118. Containers 1167(1)~(N) may also be isolated from resources from other customers.
[0104] In another example, a customer might use containers 1167(1)-(N) to invoke cloud service 1156. In this example, the customer might execute code within containers 1167(1)-(N) to request a service from cloud service 1156. Containers 1167(1)-(N) might send this request to secondary VNICs 1172(1)-(N), which might send the request to a NAT gateway, which might send the request to the public internet 1154. The public internet 1154 might send the request to LB subnet 1122, which is included in control plane VCN 1116, via internet gateway 1134. In response to determining that the request is valid, the LB subnet might send the request to application subnet 1126, which might send the request to cloud service 1156 via service gateway 1136.
[0105] It should be understood that the illustrated IaaS architectures 800, 900, 1000, and 1100 may have components other than those shown. Furthermore, the illustrated embodiments are only some examples of cloud infrastructure systems that may incorporate embodiments of this disclosure. In some other embodiments, the IaaS system may have more or fewer components than those shown, may combine two or more components, or may have different configurations or arrangements of components.
[0106] In certain embodiments, the IaaS system described herein may include a set of applications, middleware, and database service offerings that are self-service, subscription-based, flexibly scalable, reliable, highly available, and delivered to customers in a secure manner. An example of such an IaaS system is Oracle Cloud Infrastructure (OCI) provided by the Assignee.
[0107] Figure 12 shows an exemplary computer system 1200 in which various embodiments can be realized. System 1200 can be used to realize any of the computer systems described above. As shown in the figure, computer system 1200 includes a processing unit 1204 that communicates with several peripheral subsystems via a bus subsystem 1202. These peripheral subsystems may include a processing acceleration unit 1206, an I / O subsystem 1208, a storage subsystem 1218, and a communication subsystem 1224. The storage subsystem 1218 includes a tangible computer-readable storage medium 1222 and system memory 1210.
[0108] The bus subsystem 1202 provides a mechanism for various components and subsystems of the computer system 1200 to communicate with each other as intended. While the bus subsystem 1202 is schematically shown as a single bus, alternative embodiments of the bus subsystem may utilize multiple buses. The bus subsystem 1202 may be one of several types of bus structures, including a memory bus or memory controller, peripheral bus, and local bus, using one of various bus architectures. For example, such architectures include the Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and those manufactured according to the IEEE P1386.1 standard. Peripheral component interconnect (PCI:Peri) can be realized as a mezzanine bus. It may include a pheral component interconnect bus.
[0109] The processing unit 1204 can be implemented as one or more integrated circuits (for example, conventional microprocessors or microcontrollers) and control the operation of the computer system 1200. One or more processors may be included in the processing unit 1204. These processors may include single-core processors or multi-core processors. In certain embodiments, the processing unit 1204 may be implemented as one or more independent processing units 1232 and / or 1234, each containing a single-core or multi-core processor. In other embodiments, the processing unit 1204 may also be implemented as a quad-core processing unit formed by integrating two dual-core processors onto a single chip.
[0110] In various embodiments, the processing unit 1204 can execute various programs in response to program code and can maintain multiple programs or processes running simultaneously. At any given time, some or all of the program code to be executed can reside in the processing unit 1204 and / or the storage subsystem 1218. Through suitable programming, the processing unit 1204 can provide the various functions described above. The computer system 1200 may further include a processing acceleration unit 1206 which may include a digital signal processor (DSP), a special-purpose processor, and the like.
[0111] The I / O subsystem 1208 may include user interface input devices and user interface output devices. User interface input devices may include pointing devices such as keyboards, mice or trackballs, touchpads or touchscreens integrated into displays, scroll wheels, click wheels, dials, buttons, switches, keypads, voice input devices with voice command recognition systems, microphones, and other types of input devices. User interface input devices may also include motion sensing and / or gesture recognition devices such as Microsoft Kinect® motion sensors, which enable users to control and interact with input devices such as Microsoft Xbox® 360 game controllers through a natural user interface using gesture and speech commands. User interface input devices may also include eye gesture recognition devices such as Google Glass® blink detectors, which detect eye movements from the user (e.g., blinks while taking pictures and / or making menu selections) and translate eye gestures as input to an input device (e.g., Google Glass®). In addition, the user interface input device may include a voice recognition sensing device that enables the user to interact with a voice recognition system (e.g., Siri® Navigator) via voice commands.
[0112] User interface input devices may include, but are not limited to, three-dimensional (3D) mice, joysticks or pointing sticks, gamepads and graphic tablets, as well as auditory / visual devices such as speakers, digital cameras, digital camcorders, portable media players, webcams, image scanners, fingerprint scanners, barcode readers, 3D scanners, 3D printers, laser rangefinders, and eye-tracking devices. In addition, user interface input devices may include, for example, medical imaging input devices such as computed tomography, magnetic resonance imaging, positron emission tomography, and medical ultrasound equipment. User interface input devices may also include, for example, audio input devices such as MIDI keyboards and digital musical instruments.
[0113] User interface output devices may include non-visual displays such as display subsystems, indicator lights, or audio output devices. Display subsystems may include flat panel devices such as those using cathode ray tubes (CRTs), liquid crystal displays (LCDs), or plasma displays, projection devices, and touchscreens. In general, the use of the term “output device” is intended to include all conceivable types of devices and mechanisms for outputting information from the computer system 1200 to a user or another computer. For example, user interface output devices may include, but are not limited to, a variety of display devices that visually convey text, graphics, and audio / video information, such as monitors, printers, speakers, headphones, car navigation systems, plotters, audio output devices, and modems.
[0114] The computer system 1200 may include a storage subsystem 1218 containing software elements, which are currently shown to be located in the system memory 1210. The system memory 1210 may store program instructions that can be loaded and executed on the processing unit 1204, as well as data generated during the execution of these programs.
[0115] Depending on the configuration and type of the computer system 1200, the system memory 1210 may be volatile (such as Random Access Memory (RAM)) and / or non-volatile (such as Read-Only Memory (ROM) or flash memory). RAM typically includes data and / or program modules that are immediately accessible to the processing unit 1204 and / or currently being operated and executed by the processing unit 1204. In some implementations, the system memory 1210 may include several different types of memory, such as Static Random Access Memory (SRAM) or Dynamic Random Access Memory (DRAM). In this example, a Basic Input / Output System (BIOS), which contains basic routines that help transfer information between elements within the computer system 1200 during startup, etc., can typically be stored in ROM. For example, system memory 1210 may also include application programs such as client applications, web browsers, middle-tier applications, and relational database management systems (RDBMS). Gram 1212, program data 1214, and operating system 1216 are also shown. For example, operating system 1216 is various versions of Microsoft Windows®, Apple Macintosh®, and / or Linux. (Registered Trademark) Operating Systems, various commercially available UNIX® or UNIX-like operating systems (including, but not limited to, various GNU / Linux operating systems, Google Chrome® OS, etc.), and / or iOS Windows® Phone, Android® OS, BlackBerry® 12 This may include operating systems and mobile operating systems such as Palm®OS operating system.
[0116] The storage subsystem 1218 may also provide a tangible computer-readable storage medium for storing basic programming and data structures that provide functionality in some embodiments. Software (programs, code modules, instructions) that, when executed by the processor, provides the functionality described above, may be stored in the storage subsystem 1218. These software modules or instructions may be executed by the processing unit 1204. The storage subsystem 1218 may also provide a repository for storing data used in accordance with this disclosure.
[0117] The storage subsystem 1218 may also include a computer-readable storage medium reader 1220 which may be further connected to the computer-readable storage medium 1222. Together with the system memory 1210, and optionally in combination with the system memory 1210, the computer-readable storage medium 1222 may comprehensively represent a combination of storage media with remote, local, fixed, and / or removable storage devices for temporarily and / or more permanently storing, storing, transmitting, and retrieving computer-readable information.
[0118] The computer-readable storage medium 1222 containing code or a portion of code may also include, but is not limited to, any suitable medium known or used in the art, including storage and communication media, such as volatile and non-volatile, removable and non-removable media, implemented by any method or technique for storing and / or transmitting information. This may include tangible computer-readable storage media such as RAM, ROM, electronically erasable programmable ROM (EEPROM), flash memory or other memory technologies, CD-ROM, digital versatile disk (DVD), or other optical storage devices, magnetic cassettes, magnetic tapes, magnetic disk storage devices or other magnetic storage devices, or other tangible computer-readable media. This may also include intangible computer-readable media such as any other media that can be used to transmit data signals, data transmissions, or desired information and can be accessed by the computing system 1200.
[0119] For example, the computer-readable storage medium 1222 is a hard disk drive that reads and writes to a non-removable non-volatile magnetic medium, a magnetic disk drive that reads and writes to a removable non-volatile magnetic disk, a CD-ROM, a DVD, and a Blu-ray (registered trademark). The computer-readable storage medium 1222 may include, but is not limited to, Zip® drives, flash memory cards, Universal Serial Bus (USB) flash drives, Secure Digital (SD) cards, DVD discs, digital videotapes, etc. The computer-readable storage medium 1222 may also include, but is not limited to, flash memory-based SSDs, enterprise flash drives, solid-state drives (SSDs) based on non-volatile memory such as solid-state ROM, solid-state drives, and solid-state drives. This may include SSDs based on volatile memory such as static RAM, dynamic RAM, and static RAM, DRAM-based SSDs, magnetoresistive RAM (MRAM) SSDs, and hybrid SSDs that use a combination of DRAM and flash memory-based SSDs. Disk drives and computer-readable media associated with them may provide computer system 1200 with non-volatile storage of computer-readable instructions, data structures, program modules, and other data.
[0120] The communication subsystem 1224 provides an interface to other computer systems and networks. The communication subsystem 1224 acts as an interface for sending and receiving data between other systems and the computer system 1200. For example, the communication subsystem 1224 may enable the computer system 1200 to connect to one or more devices via the Internet. In some embodiments, the communication subsystem 1224 may provide wireless voice and / or data networks (e.g., using cellular telephone technology, 3G, 4G or EDGE (High Speed Data Rate for Global Evolution) or other advanced data network technologies, WiFi (IEEE 802.11 family standards, or other mobile communication technologies, or any combination thereof)). Radio frequency (RF) transceiver components for accessing [something]. Global Positioning System (GPS) receiver controller It may include a component and / or other components. In some embodiments, the communication subsystem 1224 can provide wired network connectivity (e.g., Ethernet®) in addition to, or instead of, a wireless interface.
[0121] In some embodiments, the communication subsystem 1224 may also receive input communications in the form of structured and / or unstructured data feeds 1226, event streams 1228, event updates 1230, etc., on behalf of one or more users who may be using the computer system 1200.
[0122] For example, the communication subsystem 1224 handles Twitter® feeds, Facebook ( (Registered Trademark) Updates, Web feeds such as Rich Site Summary (RSS) feeds, and It may be configured to receive data feeds 1226 in real time from users of social networks and / or other communication services, such as real-time updates from one or more third-party sources.
[0123] In addition, the communication subsystem 1224 may also be configured to receive data in the form of a continuous data stream, which may include an event stream 1228 and / or event update 1230 of real-time events, which may be inherently continuous or infinite and have no clear termination. Examples of applications that generate continuous data may include, for example, sensor data applications, financial stock market boards, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, and automotive traffic monitoring.
[0124] The communication subsystem 1224 may also be configured to output structured and / or unstructured data feeds 1226, event streams 1228, event updates 1230, etc., to one or more databases that can communicate with one or more streaming data source computers coupled to the computer system 1200.
[0125] The computer system 1200 can be one of a variety of types, including handheld portable devices (e.g., iPhone® mobile phones, iPad® computing tablets, PDAs), wearable devices (e.g., Google Glass® head-mounted displays), PCs, workstations, mainframes, kiosks, server racks, or any other data processing systems.
[0126] Due to the ever-changing nature of computers and networks, the description of the computer system 1200 shown in the figure is intended only as a specific example. Many other configurations are possible, having more or fewer components than the system depicted in the figure. For example, customized hardware may also be used, and / or certain elements may be implemented in hardware, firmware, software (including applets), or a combination thereof. Furthermore, connections to other computing devices, such as network input / output devices, may be employed. Based on the disclosures and teachings provided herein, those skilled in the art will understand other aspects and / or methods for implementing various embodiments.
[0127] While we have described specific embodiments, various modifications, changes, alternative configurations, and average configurations are possible. Equivalents are also included within the scope of this disclosure. The embodiments are not limited to operation within a particular data processing environment, but can freely operate within multiple data processing environments. In addition, although the embodiments are described using a particular set of transactions and steps, it should be apparent to those skilled in the art that the scope of this disclosure is not limited to the described set of transactions and steps. The various features and aspects of the embodiments described above may be used individually or in combination.
[0128] Furthermore, while embodiments have been described using specific combinations of hardware and software, it should be recognized that other combinations of hardware and software are also within the scope of this disclosure. Embodiments may be implemented using hardware alone, software alone, or a combination thereof. Various processes described herein may be implemented on the same processor or on different processors in any combination. Thus, where a component or module is described as being configured to perform a particular operation, such configuration may be achieved, for example, by designing electronic circuits to perform the operation, by programming programmable electronic circuits (such as a microprocessor) to perform the operation, or by any combination thereof. Processes may communicate using a variety of techniques, including but not limited to conventional techniques for inter-process communication, and different pairs of processes may use different techniques, or the same pair of processes may use different techniques at different times.
[0129] Therefore, the specification and drawings should be considered illustrative rather than restrictive. However, it will be clear that additions, reductions, deletions, and other modifications and changes may be made without departing from the broader spirit and scope set forth in the claims. Thus, while specific embodiments of the disclosure have been described, these are not intended to be limiting. Various modifications and equivalents are within the scope of the claims.
[0130] In the context describing the disclosed embodiments (particularly in the context of the claims), the use of the words “a,” “an,” and “the,” as well as similar referents, should be interpreted as encompassing both singular and plural forms, unless otherwise indicated herein or unless the context clearly contradicts this interpretation. The words “comprising,” “having,” “including,” and “containing” Unless otherwise specified, “(containing)” should be interpreted as non-exclusive (i.e., meaning “including but not limited to”). The phrase “connected” should be interpreted as being partially or entirely contained within, attached to, or combined with, even if something is intervening. Unless otherwise indicated herein, the descriptions of value ranges are intended merely as a concise way of referring individually to each separate value that falls within that range, and each separate value is incorporated herein as if it were individually described herein. All methods described herein may be performed in any preferred order unless otherwise indicated herein or unless it is clearly inconsistent with the context. Any and all examples or illustrative words (e.g., “etc.”) provided herein are intended merely to better illustrate embodiments and, unless otherwise requested, do not limit the scope of this disclosure. Nothing in this disclosure should be interpreted as indicating that any unrequested element is essential to the implementation of this disclosure.
[0131] Disjunctive phrases such as "at least one of X, Y, or Z" are intended to be understood within the context of their general use to indicate that an item, term, etc., can be X, Y, Z, or any combination thereof (e.g., X, Y, and / or Z), unless otherwise specified. Therefore, such disjunctive phrases are intended to be understood within the context of their general use. In general, no embodiment is intended, and should not, to require that any embodiment be such that at least one of X, at least one of Y, or at least one of Z is present.
[0132] Preferred embodiments of the Disclosure, including the best known form for carrying out the Disclosure, are described herein. Modifications of these preferred embodiments will be apparent to those skilled in the art by reading the foregoing description. Those skilled in the art should be able to adopt such modifications as appropriate, and the Disclosure may be carried out in ways other than those specifically described herein. Accordingly, the Disclosure includes all modifications and equivalents of the subject matter described in the claims, as permitted by applicable law. Furthermore, any combination of the above elements in all possible variations thereof is encompassed by the Disclosure unless otherwise indicated herein.
[0133] All references herein, including publications, patent applications, and patents, are referred to in this specification to the same extent as they are referred to individually and specifically, and as if they were included in their entirety.
[0134] While the above specification describes aspects of the disclosure with reference to specific embodiments, those skilled in the art will recognize that the disclosure is not limited thereto. The various features and aspects of the above disclosure may be used individually or together. Furthermore, embodiments may be used in any number of environments and applications beyond those described herein, without departing from the broader spirit and scope of this specification. Accordingly, the specification and drawings should be considered illustrative rather than restrictive.
Claims
1. A method performed by a computer, The computing system includes a step of managing a compute instance, at least in part on the basis of managing a first state object corresponding to the compute instance in a cloud computing environment, wherein the first state object includes a set of attributes indicating the current state of the compute instance, and the method performed by the computer further includes: The computing system receives change request data from the requesting computing component indicating a requested change to a specific attribute of the computing instance, The computing system derives a second state object of the computing instance, at least partially based on the requested change and the first state object representing the current state of the computing instance. The computing system calculates a first hash value based at least partially on a first subset of attributes from the set of attributes of the second state object. The computing system provides the first hash value to the requesting computing component, The computing system performs the requested changes to the computing instance, The computing system updates the first state object, at least in part, based on the execution of the requested changes to the computing instance. The computing system calculates a second hash value based at least partially on a second subset of the set of attributes of the first state object. A method performed by a computer, comprising the steps of: the computing system providing the requesting computing component with the second hash value, wherein the first and second hash values are configured to be used by the requesting computing component to verify that the requested change has been performed in the compute instance.
2. The method performed by a computer according to claim 1, wherein each attribute of the set of attributes of the first state object and each attribute of the set of attributes of the second state object each includes an attribute identifier and a value corresponding to the attribute identifier.
3. A method performed by a computer according to claim 1 or 2, further comprising the step of identifying a first subset of the attributes from the set of attributes of the second state object and a second subset of the attributes from the set of attributes of the first state object, at least in part on a mapping between the requesting computing component and one or more attribute identifiers.
4. The method performed by a computer according to any one of the preceding claims, wherein the second state object and the first state object each include a common set of attributes.
5. The computing process of the computing system further comprises the step of storing data identifying the requested change in a storage location, wherein the computing process of the computing system then retrieves the data from the storage location and performs an operation to perform the requested change on the computing instance by the computer according to any one of the preceding claims. The method of execution.
6. The computing system receives a second change request from a different requesting computing component, which indicates a second requested change to one or more attributes of the computing instance. The computing system derives a third state object of the computation instance, at least partially based on the first state object and the second requested change, The computing system further comprises the step of calculating a third hash value based at least partially on a third subset of attributes from the set of attributes of the third state object, wherein the third subset of attributes has different attributes from the first subset of attributes. The method performed by a computer according to any one of the preceding claims, further comprising the step of the computing system providing the third hash value to the different requesting computing component, the third hash value being used by the different requesting computing component to verify that the second requested change has been performed in the compute instance.
7. The computing system performs the second requested change to the computing instance, The computing system updates the first state object, at least in part, based on performing the second requested change on the computing instance. The computing system further comprises the step of calculating a fourth hash value based at least partially on a fourth subset of attributes from the set of attributes of the first state object, wherein the fourth subset of attributes has different attributes from the second subset of attributes. The method performed by a computer according to claim 6, further comprising the step of the computing system providing the second requesting computing component the fourth hash value, the fourth hash value being used by the different requesting computing component to verify that the second requested change has been performed in the compute instance.
8. A computing device, A processing unit is provided which is communicatively coupled to a computer-readable medium that stores non-temporary computer executable program instructions, and when the instructions are executed by the processing unit, the computing device is configured to: The instructions are made to manage the compute instance, at least in part on the basis of managing a first state object corresponding to the compute instance in the cloud computing environment, the first state object including a set of attributes indicating the current state of the compute instance, and the instructions, when executed by the processing unit, cause the computing device to The requesting computing component receives change request data indicating the requested change to a specific attribute of the compute instance, Deriving a second state object of the computation instance based at least partially on the requested changes and the first state object representing the current state of the computation instance, A first hash value is calculated based at least partially on a first subset of attributes from the set of attributes of the second state object, The first hash value is provided to the requesting computing component, Performing the requested changes to the computation instance, Updating the first state object based at least in part on performing the requested changes to the computation instance, A second hash value is calculated based at least partially on a second subset of the set of attributes of the first state object, A computing device that provides the requesting computing component with the second hash value, and is configured so that the first and second hash values are used by the requesting computing component to verify that the requested change has been performed in the compute instance.
9. The computing device according to claim 8, wherein each attribute of the set of attributes of the first state object and each attribute of the set of attributes of the second state object each includes an attribute identifier and a value corresponding to the attribute identifier.
10. The computing device according to claim 8 or 9, wherein executing the computer executable program instructions further causes the computing device to identify a first subset of the attributes from the set of attributes of the second state object and a second subset of the attributes from the set of attributes of the first state object, at least in part on a mapping between the requesting computing component and one or more attribute identifiers.
11. The computing device according to any one of claims 8 to 10, wherein the second state object and the first state object each include a common set of attributes.
12. The computing device according to any one of claims 8 to 11, wherein executing the computer executable program instruction further causes the computing device to store data identifying the requested change in a storage location, and the computing process of the computing device then retrieves the data from the storage location and performs an operation to perform the requested change on the computing instance.
13. Executing the aforementioned computer executable program instructions further involves the computing device, Receiving a second change request from a different requesting computing component, which indicates a second requested change to one or more attributes of the compute instance, Deriving a third state object of the computation instance based at least partially on the first state object and the second requested modification, The third hash value is calculated based at least partially on a third subset of attributes from the set of attributes of the third state object, wherein the third subset of attributes has different attributes from the first subset of attributes, and the execution of the computer executable program instruction is further performed on the computing device. The computing device according to any one of claims 8 to 12, wherein it provides the third hash value to the different requesting computing component, and the third hash value is configured to be used by the different requesting computing component to verify that the second requested change has been performed in the compute instance.
14. Executing the aforementioned computer executable program instructions further involves the computing device, Performing the second requested change to the computation instance, Updating the first state object, at least in part, based on performing the second requested change on the computation instance; Further, the computing device is made to calculate a fourth hash value based at least partially on a fourth subset of attributes from the set of attributes of the first state object, wherein the fourth subset of attributes has different attributes from the second subset of attributes, and the computing device is made to execute the computer executable program instruction. The computing device according to claim 13, wherein the fourth hash value is provided to the second requesting computing component, and the fourth hash value is configured to be used by the different requesting computing component to verify that the second requested change has been performed in the compute instance.
15. A non-temporary computer-readable storage medium for storing computer executable program instructions, wherein, when the instructions are executed by a processing unit of a computing device, the computing device causes the computing device to perform an action, and the action is Managing compute instances in a cloud computing environment, at least in part, on the basis of managing a first state object corresponding to the compute instance, the first state object includes a set of attributes indicating the current state of the compute instance, and the operation further includes: The requesting computing component receives change request data indicating the requested change to a specific attribute of the compute instance, Deriving a second state object of the computation instance based at least partially on the requested changes and the first state object representing the current state of the computation instance, A first hash value is calculated based at least partially on a first subset of attributes from the set of attributes of the second state object, The first hash value is provided to the requesting computing component, Performing the requested changes to the computation instance, Updating the first state object based at least in part on performing the requested changes to the computation instance, A second hash value is calculated based at least partially on a second subset of the set of attributes of the first state object, A non-temporary computer-readable storage medium comprising providing the second hash value to the requesting computing component, wherein the first and second hash values are configured to be used by the requesting computing component to verify that the requested change has been performed in the computing instance.
16. The non-temporary computer-readable storage medium according to claim 15, wherein the operation further includes identifying a first subset of the attributes from the set of attributes of the second state object and a second subset of the attributes from the set of attributes of the first state object, at least in part on a mapping between the requesting computing component and one or more attribute identifiers.
17. The non-temporary computer-readable storage medium according to claim 15 or 16, wherein the first state object and the second state object each include a common set of attributes.
18. The non-temporary computer-readable storage medium according to any one of claims 15 to 17, further comprising storing data identifying the requested change in a storage location, the computing process of the computing system then retrieving the data from the storage location and performing an operation to implement the requested change to the computing instance.
19. The aforementioned operation further, Receiving a second change request from a different requesting computing component, which indicates a second requested change to one or more attributes of the compute instance, Deriving a third state object of the computation instance based at least partially on the first state object and the second requested modification, The operation further includes calculating a third hash value based at least partially on a third subset of attributes from the set of attributes of the third state object, wherein the third subset of attributes has different attributes from the first subset of attributes, and the operation further includes A non-temporary computer-readable storage medium according to any one of claims 15 to 18, comprising providing the third hash value to the different requesting computing component, wherein the third hash value is used by the different requesting computing component to verify that the second requested change has been performed in the computing instance.
20. The aforementioned operation further, Performing the second requested change to the computation instance, Updating the first state object, at least in part, based on performing the second requested change on the computation instance; The operation further includes calculating a fourth hash value based at least partially on a fourth subset of attributes from the set of attributes of the first state object, wherein the fourth subset of attributes has different attributes from the second subset of attributes, and the operation further includes The non-temporary computer-readable storage medium according to claim 19, comprising providing the fourth hash value to the second requesting computing component, wherein the fourth hash value is used by the different requesting computing component to verify that the second requested change has been performed in the computing instance.
21. An apparatus comprising means for performing the steps of the method according to any one of claims 1 to 7.
22. A computer program product comprising computer instructions that, when executed by a processor, perform the steps of the method according to any one of claims 1 to 7.