Techniques for modifying aspects of compute instances
By introducing state objects and hash value mechanisms into cloud computing infrastructure, users can request modifications to compute instances through application programming interfaces (APIs). The data plane calculates and stores the desired state, and the control plane verifies the completion of changes. This solves the problem of cloud computing providers struggling to manage user modification requests and enables accurate and timely verification of changes.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- ORACLE INT CORP
- Filing Date
- 2021-03-09
- Publication Date
- 2026-07-14
AI Technical Summary
Cloud computing providers struggle to manage user requests to modify computing instances and find it difficult to determine when changes have converged.
By introducing state objects and hash value mechanisms into cloud computing infrastructure, user devices can request modifications to compute instances through application programming interfaces (APIs), the data plane calculates hash values and stores the desired state, and the control plane compares hash values to verify the completion of the changes.
It simplifies the management of computing instances for users, improves the efficiency of change request verification, and ensures the accuracy and timeliness of changes.
Smart Images

Figure CN116547650B_ABST
Abstract
Description
[0001] Cross-reference to related applications
[0002] This non-provisional application claims priority to U.S. Patent Application No. 17 / 125,802, filed December 17, 2020, entitled “Techniques for Modifying a Compute Instance,” the disclosure of which is incorporated herein by reference in its entirety for all purposes. Background Technology
[0003] Cloud computing providers may manage numerous compute instances on behalf of various users. Typically, users may not modify aspects of these compute instances. Furthermore, it can be difficult to determine when changes to compute instances have converged. The embodiments described herein address these and other problems individually and collectively. Summary of the Invention
[0004] Techniques are provided for modifying aspects of computing instances managed by cloud infrastructure (CII) providers (e.g., methods, systems, storage, and non-transitory computer-readable media containing code or instructions executable by one or more processors). Various embodiments are described herein, including methods, systems, storage, and non-transitory computer-readable storage media containing programs, code, or instructions executable by one or more processors.
[0005] One embodiment relates to a method. The method may include managing a computing instance by a computing system based at least in part on the management of a first state object corresponding to a computing instance in a cloud computing environment. In some embodiments, the first state object includes a set of attributes indicating the current state of the computing instance. The method may further include receiving change request data from a requesting computing component by the computing system, the change request data indicating a requested change to a specific attribute of the computing instance. The method may further include deriving a second state object of the computing instance by the computing system based at least in part on the requested changes and the first state object indicating the current state of the computing instance. The method may further include calculating a first hash value by the computing system based at least in part on a first subset of attributes of the attribute set of the second state object. The method may further include providing the first hash value to the requesting computing component by the computing system. The method may further include performing the requested changes to the computing instance by the computing system. The method may further include updating the first state object by the computing system based at least in part on performing the requested changes to the computing instance. The method may further include calculating a second hash value by the computing system based at least in part on a second subset of attributes of the first state object. The method may further include providing a second hash value from the computing system to the requesting computing component. 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 implemented at the computing instance.
[0006] Another embodiment relates to a computing device. The computing device may include a computer-readable medium storing non-transitory computer-executable program instructions. The computing device may also include a processing means communicatively coupled to the computer-readable medium for executing the non-transitory computer-executable program instructions. Executing the non-transitory computer-executable program instructions with the processing means causes the computing device to perform the methods described above.
[0007] Another embodiment relates to a non-transitory computer-readable storage medium storing computer-executable program instructions that, when executed by a processing device of a computing device, cause the computing device to perform the methods described above.
[0008] Another embodiment relates to an apparatus that includes components for performing the steps of the methods described above.
[0009] Another embodiment relates to a computer program product, including computer instructions that, when executed by a processor, implement the steps of the method described above.
[0010] The above, along with other features and embodiments, will become clearer upon reference to the following description, claims, and drawings. Attached Figure Description
[0011] Various embodiments according to this disclosure will be described with reference to the accompanying drawings, in which:
[0012] Figure 1 The illustration shows an example environment in which the disclosed techniques for modifying computing instances can be implemented according to at least one embodiment;
[0013] Figure 2 This is a flowchart illustrating an example method for deriving a hash value representing a requested change to a computation instance, according to at least one embodiment.
[0014] Figure 3 The illustration shows a current state object according to an example of at least one embodiment;
[0015] Figure 4 The illustration shows an example of a desired state object according to at least one embodiment;
[0016] Figure 5 This is a flowchart illustrating an example method for applying a requested change to a computing instance according to at least one embodiment.
[0017] Figure 6 This is a flowchart illustrating an example method for identifying that previously requested changes have been made to a computing instance, according to at least one embodiment.
[0018] Figure 7 A flowchart illustrating an example of a method for modifying the properties of a computing instance according to at least one embodiment is provided.
[0019] Figure 8 This is a block diagram illustrating a pattern for implementing cloud infrastructure as a service system according to at least one embodiment.
[0020] Figure 9 This is a block diagram illustrating another pattern for implementing cloud infrastructure as a service system according to at least one embodiment.
[0021] Figure 10 This is a block diagram illustrating another pattern for implementing cloud infrastructure as a service system according to at least one embodiment.
[0022] Figure 11 This is a block diagram illustrating another pattern for implementing cloud infrastructure as a service system according to at least one embodiment.
[0023] Figure 12 This is a block diagram illustrating an example computer system according to at least one embodiment. Detailed Implementation
[0024] In the following description, specific details are set forth for illustrative purposes in order to provide a thorough understanding of certain embodiments. However, it will be clear that various embodiments may be practiced without these specific details. The accompanying drawings and description are not intended to be limiting. The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any embodiment or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments or designs.
[0025] This disclosure relates to a system and technique for enabling user modifications to computing instances managed by one or more cloud computing provider computers (referred to herein as "(one or more) cloud computing computers") for brevity. A user may wish to change some aspect of the computing instance. As an example, a user may wish to request a name change for a component of the computing instance. Therefore, the user can submit a request to modify attributes of the computing instance (e.g., attributes corresponding to the names of components of the computing instance) via an application programming interface exposed by (one or more) cloud computing computers. (One or more) cloud computing computers can receive the request and retrieve the current state of the computing instance. The current state of the computing instance can be maintained in a state object (referred to as the "current state object"). (One or more) cloud computing computers can calculate the future state of the computing instance if the changes are implemented. As an example, the state object can be copied and its attributes can be modified based on the requested changes. The collection of these modified attributes can be stored as a separate state object (referred to as the "requested state object") for later use.
[0026] Each compute instance can be associated with any suitable number of attributes. These attributes may 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, the expiration time of one or more security tokens, an address indicating which compute instance to use, and so on. Although the examples in this document discuss user modifications to component names, it should be understood that these examples are equally applicable to other changes that a user may request. These user-requested changes may involve one or more modifications to any suitable combination of attributes associated with the compute instance.
[0027] A hash value can be computed from a subset of the attribute set of the requested state object. The specific set of attributes to be hashed can be predefined and varies depending on the requester (or the computation component used to initiate the change request). It's possible that different users may be interested in different aspects of the computation instance. Therefore, a hash value computed for one user can utilize a different set of attributes / data fields of the object compared to the set of attributes / data fields used to compute the hash for another user.
[0028] Hash values (e.g., hash values corresponding to the requested changes) can be provided to the component that made the change request (e.g., the computation component that made the request) and stored for subsequent verification. Periodically, the current state object of the computation instance can be retrieved, and a hash value corresponding to the current state of the computation instance can be computed from that object and provided to the requesting computation component. The hash value can be used by the requesting computation component to determine that the requested changes have been applied to the computation instance. As an example, the requesting computation component can compare the hash value corresponding to the requested changes with the hash value corresponding to the current state of the computation instance. If these hash values match, the requesting computation component can be configured to determine that the requested changes have been applied to the computation instance.
[0029] The disclosed techniques provide improvements over traditional systems. Traditional systems may limit aspects of a computing instance that a user can modify and / or may have difficulty determining when a specific change has been made to the computing instance. By utilizing the techniques described herein, the requesting computing component does not need to compare the properties of the requested state object with the properties of the state object that maintains the current state of the computing instance. Instead, the requesting computing component only needs to compare two hash values to determine whether the requested change has been implemented. The management plane of one or more cloud computing provider computers can be used to execute the requested change, update the current state of the computing instance, and compute the hash value. In this way, although the specific properties and / or exact implementation associated with the requesting computing component may change in the management plane, the requesting computing component (e.g., the control plane of one or more cloud computing provider computers) does not need to be modified. By maintaining the logic corresponding to modifying the computing instance and computing the hash value in the management plane, the implementation of the requesting computing component (e.g., the control plane of the computing system) is greatly simplified and decoupled from changes made to the management plane.
[0030] Go to Figure 1The illustration depicts an example environment 100 according to at least one embodiment, in which the disclosed techniques for modifying computing instances can be implemented. Environment 100 may include a cloud infrastructure system 102 configured to manage one or more infrastructure components (e.g., infrastructure component 104) on behalf of users. A cloud computing provider may host the cloud computing environment 102, which provides infrastructure component 104 (e.g., servers, storage devices, network nodes (e.g., hardware), deployment software, platform virtualization (e.g., hypervisor layer), etc.). The one or more infrastructure components may include any suitable number of computing instances configured to provide a particular infrastructure component. Computing instances may include one or more bare-metal computing instances and / or one or more virtual machines, the bare-metal computing instances providing dedicated physical server access for high performance and strong isolation. Virtual machines are independent computing environments running on top of physical bare-metal hardware. Infrastructure component 104 may be configured to provide computing resources to any suitable number of users. In some embodiments, the cloud computing provider may also provision various services (e.g., billing, monitoring, logging, security, load balancing, and clustering, etc.) to accompany these infrastructure components. Therefore, since these services may be policy-driven, users may be able to implement policies to drive load balancing in order to maintain application availability and performance.
[0031] In some cases, user equipment 106 can be used (e.g., via user interface 108) to access the resources and services of cloud infrastructure system 102. User equipment 106 can be any suitable type of computing device, such as, but not limited to, mobile phones, handheld scanners, touchscreen devices, smartphones, personal digital assistants (PDAs), laptops, desktop computers, thin client devices, tablet PCs, etc. In some examples, user equipment 106 can communicate with cloud infrastructure system 102 via one or more networks 110 or via other network connections. In some examples, one or more networks 110 can include any one or a combination of many different types of networks, such as wired networks, the Internet, wireless networks, cellular networks, and other private and / or public networks. User equipment 106 can be used to invoke the functions of cloud infrastructure system 102 to create virtual machines (VMs) (e.g., compute instances), install operating systems (OS) in VMs, deploy middleware (such as databases), create buckets for workloads and backups, and / or install enterprise software onto the VMs. User equipment 106 can also be used to request services from providers to perform various functions, including balancing network traffic, resolving application problems, monitoring performance, managing disaster recovery, etc.
[0032] Cloud infrastructure system 102 may include a control plane 112 and a data plane 114. In some embodiments, control plane 112 may expose one or more application programming interfaces (APIs) through which functions of cloud infrastructure system 102 can be invoked (e.g., by user equipment 106). Control plane 112 may be configured to receive requests (e.g., from user equipment 106) and, in response to these requests, provide data to data plane 114 for performing operations corresponding to those requests. In some embodiments, control plane 112 may be configured to provide status updates to user equipment 106 regarding the status of one or more requests initiated by user equipment 106. Some of the requests received by control plane 112 may request modifications to existing infrastructure component(s) 104.
[0033] Cloud infrastructure system 102 may include a data plane 114. In some embodiments, data plane 114 may be configured to perform any suitable operations for provisioning, deploying, and maintaining infrastructure component(s) 104, based on requests provided by control plane 112. In some embodiments, data plane 114 may utilize one or more computing processes (e.g., one or more workers 116) to perform various operations related to provisioning infrastructure component(s) 104, deploying software artifacts to infrastructure component(s) 104, modifying aspects of infrastructure component(s) 104, etc.
[0034] Data plane 114 can be configured to maintain state objects corresponding to the current state of each of the infrastructure components(s) 104 in the infrastructure component(s). These state objects can be periodically updated by monitoring service 120 according to a predefined periodicity, a schedule, or at any suitable time when changes occur. In some embodiments, data plane 114 can maintain additional state objects, each corresponding to a requested change submitted for a given infrastructure component. These additional state objects may be referred to herein as “expected state objects.” Examples of current state objects and expected state objects are provided in conjunction with… Figure 3 and Figure 4 Provided. In some embodiments, these objects may be stored in a state information data repository 118.
[0035] Data plane 114 can compute hashes of one or more attributes of a state object at any suitable time. In some embodiments, the specific attributes used to compute the hash may depend on the requester who requested changes in the infrastructure component and / or the computing component that made the request. In some embodiments, data plane 114 may be configured with a mapping that identifies a corresponding set of attributes from the state object that will be used to compute hash values for a specific requester / computing component. Data plane 114 can compute hash values corresponding to the desired state and the current state of an infrastructure component. As an example, data plane 114 may maintain attributes corresponding to the current state of the infrastructure in the current state object stored in the state information data repository 118. Data plane 114 may retrieve the current state object and modify its attributes according to requested changes received from control plane 112 (and in some embodiments, initiated from user equipment 106). Data plane 114 may compute a hash value corresponding to the desired state and provide this hash value to control plane 112, which may then store the hash value for later use. Control plane 112 can be configured to request current state hash values from data plane 114 according to predefined periodicity and / or schedule.
[0036] Data plane 114 can be configured to instantiate one or more workers 116 and / or delegate tasks to one or more workers 116 to perform operations for applying requested changes to a given infrastructure component. In some embodiments, data plane 114 may store data corresponding to various tasks associated with managing and / or modifying one or more infrastructure components 104 in a state information data repository 118 (or another suitable location). One or more workers 116 may be configured to retrieve this data sequentially (e.g., in the order in which the data was stored) and perform any suitable operations to perform the task (e.g., modifying the properties of the infrastructure component). Monitoring service 120 may monitor the state of the infrastructure component and, upon determining that a change has occurred, may update the current state object corresponding to the current state of that infrastructure component. This updated object may continue to be stored in the state information data repository 118. Monitoring service 120 may invoke functions of data plane 114, and / or monitoring service 120 may be configured to compute a hash value corresponding to the current state object modified by the requested change. The hash value calculated by data plane 114 and / or components of data plane 114 (e.g., monitoring service 120) can be provided to control plane 112 at any appropriate time (e.g., immediately, or after receiving the next request for a current state hash value from control plane 112). Control plane 112 can be configured to perform coordination operations, such as comparing an earlier provided desired state hash value with each current state hash value obtained from data plane 114. When control plane 112 determines that the desired state hash value and the current state hash value match, it can be configured to provide status data indicating that the requested change has been completed to user equipment 106 via user interface 108. In some embodiments, once the requested change is completed, data plane 114 (or components of data plane 114, such as one or more workers 116) can perform operations to delete any data related to the requested change, while the current state object persists in the state information data repository 118 and continues to be updated by monitoring service 120 over time.
[0037] Figure 2 This is a flowchart illustrating an example method 200 for deriving a hash value representing a change requested for a computing instance, according to at least one embodiment. Method 200 can be provided by user device 202 (e.g., Figure 1 User equipment 106), control plane 204 (e.g., Figure 1 Control plane 112), data plane 206 (e.g., Figure 1 Data plane 114) and status information data repository 208 (e.g., Figure 1 The state information data repository 118) is used for execution. Method 200 may include comparisons... Figure 2 The diagram illustrates more or fewer operations. These operations can be performed in any suitable order. In some embodiments, one or more operations performed by multiple components can be performed by a single component and / or operations performed by a single component can be split and provided by multiple components.
[0038] Method 200 may begin at 210, wherein user equipment 202 may initiate (e.g., via such as Figure 1 User interface 108 or similar user interface can be used to initiate a request to modify one aspect of an existing infrastructure component. As an example, user equipment 202 can be used to initiate a request (e.g., a change request) to modify the component name (or another attribute, such as image version, number of CPUs, amount of memory, expiration time corresponding to one or more security tokens, address, etc.) of a specific infrastructure component. A change request may include any suitable data, such as identifiers of user equipment 202 and / or the entity associated with user equipment 202 (e.g., a user), any suitable data indicating the requested change(s), and indicating the infrastructure component(s) to which the change request is applied (e.g., [missing information]). Figure 1 Any suitable data of one or more of the infrastructure components 104.
[0039] At 212, control plane 204 can utilize any suitable application programming interface exposed by data plane 206 to pass change requests to data plane 206. At 214, in response to receiving a change request, data plane 206 can be configured to obtain a state object corresponding to one or more infrastructure components identified in the change request from state information data repository 208. For illustrative purposes, the example change request may indicate a change to a single infrastructure component (e.g., name change, image version change, CPU quantity change, memory quantity change, expiration time change, address change, etc.). In this example, the state object used by data plane 206 to maintain the current state attributes associated with that infrastructure component can be obtained from state information data repository 208. In some embodiments, the identifier of the infrastructure component can be obtained from the change request and used to retrieve the corresponding state object from state information data repository 208.
[0040] Figure 3 The illustration shows an example current state object (e.g., current state object 300, maintaining a state corresponding to the combination) according to at least one embodiment. Figure 2A state object representing the set of attributes of the current state of the modified infrastructure component. The current state object may include any suitable number of attributes. Each attribute may include an attribute identifier (e.g., "attribute 1", "attribute 2", etc.) and a corresponding value (e.g., value 1, value 2, etc.). The current state object 300 may be used to store a superset of attributes associated with the current state of a particular infrastructure component. In some embodiments, at least one attribute in this set may include an identifier corresponding to the infrastructure component associated with the object. This identifier may be used to search for and retrieve the object from a set of objects, each corresponding to a different infrastructure component.
[0041] In some embodiments, a particular requester may not be interested in every attribute of the current state. Instead, a change requester may be interested in a subset of attributes (e.g., attribute subset 302), while different change requesters may be interested in different subsets 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 among themselves. Figure 2 The data plane 206 may be configured with a mapping that indicates a specific subset of attributes related to a particular requester. In some embodiments, this mapping may be preloaded before runtime as part of the configuration work associated with the data plane.
[0042] return Figure 2 Data plane 206 can identify a subset of attributes associated with a change requester from the mapping. As a non-limiting example, the mapping can identify subset 302 as associated with the change requester. Data plane 206 can generate a new state object (e.g., a desired state object) and copy the attributes of the current state object 300 to this new state object. The desired state object can then be modified according to the change request. In other words, data plane 206 can modify one or more attributes of the desired state object to values that should exist in the current state object after changes to the infrastructure component are completed. These attributes and their corresponding values, including any changes made with respect to the change request, can be referred to as "desired state data" and can be used to indicate the desired and / or future state of the infrastructure component.
[0043] Figure 4 An example desired state object (e.g., desired state object 400) according to at least one embodiment is illustrated. Desired state object 400 may be substantially similar to... Figure 3The expected state object 400 can include the same properties as the current state object 300, although the corresponding values of these properties may differ between objects. The expected state object 400 may also include a superset of properties indicating the state of infrastructure components. While the current state object maintains data indicating the current state of infrastructure components (e.g., current state data), the expected state object 400 can be used to maintain data indicating expected and / or future states corresponding to change requests. The expected state object 400 may also include a subset of properties 402 and a subset of properties 404, respectively.
[0044] return Figure 2 Method 200 can proceed to 218, where data plane 206 can identify from its stored mapping a subset of attributes corresponding to the requesting computing component (e.g., an entity associated with user device 106). Figure 2 The attribute subset 402. As an example, data plane 206 may obtain the identifier of user device 202 and / or entities associated with user device 202 (e.g., user) from the change request data received at 212, and use this identifier to identify attribute subset 402. Using the attributes of attribute subset 402, data plane 206 may compute a hash value using a predefined hash algorithm and attribute subset 402 as input. The specific operation performed to compute the hash value using any suitable number of attributes may be identified according to a predefined scheme known to and enforced by data plane 206. In some embodiments, at 220, change request data may be stored at state information data repository 208. For example, in some embodiments, change request data and the computed hash value may be stored in a desired state object, which is then stored in state information data repository 208. In some embodiments, state information data repository 208 may act as a queue for pending changes to be made. Thus, change request data may be stored in any suitable manner that indicates the operation for changes that have not yet been made.
[0045] At 222, data plane 206 can provide control plane 204 with a hash value calculated from the desired state data, which control plane can then store the hash value in local memory at 224. This hash value may be referred to herein as the "desired state hash value".
[0046] Figure 5 The illustration is based on at least one embodiment for applying the requested changes to a computing instance (e.g., Figure 1 A flowchart of an example method 500 for a specific infrastructure component (one or more) of infrastructure component 104. Method 500 may use a state information data repository 502 (e.g., Figure 1 Status information data repository 118), worker 504 (e.g., Figure 1 One of (one or more) workers 116), computing instance 506 (e.g., Figure 2 The change request is related to the specific infrastructure component. Figure 1 One of (one or more) infrastructure components 104), and monitoring service 508 (e.g., Figure 1 The monitoring service 120) is used to perform this. Method 500 may include more than Figure 5 The operations shown may include more or fewer operations. The operations of method 500 can be performed in any suitable 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 split and provided by multiple components.
[0047] Method 500 may begin at 510, where worker 504 may be instantiated and request change request data from state information data repository 502 corresponding to the next change to be made to the infrastructure component. In some embodiments, state information data repository 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 obtain the oldest change request from state information data repository 502.
[0048] The worker can be configured to access logic that identifies specific operations to be performed to apply the requested changes indicated by the change request data. At 512, worker 504 can perform these operations to apply the changes to compute instance 506 (the specific infrastructure component involved in the change request).
[0049] At 514, monitoring service 508 can be configured to request status data corresponding to compute instance 506. In some embodiments, monitoring service 508 can be configured to request status data from compute instance 506 according to predefined periodicity, schedule, etc.
[0050] At 516, monitoring service 508 may receive current state data indicating the current state of compute instance 506. Alternatively, compute instance 506 may report its current state data as a result of an operation performed by the worker at 512. Alternatively, worker 504 may report this change to monitoring service 508 (e.g., after the requested change has been completed).
[0051] At point 518, monitoring service 508 may request access to the current state object corresponding to compute instance 506. As an example, monitoring service 508 may submit a request to state information data repository 502 for the current state object corresponding to the identifier associated with compute instance 506, and in response to this request, state information data repository 502 may return the current state object.
[0052] At 520, monitoring service 508 may perform any suitable operation to update the current state object using the current state data received at 516. In some embodiments, these operations may include overwriting one or more previous attribute values stored in the current state object with different values obtained from the current state data received at 516.
[0053] At point 522, monitoring service 508 can perform an operation to store the newly modified current state object in the state information data repository 502. By storing the newly modified current state object in the state information data repository 502, monitoring service 508 can make the current state data available to... Figure 1 Data plane 114 and / or any suitable components of data plane 114 are accessible.
[0054] Figure 6 This is a flowchart illustrating an example method 500 for identifying previously requested changes made to a computing instance according to at least one embodiment. Method 500 can be used with user device 602 (e.g., Figure 2 User equipment 202), control plane 604 (e.g., Figure 2 Control plane 204), data plane 606 (e.g., Figure 2 Data plane 206) and status information data repository 608 (e.g., Figure 5 The status information data repository 502). Method 600 may include comparisons... Figure 6 The operations shown may be more or fewer than the operations shown. The operations of method 600 can be performed in any suitable 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 split and provided by multiple components. In some embodiments, method 600 may be performed by a single component or a single component. Figure 2 Method 200 is executed after it has been executed.
[0055] Method 600 may begin at 610, where control plane 604 may submit a request for current state data to data plane 606. In some embodiments, control plane 604 may submit this request based on a predefined periodicity, a predefined schedule, or at any suitable time. As a non-limiting example, once method 200 has been executed, control plane 604 may be configured to request data at a periodic rate (e.g., every five minutes, two minutes, 30 seconds, daily, nightly, etc.). Figure 2 The change request relates to the current state data of the corresponding infrastructure component. In some embodiments, this request may indicate... Figure 2 The requester of the change request (e.g., Figure 1 The user equipment 106 and / or the entity associated with the equipment) and the identifier of the infrastructure component to which the change request relates.
[0056] At 612, data plane 606 can access the current state object corresponding to the identifier of the infrastructure component associated with the change request. At 614, state information data repository 608 can return the current state object of that infrastructure component.
[0057] At 616, using the requester's identifier provided at 610 by control plane 604, data plane 606 can consult its locally stored mapping to identify the subset of attributes associated with that requester (e.g., Figure 3 Using only the attributes of that subset 302 and a predefined hash algorithm, data plane 606 can be configured to compute another hash value representing the current state of an infrastructure component with respect to that subset of attributes. The specific operation performed to compute this hash value can be identified according to a predefined scheme known to and enforced by data plane 206.
[0058] At 618, in response to the request submitted at 610, the hash value calculated at 616 (referred to as the current state hash value) can be provided to control plane 604.
[0059] At 620, control plane 604 can be configured to compare at 222 (as execution). Figure 2The method 600 (as part of method 200) receives the expected state hash value. In some embodiments, if the current state hash value provided at 618 does not match the expected state hash value received at 222 during method 200, method 600 may return to 610, in which case, at a subsequent time, a new request for the current state is submitted, causing a new current state hash value to be calculated and compared with the expected state hash value. This method may be repeated any appropriate number of times until the comparison indicates that the current state hash value and the expected state hash value match. In this context, a match indicates that the requested change to the corresponding infrastructure component has been completed.
[0060] At 622, control plane 604 can provide user equipment 602 with an indication that the requested change has been completed. In some embodiments, this indication may be presented in... Figure 1 The user interface is located at 108. Although not depicted, it should be understood that user interface 108 may provide one or more options for canceling a previously submitted change request. This option may be exercised by the user at any appropriate time (e.g., after a relatively long period of time has elapsed since the change request was submitted, such as 30 minutes for a change that should have taken approximately two minutes to complete).
[0061] Figure 7 A flowchart illustrating an example of a method 700 for modifying properties of a computing instance according to at least one embodiment is provided. Method 700 can be... Figure 1 The method 700 may include one or more components of the cloud infrastructure system 102. Figure 7 The operations described herein may be more or fewer than the operations themselves. These operations can be performed in any suitable order.
[0062] Method 700 can begin at 701, where a cloud computing environment (e.g., Figure 1 Computational instances in environment 100 (e.g., Figure 1 The infrastructure components (one or more) in infrastructure component 104 can be managed by a computing system (e.g., by cloud infrastructure system 102). In some embodiments, the computing instance can be based at least in part on a first state object corresponding to the computing instance (e.g., Figure 3 The current state object (300) is managed by the management of the computing instance. In some embodiments, the first state object includes a set of attributes indicating the current state of the computing instance (e.g., Figure 3 Attributes 1-N).
[0063] At 702, change request data indicating a request to change a specific attribute of a computing instance can be generated by the computing system (e.g., by control plane 204, by data plane 206, etc.) from the requesting computing component (e.g., Figure 2 User equipment 202 Figure 1 (e.g., user equipment 106, control plane 204, etc.) receive.
[0064] At 703, the second state object of the instance is computed (e.g., Figure 4 The desired state object 400 can be derived, at least in part, based on the requested changes and a first state object indicating the current state of the computation instance (e.g., by...). Figure 2 Data plane 206 derivation). An example of this derivation is in Figure 2 There are 216 discussions.
[0065] At 704, a first hash value (e.g., the expected state hash value) is computed by a computation system (e.g., data plane 206). In some embodiments, the first hash value is at least partially based on a first subset of attributes in the attribute set of the second state object (e.g., Figure 4 The calculation is performed using a subset of attributes (402). An example of this calculation is shown above. Figure 2 There are 218 discussions.
[0066] At 705, the first hash value (e.g., the 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, user equipment 202 via control plane 204).
[0067] At 706, the computing system executes the requested changes to the computing instance. Executing the requested changes may include initiating a separate computing process (e.g., Figure 5 Worker 504, Figure 1 (Examples of one or more workers 116) to perform one or more operations to apply change requests to compute instances.
[0068] At 707, the first state object (e.g., the current state object associated with the computation instance) can be determined by the computation system (e.g., Figure 5 The monitoring service (508) updates at least in part based on the execution of requested changes to the compute instance. An example of this update is shown above. Figure 5 There are 520 discussions.
[0069] At position 708, calculate the second hash value (e.g., via...). Figure 6 Data plane 606, Figure 1 (Example computation of data plane 114). In some embodiments, the second hash value (e.g., the current state hash value) is at least partially based on a second subset of the attribute set of the first state object (e.g., corresponding to...). Figure 4 Attribute subset 402 Figure 3 The attribute subset 302 is used to calculate.
[0070] At 709, a second hash value (e.g., a current state hash value) is provided by the computing system to the requesting computing component (e.g., control plane 604, via user equipment 602). 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 implemented at the computing instance. As an example, control plane 604 may be configured to use the first hash value (e.g., in...) Figure 2 The expected state hash value received at position 222) and the second hash value (e.g., at position 222) Figure 6 The current state hash value received at position 618 is compared. When the two hash values match, the requesting computation component can mark the requested change as complete. If the hash values do not match, the requesting computation component (e.g., control plane 604) can subsequently request new current state data (e.g., a new current state hash value representing a later state attribute) and perform the comparison again. This process can be repeated any appropriate number of times until a match is identified and / or the change request is cancelled (e.g., via...). Figure 1 User interface 108 has been cancelled.
[0071] Process 700 can be executed any suitable number of times. As an example, a second change request can be received from a different requesting computation component. The second change request may request a second requested change to one or more properties of the computation instance. A third state object of the computation instance may be derived at least in part based on the first state object and the second requested change. A third hash value may be computed at least in part based on a third subset of the attribute set of the third state object. In some embodiments, the third attribute subset has attributes different from the first attribute subset. The third hash value may be provided to the different requesting computation component. In some embodiments, the third hash value is configured to be used by the different requesting computation component to verify that the second requested change has been implemented at the computation instance.
[0072] As noted above, Infrastructure as a Service (IaaS) is a specific type of cloud computing. IaaS can be configured to provide virtualized computing resources over a public network (e.g., the Internet). In the IaaS model, cloud providers can host infrastructure components (e.g., servers, storage devices, network nodes (e.g., hardware), deployment software, platform virtualization (e.g., hypervisor layer), etc.). In some cases, IaaS providers can also offer various services accompanying these infrastructure components (e.g., billing, monitoring, logging, security, load balancing, and clustering, etc.). Therefore, because these services may be policy-driven, IaaS users can implement policies to drive load balancing to maintain application availability and performance.
[0073] In some cases, IaaS customers can access resources and services over a wide area network (WAN) such as the Internet and can use the cloud provider's services to install the remaining elements of the application stack. For example, a user can log in to the IaaS platform to create virtual machines (VMs), install an operating system (OS) on each VM, deploy middleware such as databases, create buckets for workloads and backups, and even install enterprise software into that VM. 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.
[0074] In most cases, cloud computing models will require the involvement of cloud providers. Cloud providers can, but are not necessarily, third-party providers specializing in (e.g., provisioning, renting, selling) IaaS services. Entities may also choose to deploy private clouds, thus becoming their own infrastructure service providers.
[0075] In some examples, IaaS deployment is the process of placing a new application or a new version of an application onto a prepared application server, etc. It may also include the processing of server preparation (e.g., installation libraries, daemons, etc.). This is typically managed by the cloud provider, below the hypervisor layer (e.g., servers, storage devices, network hardware, and virtualization). Therefore, the customer can be responsible for processing (OS), middleware, and / or application deployment (e.g., on self-service virtual machines, etc., which can be started on demand).
[0076] In some examples, IaaS provisioning can refer to acquiring computers or virtual hosts for use, or even installing necessary libraries or services on them. In most cases, deployment does not include provisioning, and provisioning may need to be performed first.
[0077] In some cases, IaaS provisioning presents two distinct challenges. First, there are initial challenges in provisioning the initial infrastructure set before anything is operational. Second, once everything is provisioned, there are challenges in evolving the existing infrastructure (e.g., adding new services, changing services, removing services, etc.). In some cases, both challenges can be addressed by enabling configuration that declaratively defines the infrastructure. In other words, the infrastructure (e.g., which components are needed and how they interact) can be defined by one or more configuration files. Therefore, 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, workflows for creating and / or managing the different components described in the configuration files can be generated.
[0078] In some examples, the infrastructure can have many interconnected elements. For example, there may be one or more Virtual Private Clouds (VPCs) (e.g., potential on-demand pools of configurable and / or shared computing resources), also known as the core network. In some examples, one or more security group rules may also be provisioned to define how the network's security is configured, as well as one or more virtual machines (VMs). Other infrastructure elements, such as load balancers, databases, etc., may also be provisioned. The infrastructure can evolve incrementally as more and / or more infrastructure elements are expected and added.
[0079] In some cases, continuous deployment techniques can be used to enable the deployment of infrastructure code across various virtual computing environments. Furthermore, the described techniques enable infrastructure management within these environments. In some examples, service teams may write code that they expect to deploy to one or more, but often many, different production environments (e.g., across various geographical locations, sometimes spanning the entire world). However, in some examples, the infrastructure on which the code will be deployed must first be set up. In some cases, provisioning can be done manually, resources can be provisioned using provisioning tools, and / or once the infrastructure is provisioned, the code can be deployed using deployment tools.
[0080] Figure 8 This is a block diagram 800 illustrating an example pattern of an IaaS architecture according to at least one embodiment. Service provider 802 may be communicatively coupled to a secure host lease 804, which may include a virtual cloud network (VCN) 806 and a secure host subnet 808. In some examples, service provider 802 may use one or more client computing devices, which may be portable handheld devices (e.g., Cellular phone Computing tablets, personal digital assistants (PDAs), or wearable devices (e.g., Google) Head-mounted displays), running software (such as Microsoft Windows) ) and / or various mobile operating systems (such as iOS, Windows Phone, Android, BlackBerry 8, Palm OS, etc.), and support the Internet, email, and short message service (SMS). Or other communication protocols. Alternatively, the client computing device can be a general-purpose personal computer, including, for example, those running various versions of Microsoft... Apple Personal computers and / or laptops running Linux operating systems. Client computing devices can be running various commercially available operating systems. Workstation computers operating systems, including but not limited to any of the various GNU / Linux operating systems (such as, for example, Google Chrome OS), or UNIX-like operating systems. Alternatively or additionally, the client computing device can be any other electronic device, such as a thin client computer, an internet-enabled gaming system (e.g., with or without...). A Microsoft Xbox game console with gesture input devices, and / or a personal messaging device capable of communicating over a network that can access VCN 806 and / or the Internet.
[0081] VCN 806 may include a local peering gateway (LPG) 810, which may be communicatively coupled to a secure shell (SSH) VCN 812 via an LPG 810 included in an SSH VCN 812. SSH VCN 812 may include an SSH subnet 814, and SSH VCN 812 may be communicatively coupled to a control plane VCN 816 via an LPG 810 included in a control plane VCN 816. Furthermore, SSH VCN 812 may be communicatively coupled to a data plane VCN 818 via an LPG 810. Control plane VCN 816 and data plane VCN 818 may be contained within a service lease 819 that may be owned and / or operated by an IaaS provider.
[0082] The control plane VCN 816 may include a control plane demilitarized zone (DMZ) layer 820 that acts as a peripheral network (e.g., a portion of a corporate network between an intranet and an external network). DMZ-based servers can assume limited liability and help control security vulnerabilities. Furthermore, the DMZ layer 820 may include one or more load balancer (LB) subnets 822, a control plane application layer 824 that may include one or more application subnets 826, and a control plane data layer 828 that may include one or more database (DB) subnets 830 (e.g., one or more front-end DB subnets and / or one or more back-end DB subnets). One or more LB subnets 822 contained in the control plane DMZ layer 820 can be communicatively coupled to one or more application subnets 826 contained in the control plane application layer 824 and an Internet gateway 834 that can be contained in the control plane VCN 816. The application subnets 826 can be communicatively coupled to one or more DB subnets 830 contained in the control plane data layer 828, as well as a service gateway 836 and a Network Address Translation (NAT) gateway 838. The control plane VCN 816 may include the service gateway 836 and the NAT gateway 838.
[0083] The control plane VCN 816 may include a data plane mirror application layer 840, which may include one or more application subnets 826. The one or more application subnets 826 included in the data plane mirror application layer 840 may include a virtual network interface controller (VNIC) 842 capable of executing a compute instance 844. The compute instance 844 may communicatively couple the one or more application subnets 826 of the data plane mirror application layer 840 to the one or more application subnets 826 that may be included in the data plane application layer 846.
[0084] Data plane VCN 818 may include data plane application layer 846, data plane DMZ layer 848, and data plane data layer 850. Data plane DMZ layer 848 may include one or more LB subnets 822 communicatively coupled to one or more application subnets 826 of data plane application layer 846 and Internet gateway 834 of data plane VCN 818. One or more application subnets 826 may be communicatively coupled to service gateway 836 and NAT gateway 838 of data plane VCN 818. Data plane data layer 850 may also include one or more DB subnets 830 communicatively coupled to one or more application subnets 826 of data plane application layer 846.
[0085] The Internet gateway 834 of the control plane VCN 816 and data plane VCN 818 can be communicatively coupled to the metadata management service 852, which in turn 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 VCN 816 and data plane VCN 818. The service gateway 836 of the control plane VCN 816 and data plane VCN 818 can be communicatively coupled to the cloud service 856.
[0086] In some examples, the service gateway 836 of the control plane VCN 816 or data plane VCN 818 can make application programming interface (API) calls to the cloud service 856 without traversing the public internet 854. API calls from the service gateway 836 to the cloud service 856 can be unidirectional: the service gateway 836 can make API calls to the cloud service 856, and the cloud service 856 can send requested data to the service gateway 836. However, the cloud service 856 may not initiate API calls to the service gateway 836.
[0087] In some examples, secure host lease 804 can be directly connected to service lease 819, which would otherwise be isolated. Secure host subnet 808 can communicate with SSH subnet 814 via LPG 810, which enables bidirectional communication between otherwise isolated systems. Connecting secure host subnet 808 to SSH subnet 814 allows secure host subnet 808 to access other entities within service lease 819.
[0088] Control plane VCN 816 allows users of service lease 819 to configure or otherwise provision desired resources. Desired resources provisioned in control plane VCN 816 can be deployed or otherwise used in data plane VCN 818. In some examples, control plane VCN 816 can be isolated from data plane VCN 818, and the data plane mirror application layer 840 of control plane VCN 816 can communicate with the data plane application layer 846 of data plane VCN 818 via VNIC 842, which can be included in both the data plane mirror application layer 840 and the data plane application layer 846.
[0089] In some examples, users or clients of the system can make requests, such as create, read, update, or delete (CRUD) operations, via the public internet 854, which can transmit requests to the metadata management service 852. The metadata management service 852 can transmit the request to the control plane VCN 816 via internet gateway 834. The request can be received by one or more LB subnets 822 contained in the control plane DMZ layer 820. The LB subnets 822 can determine that the request is valid, and in response to this determination, they can transmit the request to one or more application subnets 826 contained 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 can be transmitted to a NAT gateway 838 that can make calls to the public internet 854. The request may expect the storage to be located in one or more DB subnets 830.
[0090] In some examples, the data plane mirroring application layer 840 can facilitate direct communication between the control plane VCN 816 and the data plane VCN 818. For example, it may be desirable to apply configuration changes, updates, or other appropriate modifications to resources contained in the data plane VCN 818. Through VNIC 842, the control plane VCN 816 can communicate directly with the resources contained in the data plane VCN 818, and thus can perform configuration changes, updates, or other appropriate modifications.
[0091] In some embodiments, the control plane VCN 816 and data plane VCN 818 may be included in a service lease 819. In this case, the system's users or customers may not own or operate the control plane VCN 816 or the data plane VCN 818. Alternatively, the IaaS provider may own or operate both the control plane VCN 816 and the data plane VCN 818, and both planes may be included in the service lease 819. This embodiment can enable the isolation of networks that might prevent users or customers from interacting with resources of other users or customers. Furthermore, this embodiment can allow users or customers of the system to privately store databases without relying on the public Internet 854, which may not have the desired level of security for storage.
[0092] In other embodiments, one or more LB subnets 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 customers without invoking the public internet 854. The IaaS provider's customers may expect this embodiment because the database(s) used by the customer can be controlled by the IaaS provider and can be stored on a service lease 819, which may be isolated from the public internet 854.
[0093] Figure 9 This is a block diagram 900 illustrating another example pattern of an IaaS architecture according to at least one embodiment. Service operator 902 (e.g., Figure 8 The service provider (802) can communicatively couple to the secure host lease (904) (e.g., Figure 8 Secure hosting lease 804), the secure hosting lease 904 may include a Virtual Cloud Network (VCN) 906 (e.g., Figure 8 VCN806) and Secure Host Subnet 908 (e.g., Figure 8 The secure host subnet 808). VCN 906 may include a local peering gateway (LPG) 910 (e.g., Figure 8 The LPG 810, which can be communicatively coupled to the Secure Shell (SSH) VCN 912 (e.g., LPG 810) contained in the SSH VCN 912, is used in the SSH VCN 912. Figure 8 SSH VCN 812). SSH VCN 912 can include SSH subnet 914 (e.g., Figure 8 The SSH subnet 814), and the SSH VCN 912 can be communicatively coupled to the control plane VCN 916 via the LPG 910 contained in the control plane VCN 916 (e.g., Figure 8Control plane VCN 816). Control plane VCN 916 may be included in service lease 919 (e.g., Figure 8 In the service lease 819), and the data plane VCN 918 (for example, Figure 8 The data plane VCN 818 can be included in a customer lease 921 that may be owned or operated by the system’s users or customers.
[0094] Control plane VCN 916 may include control plane DMZ layer 920 (e.g., Figure 8 The control plane DMZ layer 820 may include one or more LB subnets 922 (e.g., Figure 8 (one or more) LB subnets 822), may include (one or more) application subnets 926 (e.g., Figure 8 The control plane application layer 924 of (one or more) application subnets 826 (e.g., Figure 8 The control plane application layer 824) may include one or more database (DB) subnets 930 (e.g., similar to...). Figure 8 The control plane data layer 928 of (one or more) DB subnets 830 (e.g., Figure 8 The control plane data layer 828). One or more LB subnets 922 contained in the control plane DMZ layer 920 can be communicatively coupled to one or more application subnets 926 contained in the control plane application layer 924 and an Internet gateway 934 that can be contained in the control plane VCN 916 (e.g., Figure 8 Internet gateway 834), and application subnet(s) 926 can communicatively couple to DB subnet(s) 930 contained in control plane data layer 928 and service gateway 936 (e.g., Figure 8 The service gateway) and Network Address Translation (NAT) gateway 938 (e.g., Figure 8 NAT gateway 838).
[0095] The control plane VCN 916 may include a service gateway 936 and a NAT gateway 938.
[0096] The control plane VCN 916 may include a data plane mirror application layer 940 that may contain one or more application subnets 926 (e.g., Figure 8 The data plane mirror application layer 840). One or more application subnets 926 contained in the data plane mirror application layer 940 may include computational instances 944 (e.g., similar to...). Figure 8The virtual network interface controller (VNIC) 942 (e.g., the VNIC of 842) of the computing instance 844. The computing instance 944 may facilitate the mirroring of the application subnet(s) 926 of the data plane application layer 940 and may be included in the data plane application layer 946 (e.g., Figure 8 Communication between one or more application subnets 926 in the data plane application layer 846 via VNIC 942 contained in the data plane mirror application layer 940 and VNIC 942 contained in the data plane application layer 946.
[0097] The Internet gateway 934, included in the control plane VCN 916, can be communicatively coupled to the metadata management service 952 (e.g., Figure 8 Metadata management service 852), which can communicatively couple to the public Internet 954 (e.g., Figure 8 The public internet 954 can communicatively couple to a NAT gateway 938 contained in a control plane VCN 916. The service gateway 936 contained in the control plane VCN 916 can communicatively couple to a cloud service 956 (e.g., ...). Figure 8 Cloud services (856).
[0098] In some examples, data plane VCN 918 may be included in customer lease 921. In this case, the IaaS provider may provide control plane VCN 916 for each customer, and the IaaS provider may set up a unique compute instance 944 for each customer, included in service lease 919. Each compute instance 944 may allow communication between control plane VCN 916 included in service lease 919 and data plane VCN 918 included in customer lease 921. Compute instance 944 may allow resources provisioned in control plane VCN 916 included in service lease 919 to be deployed or otherwise used in data plane VCN 918 included in customer lease 921.
[0099] In other examples, an IaaS provider's customer may have a database residing in customer lease 921. In this example, control plane VCN 916 may include data plane mirror application layer 940, which may include one or more application subnets 926. Data plane mirror application layer 940 may reside in data plane VCN 918, but may not reside in data plane VCN 918. That is, data plane mirror application layer 940 may have access to customer lease 921, but may not reside in data plane VCN 918 or be owned or operated by an IaaS provider's customer. Data plane mirror application layer 940 may be configured to invoke data plane VCN 918, but may not be configured to invoke any entity contained in control plane VCN 916. Customers may expect to deploy or otherwise use resources provided in the control plane VCN 916 in the data plane VCN 918, and the data plane mirroring application layer 940 can facilitate customers' expected deployments or other uses of resources.
[0100] In some embodiments, an IaaS provider's customer can apply filters to data plane VCN 918. In this embodiment, the customer can determine what data plane VCN 918 can access, and the customer can restrict access from data plane VCN 918 to the public Internet 954. The IaaS provider may not be able to apply filters or otherwise control data plane VCN 918's access to any external networks or databases. Applying filters and controls to data plane VCN 918 contained in customer lease 921 helps isolate data plane VCN 918 from other customers and the public Internet 954.
[0101] In some embodiments, cloud service 956 may be invoked by service gateway 936 to access services that may not exist on public internet 954, control plane VCN 916, or data plane VCN 918. The connection between cloud service 956 and control plane VCN 916 or data plane VCN 918 may not be real-time or continuous. Cloud service 956 may reside on different networks owned or operated by an IaaS provider. Cloud service 956 may be configured to receive calls from service gateway 936 and may be configured not to receive calls from public internet 954. Some cloud services 956 may be isolated from other cloud services 956, and control plane VCN 916 may be isolated from cloud services 956 that may not be in the same region as control plane VCN 916. For example, control plane VCN 916 may be located in "Region 1," and cloud service "Deployment 8" may be located in both "Region 1" and "Region 2." If the service gateway 936, contained in the control plane VCN 916 located in region 1, makes a call to deployment 8, then that call can be transmitted to deployment 8 in region 1. In this example, the control plane VCN 916 or deployment 8 in region 1 may not be communicatively coupled to or otherwise communicate with deployment 8 in region 2.
[0102] Figure 10 This is a block diagram 1000 illustrating another example pattern of an IaaS architecture according to at least one embodiment. Service operator 1002 (e.g., Figure 8 The service provider 802) can communicatively couple to the secure host lease 1004 (e.g., Figure 8 Secure hosting lease 804), the secure hosting lease 1004 may include a virtual cloud network (VCN) 1006 (e.g., Figure 8 VCN 806) and Secure Host Subnet 1008 (e.g., Figure 8 The secure host subnet 808). VCN 1006 may include LPG1010 (e.g., Figure 8 The LPG 810), which can be communicatively coupled to the SSH VCN 1012 via the LPG 1010 included in the SSH VCN 1012 (e.g., Figure 8 SSH VCN 812). SSH VCN 1012 can include SSH subnet 1014 (e.g., Figure 8 SSH subnet 814), and SSH VCN 1012 can be communicatively coupled to control plane VCN 1016 via LPG 1010 included in control plane VCN 1016 (e.g., Figure 8 The control plane VCN 816) and coupled to the data plane VCN 1018 via the LPG 1010 contained in the data plane VCN 1018 (e.g., Figure 8 Data plane 818). Control plane VCN 1016 and data plane VCN 1018 can be included in service lease 1019 (e.g., Figure 8 (Service rental 819)
[0103] The control plane VCN 1016 may include a subnet 1022 that may contain one or more load balancer (LB) subnets (e.g., Figure 8 The control plane DMZ layer 1020 of (one or more) LB subnets 822) (e.g., Figure 8 The control plane DMZ layer 820 may include one or more application subnets 1026 (e.g., similar to...). Figure 8 The control plane application layer 1024 of (one or more) application subnets 826 (e.g., Figure 8 The control plane application layer 824) may include a control plane data layer 1028 (e.g., DB subnet 1030) that may include one or more DB subnets 1030. Figure 8 The control plane data layer 828). One or more LB subnets 1022 contained in the control plane DMZ layer 1020 can be communicatively coupled to one or more application subnets 1026 contained in the control plane application layer 1024 and an Internet gateway 1034 that can be contained in the control plane VCN 1016 (e.g., Figure 8 Internet gateway 834), and application subnet(s) 1026 can communicatively couple to DB subnet(s) 1030 contained in control plane data layer 1028 and service gateway 1036 (e.g., Figure 8 The service gateway) and Network Address Translation (NAT) gateway 1038 (e.g., Figure 8 (NAT gateway 838). The control plane VCN 1016 may include the service gateway 1036 and the NAT gateway 1038.
[0104] The data plane VCN 1018 may include the data plane application layer 1046 (e.g., Figure 8 Data plane application layer 846), data plane DMZ layer 1048 (e.g., Figure 8 The data plane DMZ layer 848), and the data plane data layer 1050 (e.g., Figure 8The data plane data layer 850). The data plane DMZ layer 1048 may include one or more trusted application subnets 1060 and one or more untrusted application subnets 1062 that are communicatively coupled to the data plane application layer 1046, and one or more LB subnets 1022 of the Internet gateway 1034 contained in the data plane VCN 1018. The one or more trusted application subnets 1060 may be communicatively coupled to the service gateway 1036 contained in the data plane VCN 1018, the NAT gateway 1038 contained in the data plane VCN 1018, and one or more DB subnets 1030 contained in the data plane data layer 1050. The one or more untrusted application subnets 1062 may be communicatively coupled to the service gateway 1036 contained in the data plane VCN 1018 and the one or more DB subnets 1030 contained in the data plane data layer 1050. The data plane data layer 1050 may include one or more DB subnets 1030 that can be communicatively coupled to the service gateway 1036 contained in the data plane VCN 1018.
[0105] One or more untrusted application subnets 1062 may include one or more primary VNICs 1064(1)-(N) that can be communicatively coupled to tenant virtual machines (VMs) 1066(1)-(N). Each tenant VM 1066(1)-(N) may be communicatively coupled to a corresponding application subnet 1067(1)-(N) that may be contained in a corresponding container egress VCN 1068(1)-(N), which may be contained in a corresponding customer lease 1070(1)-(N). A corresponding secondary VNIC 1072(1)-(N) may facilitate communication between one or more untrusted application subnets 1062 contained in data plane VCN 1018 and application subnets contained in container egress VCN 1068(1)-(N). Each container egress VCN 1068(1)-(N) may include a NAT gateway 1038, which can communicatively couple to the public Internet 1054 (e.g., Figure 8 The public internet (854).
[0106] The Internet gateway 1034, contained in the control plane VCN 1016 and the data plane VCN 1018, can be communicatively coupled to the metadata management service 1052 (e.g., Figure 8A metadata management system 852 is provided, which can communicatively couple to the public internet 1054. The public internet 1054 can communicatively couple to a NAT gateway 1038 contained in a control plane VCN 1016 and a data plane VCN 1018. A service gateway 1036 contained in the control plane VCN 1016 and the data plane VCN 1018 can communicatively couple to a cloud service 1056.
[0107] In some embodiments, the data plane VCN 1018 can be integrated with the customer lease 1070. Such integration may be useful or desired by the IaaS provider's customers in certain situations, such as when support might be expected during code execution. Customers may provide code that could be destructive, might communicate with other customer resources, or might otherwise cause undesirable effects. In response, the IaaS provider can determine whether to run the code provided by the customer.
[0108] In some examples, an IaaS provider's customer can grant temporary network access to the IaaS provider and request functionality attached to data plane layer application 1046. The code running this functionality can execute in VMs 1066(1)-(N), and this code may not be configured to run anywhere else on data plane VCN 1018. Each VM 1066(1)-(N) can be connected to a customer lease 1070. A corresponding container 1071(1)-(N) contained within VMs 1066(1)-(N) can be configured to run the code. In this scenario, dual isolation can exist (e.g., container 1071(1)-(N) runs the code, where container 1071(1)-(N) may be contained in at least one VM 1066(1)-(N) within untrusted application subnet 1062), which can help prevent incorrect or otherwise unintended code from corrupting the IaaS provider's network or the networks of different customers. Containers 1071(1)-(N) may be communicatively coupled to customer lease 1070 and may be configured to transmit or receive data from customer lease 1070. Containers 1071(1)-(N) may not be configured to transmit or receive data from any other entity in the data plane VCN 1018. After the code execution is complete, the IaaS provider may terminate or otherwise dispose of containers 1071(1)-(N).
[0109] In some embodiments, one or more trusted application subnets 1060 may run code that can be owned or operated by an IaaS provider. In this embodiment, one or more trusted application subnets 1060 may be communicatively coupled to one or more database subnets 1030 and configured to perform CRUD operations in one or more database subnets 1030. One or more untrusted application subnets 1062 may be communicatively coupled to one or more database subnets 1030, but in this embodiment, one or more untrusted application subnets may be configured to perform read operations in one or more database subnets 1030. Containers 1071(1)-(N) that may be contained in each customer's VM 1066(1)-(N) and may run code from the customer may not be communicatively coupled to one or more database subnets 1030.
[0110] In other embodiments, the control plane VCN 1016 and the data plane VCN 1018 may be coupled without direct communication. In this embodiment, there may be no direct communication between the control plane VCN 1016 and the data plane VCN 1018. However, communication can occur indirectly through at least one method. The LPG 1010 may be established by an IaaS provider, which can facilitate communication between the control plane VCN 1016 and the data plane VCN 1018. In another example, either the control plane VCN 1016 or the data plane VCN 1018 may invoke the cloud service 1056 via the service gateway 1036. For example, an invocation of the cloud service 1056 from the control plane VCN 1016 may include a request for a service that can communicate with the data plane VCN 1018.
[0111] Figure 11 This is a block diagram 1100 illustrating another example pattern of an IaaS architecture according to at least one embodiment. Service operator 1102 (e.g., Figure 8 The service provider 802) can communicatively couple to the secure host lease 1104 (e.g., Figure 8 Secure hosting lease 804), the secure hosting lease 1104 may include a virtual cloud network (VCN) 1106 (e.g., Figure 8 VCN 806) and Secure Host Subnet 1108 (e.g., Figure 8 The secure host subnet 808). VCN 1106 may include LPG1110 (e.g., Figure 8 The LPG 810), the LPG 1110 can be accessed via SSH VCN 1112 (e.g., LPG 810), Figure 8The LPG 1110 in SSH VCN 1112 is communicatively coupled to SSH VCN 1112. SSH VCN 1112 may include SSH subnet 1114 (e.g., Figure 8 SSH subnet 814), and SSH VCN 1112 can be communicatively coupled to control plane VCN 1116 via LPG 1110 contained in control plane VCN 1116 (e.g., Figure 8 The control plane VCN 816) and coupled to the data plane VCN 1118 via the LPG 1110 contained in the data plane VCN 1118 (e.g., Figure 8 Data plane 818). Control plane VCN 1116 and data plane VCN 1118 may be contained in service lease 1119 (e.g., Figure 8 (Service rental 819)
[0112] The control plane VCN 1116 may include one or more LB subnets 1122 (e.g., Figure 8 The control plane DMZ layer 1120 of (one or more) LB subnets 822) (e.g., Figure 8 The control plane DMZ layer 820 may include (one or more) application subnets 1126 (e.g., Figure 8 The control plane application layer 1124 of (one or more) application subnets 826 (e.g., Figure 8 The control plane application layer 824) may include one or more DB subnets 1130 (e.g., Figure 10 The control plane data layer 1128 of (one or more) DB subnets 1030 (e.g., Figure 8 The control plane data layer 828). One or more LB subnets 1122 contained in the control plane DMZ layer 1120 can be communicatively coupled to one or more application subnets 1126 contained in the control plane application layer 1124 and an Internet gateway 1134 that can be contained in the control plane VCN 1116 (e.g., Figure 8 Internet gateway 834), and application subnet(s) 1126 can communicatively couple to DB subnet(s) 1130 contained in control plane data layer 1128 and service gateway 1136 (e.g., Figure 8 The service gateway) and Network Address Translation (NAT) gateway 1138 (e.g., Figure 8 (NAT gateway 838). The control plane VCN 1116 may include the service gateway 1136 and the NAT gateway 1138.
[0113] Data plane VCN 1118 may include data plane application layer 1146 (e.g., Figure 8 Data plane application layer 846), data plane DMZ layer 1148 (e.g., Figure 8 The data plane DMZ layer 848), and the data plane data layer 1150 (e.g., Figure 8 The data plane data layer 850). The data plane DMZ layer 1148 may include one or more trusted application subnets 1160 that can be communicatively coupled to the data plane application layer 1146 (e.g., Figure 10 (one or more) trusted application subnets 1060 and (one or more) untrusted application subnets 1162 (e.g., Figure 10 The data plane VCN 1118 may include one or more untrusted application subnets 1062 and one or more LB subnets 1122 of Internet gateway 1134. One or more trusted application subnets 1160 may communicatively couple to service gateway 1136, NAT gateway 1138, and DB subnets 1130 in data plane VCN 1118. One or more untrusted application subnets 1162 may communicatively couple to service gateway 1136 and DB subnets 1130 in data plane VCN 1118. Data plane data layer 1150 may include one or more DB subnets 1130 that may communicatively couple to service gateway 1136 in data plane VCN 1118.
[0114] One or more untrusted application subnets 1162 may include a primary VNIC 1164(1)-(N) communicatively coupled to tenant virtual machines (VMs) 1166(1)-(N) residing within one or more untrusted application subnets 1162. Each tenant VM 1166(1)-(N) may run code in a corresponding container 1167(1)-(N) and is communicatively coupled to an application subnet 1126 that may be contained in a data plane application layer 1146 contained in a container egress VCN 1168. A corresponding secondary VNIC 1172(1)-(N) may facilitate communication between one or more untrusted application subnets 1162 contained in a data plane VCN 1118 and the application subnets contained in a container egress VCN 1168. The container egress VCN may include a public internet 1154 (e.g., Figure 8 The public internet (854) uses NAT gateway 1138.
[0115] Internet gateway 1134, contained in control plane VCN 1116 and data plane VCN 1118, can be communicatively coupled to metadata management service 1152 (e.g., Figure 8 A metadata management system 852 is communicatively coupled to the public internet 1154. The public internet 1154 is communicatively coupled to a NAT gateway 1138 contained in a control plane VCN 1116 and a data plane VCN 1118. A service gateway 1136 contained in a control plane VCN 1116 and a data plane VCN 1118 is communicatively coupled to a cloud service 1156.
[0116] In some examples, Figure 11 The architecture shown in block diagram 1100 can be considered as... Figure 10 This is an exception to the pattern shown in the architecture of block diagram 1000, and this pattern may be what the IaaS provider's customers would expect if the IaaS provider cannot communicate directly with the customer (e.g., in a disconnected region). The customer can access in real time the corresponding container 1167(1)-(N) contained in each customer's VM 1166(1)-(N). Container 1167(1)-(N) can be configured to invoke a corresponding auxiliary VNIC 1172(1)-(N) contained in one or more application subnets 1126 of the data plane application layer 1146, which may be contained in the container egress VCN 1168. The auxiliary VNIC 1172(1)-(N) can transmit the call to a NAT gateway 1138, which can then transmit the call to the public internet 1154. In this example, containers 1167(1)-(N), which can be accessed by clients in real time, can be isolated from the control plane VCN 1116 and from other entities contained in the data plane VCN 1118. Containers 1167(1)-(N) can also be isolated from resources from other clients.
[0117] In other examples, a client can use containers 1167(1)-(N) to invoke cloud service 1156. In this example, the client can run code within containers 1167(1)-(N) requesting a service from cloud service 1156. Container 1167(1)-(N) can then forward the request to a secondary VNIC 1172(1)-(N), which can then forward the request to a NAT gateway, which can forward the request to the public internet 1154. The public internet 1154 can then forward the request via internet gateway 1134 to one or more LB subnets 1122 contained in control plane VCN 1116. In response to determining that the request is valid, the one or more LB subnets can forward the request to one or more application subnets 1126, which can then forward the request to cloud service 1156 via service gateway 1136.
[0118] It should be recognized that the IaaS architectures 800, 900, 1000, and 1100 depicted in the figures may have other components besides those depicted. Furthermore, the embodiments shown in the figures are merely some examples of cloud infrastructure systems that can be incorporated into embodiments of this disclosure. In some other embodiments, the IaaS system may have more or fewer components than shown in the figures, may combine two or more components, or may have different configurations or component arrangements.
[0119] In some embodiments, the IaaS system described herein may include application suites, middleware, and database service offerings delivered to customers in a self-service, subscription-based, elastically scalable, reliable, highly available, and secure manner. An example of such an IaaS system is the Oracle Cloud Infrastructure (OCI) provided by this assignee.
[0120] Figure 12 An example computer system 1200 in which various embodiments can be implemented is illustrated. System 1200 can be used to implement any of the computer systems described above. As shown, computer system 1200 includes a processing unit 1204 that communicates with a plurality of 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. Storage subsystem 1218 includes a tangible computer-readable storage medium 1222 and system memory 1210.
[0121] Bus subsystem 1202 provides a mechanism for allowing various components and subsystems of computer system 1200 to communicate with each other as intended. While bus subsystem 1202 is schematically shown as a single bus, alternative embodiments of the bus subsystem may utilize multiple buses. Bus subsystem 1202 can be any of several types of bus architectures, including memory buses or memory controllers, peripheral buses, and local buses using any of the various bus architectures. For example, such architectures may include Industry Standard Architecture (ISA) buses, Micro Channel Architecture (MCA) buses, Enhanced ISA (EISA) buses, Video Electronics Standards Association (VESA) local buses, and Peripheral Component Interconnect (PCI) buses, which may be implemented as Mezzanine buses manufactured according to the IEEE P1386.1 standard.
[0122] A processing unit 1204, which may be implemented as one or more integrated circuits (e.g., a conventional microprocessor or microcontroller), controls 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 or multi-core processors. In some embodiments, the processing unit 1204 may be implemented as one or more independent processing units 1232 and / or 1234, each including 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 into a single chip.
[0123] In various embodiments, processing unit 1204 can execute various programs in response to program code and can maintain multiple concurrently executing programs or processes. At any given time, some or all of the program code to be executed can reside in processing unit 1204 and / or storage subsystem 1218. With appropriate programming, processing unit 1204 can provide the various functions described above. Computer system 1200 may additionally include processing acceleration unit 1206, which may include digital signal processor (DSP), dedicated processor, etc.
[0124] I / O subsystem 1208 may include user interface input devices and user interface output devices. User interface input devices may include keyboards, pointing devices such as mice or trackballs, touchpads or touchscreens integrated into displays, scroll wheels, click wheels, dials, buttons, switches, keyboards, audio input devices with voice command recognition systems, microphones, and other types of input devices. User interface input devices may include, for example, motion sensing and / or gesture recognition devices, such as Microsoft… Motion sensors enable users to control devices like Microsoft products via a natural user interface using gestures and voice commands. The 360 game controller's input device interacts with it. The user interface input device may also include eye gesture recognition devices, such as detecting eye movements from the user (e.g., "blinking" when taking a photo and / or making a menu selection) and translating the eye gestures into the input device (e.g., Google). Google input in ) Blink detector. Additionally, the user interface input device may include enabling the user to interact with a voice recognition system (e.g., ...) via voice commands. Voice recognition sensing devices for interaction with navigators.
[0125] User interface input devices may also include, but are not limited to, 3D mice, joysticks or pointing sticks, game panels and drawing tablets, as well as audio / video 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. Furthermore, user interface input devices may include, for example, medical imaging input devices such as computed tomography (CT), magnetic resonance imaging (MRI), positron emission tomography (PET), and medical ultrasound equipment. User interface input devices may also include, for example, audio input devices such as MIDI keyboards, digital musical instruments, etc.
[0126] User interface output devices may include display subsystems, indicator lights, or non-visual displays such as audio output devices, etc. Display subsystems may be cathode ray tubes (CRTs), flat panel devices such as those using liquid crystal displays (LCDs) or plasma displays, projection devices, touchscreens, etc. Generally, the term "output device" is intended to include all possible types of devices and mechanisms for outputting information from computer system 1200 to a user or other computer. For example, user interface output devices may include, but are not limited to, various display devices that visually convey text, graphics, and audio / video information, such as monitors, printers, speakers, headphones, car navigation systems, plotters, voice output devices, and modems.
[0127] Computer system 1200 may include a storage subsystem 1218 containing software elements, shown as currently located in system memory 1210. System memory 1210 may store program instructions that can be loaded and executed on processing unit 1204, as well as data generated during the execution of these programs.
[0128] Depending on the configuration and type of computer system 1200, system memory 1210 may be volatile (such as random access memory (RAM)) and / or non-volatile (such as read-only memory (ROM), flash memory, etc.). RAM typically contains data and / or program modules that can be immediately accessed by processing unit 1204 and / or currently being operated and executed by processing unit 1204. In some implementations, system memory 1210 may include various different types of memory, such as static random access memory (SRAM) or dynamic random access memory (DRAM). In some implementations, a basic input / output system (BIOS), containing basic routines that facilitate the transfer of information between elements of computer system 1200 during startup, may typically be stored in ROM. As an example, but not a limitation, system memory 1210 also includes application programs 1212, program data 1214, and an operating system 1216, which may include client applications, web browsers, middleware applications, relational database management systems (RDBMS), etc. As an example, operating system 1216 may include various versions of Microsoft... Apple and / or Linux operating system, and various commercially available... Or a UNIX-like operating system (including but not limited to various GNU / Linux operating systems, Google...) Operating systems, etc.) and / or such as iOS, Phone OS 12OS and A mobile operating system based on the OS operating system.
[0129] The storage subsystem 1218 may also provide a tangible computer-readable storage medium for storing basic programming and data structures that provide the functionality of some embodiments. Software (programs, code modules, instructions) that provides the above-described functionality when executed by a processor 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 according to this disclosure.
[0130] Storage subsystem 1218 may also include a computer-readable storage medium reader 1220 that can be further connected to computer-readable storage medium 1222. Together with and optionally in conjunction with system memory 1210, computer-readable storage medium 1222 can comprehensively represent a remote, local, fixed, and / or removable storage device plus storage medium for temporarily and / or more persistently containing, storing, transmitting, and retrieving computer-readable information.
[0131] The computer-readable storage medium 1222 containing code or portions thereof may also include any suitable medium known or used in the art, including storage and communication media, such as, but not limited to, volatile and non-volatile, removable and non-removable media implemented by any method or technology for storing and / or transmitting information. This may include tangible computer-readable storage media such as RAM, ROM, electrically erasable programmable ROM (EEPROM), flash memory or other memory technologies, CD-ROM, digital versatile disc (DVD) or other optical storage, magnetic tape cassette, magnetic tape, disk storage or other magnetic storage devices, or other tangible computer-readable media. This may also include non-tangible computer-readable media such as data signals, data transmissions, or any other medium that can be used to transmit desired information and can be accessed by the computing system 1200.
[0132] As an example, computer-readable storage medium 1222 may include a hard disk drive that reads or writes to a non-removable non-volatile magnetic medium, a disk drive that reads or writes to a removable non-volatile magnetic disk, and a removable non-volatile optical disc (such as CD ROM, DVD, and Blu-ray disc) that reads or writes to it. An optical disc drive that reads from or writes to a disk or other optical medium. Computer-readable storage medium 1222 may include, but is not limited to, Disk drives, flash memory cards, Universal Serial Bus (USB) flash drives, Secure Digital (SD) cards, DVDs, digital audio tapes, and so on. Computer-readable storage media 1222 may also include solid-state drives (SSDs) based on non-volatile memory (such as flash memory-based SSDs, enterprise flash drives, solid-state ROMs, etc.), volatile memory-based SSDs (such as solid-state RAM, dynamic RAM, static RAM), DRAM-based SSDs, magnetoresistive RAM (MRAM) SSDs, and hybrid SSDs using a combination of DRAM-based and flash memory-based SSDs. Disk drives and their associated computer-readable media can provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for computer system 1200.
[0133] The communication subsystem 1224 provides an interface to other computer systems and networks. The communication subsystem 1224 serves as an interface for receiving data from other systems and sending data from computer system 1200 to other systems. For example, the communication subsystem 1224 enables computer system 1200 to connect to one or more devices via the Internet. In some embodiments, the communication subsystem 1224 may include radio frequency (RF) transceiver components (e.g., advanced data network technologies using cellular telephone technologies, such as 3G, 4G, or EDGE (Enhanced Data Rates for Global Evolution), WiFi (IEEE 802.11 series standards), or other mobile communication technologies, or any combination thereof), GPS receiver components, and / or other components for accessing wireless voice and / or data networks. In some embodiments, as an addition to or alternative to the wireless interface, the communication subsystem 1224 may provide a wired network connection (e.g., Ethernet).
[0134] In some embodiments, the communication subsystem 1224 may also represent one or more users who can use the computer system 1200 to receive input communications in the form of structured and / or unstructured data feeds 1226, event streams 1228, event updates 1230, etc.
[0135] As an example, the communication subsystem 1224 can be configured to receive data feeds 1226 from users of social networks and / or other communication services in real time, such as... feed, Updates, web feeds such as rich site summary (RSS) feeds, and / or real-time updates from one or more third-party information sources.
[0136] Furthermore, the communication subsystem 1224 can also be configured to receive data in the form of a continuous data stream, which may include event streams 1228 and / or event updates 1230 that are essentially continuous or unbounded real-time events without a clearly defined termination. Examples of applications that generate continuous data may include, for example, sensor data applications, financial quotation machines, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, vehicle traffic monitoring, and so on.
[0137] The communication subsystem 1224 can also be configured to output structured and / or unstructured data feeds 1226, event streams 1228, event updates 1230, etc. to one or more databases, which can communicate with one or more streaming data source computers coupled to the computer system 1200.
[0138] Computer system 1200 can be one of various types, including handheld portable devices (e.g., Cellular phone Computing tablets, PDAs), and wearable devices (e.g., Glass head-mounted displays, PCs, workstations, mainframes, information stations, server racks, or any other data processing systems.
[0139] Due to the ever-evolving nature of computers and networks, the description of the computer system 1200 depicted in the figures is merely a concrete example. Many other configurations with more or fewer components than the system depicted in the figures are possible. For example, custom hardware may be used and / or specific elements may be implemented using hardware, firmware, software (including applets), or a combination thereof. Additionally, connections to other computing devices, such as network input / output devices, may also be employed. Based on the disclosure and teachings provided herein, those skilled in the art will recognize other ways and / or methods for implementing the various embodiments.
[0140] While specific embodiments have been described, various modifications, alterations, alternative constructions, and equivalents are also included within the scope of this disclosure. The embodiments are not limited to operation within certain specific data processing environments, but can be freely operated within multiple data processing environments. Furthermore, although the embodiments have been described using a specific series of transactions and steps, those skilled in the art will understand that the scope of this disclosure is not limited to the described series of transactions and steps. Various features and aspects of the above embodiments can be used individually or in combination.
[0141] 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 only hardware, or only software, or a combination thereof. The various processes described herein can be implemented in any combination on the same processor or on different processors. Accordingly, where a component or module is described as being configured to perform certain operations, such configuration can be accomplished, for example, by designing electronic circuits to perform operations, by programming programmable electronic circuits (such as microprocessors), or any combination thereof. Processes may communicate using a variety of technologies, including but not limited to conventional technologies for inter-process communication, and different pairs of processes may use different technologies, or the same pair of processes may use different technologies at different times.
[0142] Accordingly, the specification and drawings are to be considered illustrative rather than restrictive. However, it will be apparent that additions, omissions, deletions, and other modifications and changes may be made therein without departing from the broader spirit and scope set forth in the claims. Therefore, while specific disclosed embodiments have been described, they are not intended to be limiting. Various modifications and equivalents are within the scope of the following claims.
[0143] In the context of describing the disclosed embodiments (particularly in the context of the following claims), the terms “a,” “an,” and “the,” and similar designations, are to be interpreted as encompassing both singular and plural, unless otherwise indicated herein or clearly contradicted by the context. Unless otherwise stated, the terms “comprising,” “having,” “including,” and “containing” are to be interpreted as open-ended terms (i.e., meaning “including but not limited to”). The term “connected” should be interpreted as partially or wholly contained in, attached to, or joined together, even if something exists in between. Unless otherwise indicated herein, the enumeration of value ranges herein is intended only as a shorthand method for individually referencing each individual value falling within that range, and each individual value is incorporated into the specification as if it were individually enumerated herein. Unless otherwise indicated herein or clearly contradicted by the context, all methods described herein can be performed in any suitable order. The use of any and all examples or exemplary language (e.g., “such as”) provided herein is intended only to better illustrate the embodiments and does not constitute a limitation on the scope of this disclosure, unless otherwise stated. Nothing in the specification should be construed as indicating that any unclaimed element is essential to the practice of this disclosure.
[0144] Exclusion language, such as the phrase “at least one of X, Y, or Z”, unless otherwise explicitly stated, is intended to be understood in the context generally used to represent items, terms, etc., and may be X, Y, or Z, or any combination thereof (e.g., X, Y, and / or Z). Therefore, such exclusion language is generally not intended to, and should not, imply that some embodiments require the presence of at least one of X, at least one of Y, or at least one of Z.
[0145] This document describes preferred embodiments of the present disclosure, including the best modes known for carrying out the present disclosure. Variations of those preferred embodiments will become apparent to those skilled in the art upon reading the foregoing description. Those skilled in the art should be able to suitably employ such variations and may practice the present disclosure in ways other than those specifically described herein. Accordingly, the present disclosure includes all modifications and equivalents to the subject matter recited in the appended claims, where permitted by applicable law. Furthermore, unless otherwise indicated herein, the present disclosure includes any combination of the foregoing elements in all its possible variations.
[0146] All references cited in this article, including publications, patent applications and patents, are incorporated into this article by reference to the same extent as if each reference individually and specifically indicated to be incorporated by reference and elaborated in full in this article.
[0147] In the foregoing specification, various aspects of this disclosure have been described with reference to specific embodiments thereof, but those skilled in the art will recognize that this disclosure is not limited thereto. The various features and aspects of the foregoing disclosure may be used individually or in combination. Furthermore, embodiments may be used in any number of settings and applications other than those described herein without departing from the broader spirit and scope of this specification. Accordingly, this specification and the accompanying drawings should be considered illustrative rather than restrictive.
Claims
1. A computer-implemented method, comprising: The computing instance is managed by the computing system based at least in part on the management of a first state object corresponding to the computing instance in the cloud computing environment, the first state object including a first set of attributes indicating the current state of the computing instance; The computing system receives change request data from the computing component that made the request, the change request data indicating a requested change to a specific attribute of the computing instance; The computing system derives a second state object of the computing instance based at least in part on the requested changes and a first state object indicating the current state of the computing instance; The computing system computes a first hash value based at least in part on a first subset of attributes of a second attribute set of a second state object, the first subset of attributes of the second attribute set of the second state object being identified at least in part based on a mapping between the requesting computing component and one or more attribute identifiers; The computing system provides a first hash value to the computing component that made the request; The requested changes to the computing instance are executed by the computing system; The first state object is updated by the computing system at least in part based on performing requested changes to the computing instance; The computing system computes a second hash value based at least in part on a second subset of a first set of attributes of a first state object, the second subset of which is identified at least in part based on the mapping. as well as The computing system provides a second hash value to the computing component that made the request. The first and second hash values are configured to be used by the computing component that made the request to verify that the requested change has been implemented at the computing instance.
2. The computer-implemented method as described in claim 1, wherein, Each attribute in the first attribute set of the first state object and each attribute in the second attribute set of the second state object each include an attribute identifier and a value corresponding to the attribute identifier.
3. The computer-implemented method as described in claim 1, wherein, The second-state object and the first-state object each include a common set of properties.
4. The computer-implemented method of claim 1, further comprising storing data identifying the requested change in a storage location, wherein a computing process of the computing system subsequently retrieves the data from the storage location and performs operations to implement the requested change to the computing instance.
5. The computer-implemented method as described in any of the preceding claims, further comprising: The computing system receives a second change request from different requesting computing components, the second change request indicating a second requested change to one or more attributes of the computing instance; The computing system derives the third state object of the computing instance based at least in part on the changes to the first state object and the second request; The computing system calculates a third hash value based at least in part on a subset of the third attributes of the third attribute set of the third state object, the subset of the third attributes having attributes different from the subset of the first attributes of the second state object; as well as The computing system provides a third hash value to the different computing components that made the requests. The third hash value is configured to be used by the different computing components that made the requests to verify that the changes requested in the second request have been implemented at the computing instance.
6. The computer-implemented method as described in claim 5, further comprising: The computing system executes the changes requested for the second computing instance; The first state object is updated by the computing system at least in part based on changes made to the computing instance in a second request; The computing system calculates a fourth hash value based at least in part on a fourth attribute subset of a first attribute set of a first state object, the fourth attribute subset having attributes different from a second attribute subset of the first attribute set of the first state object; as well as The computing system provides a fourth hash value to the different computing components that made the requests. The fourth hash value is configured to be used by the different computing components that made the requests to verify that the changes requested in the second request have been implemented at the computing instance.
7. A computing device, comprising: A processing device communicatively coupled to a computer-readable medium storing non-transitory computer-executable program instructions, which, when executed by the processing device, cause the computing device to: The computing instance is managed at least in part based on the management of a first state object corresponding to the computing instance in the cloud computing environment, the first state object including a first set of attributes indicating the current state of the computing instance; Receive change request data from the computing component that made the request, the change request data indicating the requested change to a specific attribute of the computing instance; The second state object of the computing instance is derived at least in part based on the requested changes and a first state object indicating the current state of the computing instance; The first hash value is calculated at least in part based on a first subset of attributes of a second attribute set of a second state object, the first subset of attributes of the second attribute set of the second state object being identified at least in part based on a mapping between the requesting computation component and one or more attribute identifiers; Provide a first hash value to the computing component that made the request; Perform the requested changes to the computing instance; The first state object is updated at least in part based on the execution of the requested changes to the computation instance; The second hash value is computed at least in part based on a second subset of a first set of attributes of a first state object, the second subset of which is identified at least in part based on the mapping. as well as A second hash value is provided to the requesting computing component. The first and second hash values are configured to be used by the requesting computing component to verify that the requested change has been implemented at the computing instance.
8. The computing device of claim 7, wherein, Each attribute in the first attribute set of the first state object and each attribute in the second attribute set of the second state object each include an attribute identifier and a value corresponding to the attribute identifier.
9. The computing device of claim 7, wherein, The second-state object and the first-state object each include a common set of properties.
10. The computing device of claim 7, wherein, Executable program instructions also cause the computing device to store data identifying the requested changes in a storage location, wherein the computing process of the computing device then retrieves the data from the storage location and performs operations to implement the requested changes to the computing instance.
11. The computing device as claimed in any one of claims 7 to 10, wherein, Executing the computer-executable program instructions also causes the computing device to: Receive a second change request from a different requesting computing component, the second change request indicating a second requested change to one or more attributes of the computing instance; The third state object of the computation instance is derived at least in part based on the changes made to the first state object and the second request; The third hash value is calculated at least in part based on a subset of the third attributes of the third attribute set of the third state object, the subset of the third attributes having attributes different from the subset of the first attributes of the second state object; as well as A third hash value is provided to the different computational components that made the request. The third hash value is configured to be used by the different computational components that made the request to verify that the changes in the second request have been implemented at the computational instance.
12. The computing device of claim 11, wherein, Executing the computer-executable program instructions also causes the computing device to: Perform the changes requested for the second computing instance; The first state object is updated at least in part based on the changes made to the computing instance in the second request; The fourth hash value is calculated at least in part based on a fourth subset of the first attribute set of the first state object, the fourth subset having attributes that are different from the second subset of the first attribute set of the first state object; as well as A fourth hash value is provided to the different computing components that made the request. The fourth hash value is configured to be used by the different computing components that made the request to verify that the changes in the second request have been implemented at the computing instance.
13. A non-transitory computer-readable storage medium storing computer-executable program instructions, which, when executed by a processing device of a computing device, cause the computing device to perform operations including: The computing instance is managed at least in part based on the management of a first state object corresponding to the computing instance in the cloud computing environment, the first state object including a first set of attributes indicating the current state of the computing instance; Receive change request data from the computing component that made the request, the change request data indicating the requested change to a specific attribute of the computing instance; The second state object of the computing instance is derived at least in part based on the requested changes and a first state object indicating the current state of the computing instance; The first hash value is calculated at least in part based on a first subset of attributes of a second attribute set of a second state object, the first subset of attributes of the second attribute set of the second state object being identified at least in part based on a mapping between the requesting computation component and one or more attribute identifiers; Provide a first hash value to the computing component that made the request; Perform the requested changes to the computing instance; The first state object is updated at least in part based on the execution of the requested changes to the computation instance; The second hash value is computed at least in part based on a second subset of a first set of attributes of a first state object, the second subset of which is identified at least in part based on the mapping. as well as A second hash value is provided to the requesting computing component. The first and second hash values are configured to be used by the requesting computing component to verify that the requested change has been implemented at the computing instance.
14. The non-transitory computer-readable storage medium of claim 13, wherein, The first-state object and the second-state object each include a common set of attributes.
15. The non-transitory computer-readable storage medium of claim 13, wherein the operation further includes storing data identifying the requested change in a storage location, wherein the computing process of the cloud computing environment subsequently retrieves the data from the storage location and performs operations to implement the requested change to the computing instance.
16. The non-transitory computer-readable storage medium as claimed in any one of claims 13 to 15, wherein, The operation also includes: Receive a second change request from a different requesting computing component, the second change request indicating a second requested change to one or more attributes of the computing instance; The third state object of the computation instance is derived at least in part based on the changes made to the first state object and the second request; The third hash value is calculated at least in part based on a subset of the third attributes of the third attribute set of the third-state object, the third attribute subset having attributes different from the first attribute subset of the second-state object; and A third hash value is provided to the different computational components that made the request. The third hash value is configured to be used by the different computational components that made the request to verify that the changes in the second request have been implemented at the computational instance.
17. The non-transitory computer-readable storage medium of claim 16, wherein, The operation also includes: Perform the changes requested for the second computing instance; The first state object is updated at least in part based on the changes made to the computing instance in the second request; The fourth hash value is calculated at least in part based on a fourth subset of the first attribute set of the first state object, the fourth subset having attributes different from a second subset of the first attribute set of the first state object; and A fourth hash value is provided to the different computing components that made the request. The fourth hash value is configured to be used by the different computing components that made the request to verify that the changes in the second request have been implemented at the computing instance.
18. An apparatus comprising components for performing the steps of the method according to any one of claims 1-6.
19. A computer program product comprising computer instructions that, when executed by a processor, implement the steps of the method according to any one of claims 1-6.