Alternative configurable attributes of system selection for compute instances
The system addresses the challenge of launching compute instances with user-specified constraints by selecting attribute values, ensuring compatibility and resource availability, thus facilitating successful instance deployment.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-03-01
- Publication Date
- 2026-03-25
AI Technical Summary
Cloud computing providers face challenges in launching compute instances when user-specified requirements cannot be met, even if functional equivalents are available, due to processor type or region availability issues.
A system that configures compute instances by selecting values for attributes based on user-specified criteria, ensuring sufficient resources are available for launching multiple instances with consistent attribute values.
Enables the successful launch of compute instances that meet user criteria by selecting appropriate attribute values, addressing the limitations of existing systems in handling user-specified constraints.
Smart Images

Figure 2026509816000001_ABST
Abstract
Description
Technical Field
[0001] Incorporation by Reference Each of the following applications, Application No. 18 / 479,707 filed on October 2, 2023, Application No. 18 / 479,697 filed on October 2, 2023, and Application No. 63 / 450,571 filed on March 7, 2023, is hereby incorporated by reference into this specification. This application hereby invalidates any disclaimer of claim scope in the parent application or during the prosecution thereof, and notifies the USPTO that the claims in this application may be broader than any claims in the parent application.
[0002] Technical Field This disclosure relates to configuring compute instances within a cloud computing system. In particular, this disclosure relates to configuring compute instances when a requesting user specifies criteria for constraining compute instance attribute values but does not specify the actual values of the compute instance attributes.
Summary of the Invention
Problems to be Solved by the Invention
[0003] Background A user requesting the creation of a compute instance using a cloud computing provider may specify values for a set of attributes the user desires the compute instance to have. For example, a user may specify the processor type, the region for hosting the compute instance, and the amount of memory the compute instance should have available. If the cloud computing provider is unable to meet one or more of the user's requirements, the cloud computing service may be unable to launch the requested compute instance, even if a functional equivalent is available. For example, the requested processor type may be available in a different region, or an equivalent processor architecture from a vendor other than the one requested may be available in the requested region.
[0004] The methods described in this chapter are methods that can be pursued, but they are not necessarily methods that have been conceived or pursued previously. Therefore, unless otherwise stated, none of the methods described in this chapter should be assumed to qualify as prior art solely for the reason of their inclusion in this chapter.
[0005] Embodiments are illustrated in the accompanying drawings as examples, not as limitations. It should be noted that references to “a certain” or “one” embodiment in this disclosure do not necessarily refer to the same embodiment, but rather mean at least one. [Brief explanation of the drawing]
[0006] [Figure 1] This block diagram illustrates one pattern for implementing cloud infrastructure as a service system, in at least one embodiment. [Figure 2] This block diagram illustrates another pattern for implementing cloud infrastructure as a service system, in at least one embodiment. [Figure 3]This block diagram illustrates another pattern for implementing cloud infrastructure as a service system, in at least one embodiment. [Figure 4] This block diagram illustrates another pattern for implementing cloud infrastructure as a service system, in at least one embodiment. [Figure 5] This is a block diagram illustrating an example computer system according to at least one embodiment. [Figure 6] This is a diagram illustrating a system according to one or more embodiments. [Figure 7] This figure illustrates an example of a graphical user interface according to one or more embodiments. [Figure 8A] This figure illustrates an example set of behaviors to present a graphical user interface for configuring and launching compute instances according to one or more embodiments. [Figure 8B] This figure illustrates an example set of behaviors to present a graphical user interface for configuring and launching compute instances according to one or more embodiments. [Figure 9] This figure illustrates an example set of behaviors for selecting an attribute for a configurable attribute when the user indicates that the system should select a value, according to one or more embodiments. [Figure 10] This figure illustrates an example of a graphical user interface according to one or more embodiments. [Figure 11] This figure illustrates an example of a graphical user interface according to one or more embodiments. [Figure 12] This figure illustrates an example of a graphical user interface according to one or more embodiments. [Modes for carrying out the invention]
[0007] Detailed explanation In the following description, for illustrative purposes, numerous specific details are explicitly stated to provide a thorough understanding. One or more embodiments may be practiced without these specific details. Features described in one embodiment may be combined with features described in different embodiments. In some examples, well-known structures and devices are described with reference to block diagrams to avoid unnecessarily obscuring the invention. 1.General overview 2. INFRASTRUCTURE AS A SERVICE 3. Compute Instance Configuration System Architecture 4. Graphical User Interface 5. Configure a compute instance. 6. Examples of Embodiments 7. Practical applications, benefits, and improvements 8. Computer networks and cloud networks 9. Miscellaneous notes, expansion A compute shape refers to a set of processing resources that can be allocated to a user as compute instances within a cloud service provider's environment to perform some function or set of functions. A compute instance is a specific compute shape defined by a particular processor type, the number of cores for the processor, and the amount of memory available for use by the processor. The processor type can be defined by the processor architecture, e.g., x86 or ARM, the processor vendor, e.g., Intel, AMD, or ARM, and the generation.
[0008] Compute instances can be further defined by additional configurable attributes, such as fault domains, availability domains, regions, and launch times. A fault domain refers to a set of hardware components (e.g., computers and switches) that share a single point of failure. An availability domain refers to a data sensor that is physically isolated from other data sensors and does not share resources such as power and cooling resources with other data sensors. A region is a geographical grouping of multiple availability domains (ADs). ADs within a region can be interconnected by a low-latency, high-bandwidth network. 1.General overview One or more embodiments configure a compute instance according to a system selection configuration constrained by user-specified criteria. Initially, the system receives a request to launch a compute instance. The request includes one or more user-specified criteria for a particular configurable attribute of the compute instance, but does not include any specific values for that particular configurable attribute of the compute instance. The system selects a value from a set of candidate values for the particular configurable attribute of the compute instance, at least in part on one or more user-specified criteria that constrain the possible values for that particular configurable attribute. The system launches the compute instance using the system selection value for the particular configurable attribute of the compute instance.
[0009] One or more embodiments select and launch a pool of n compute instances having the same value for at least one configurable attribute, based on one or more user-specified criteria and available resources. The system receives a request to launch a pool of n compute instances. The request includes one or more user-specified criteria for a particular configurable attribute. The system selects a value for the particular configurable attribute such that (a) the value satisfies the user-specified criteria and (b) there are sufficient resources to launch n compute instances using the same value for the particular configurable attribute for each of the n compute instances. The system launches n compute instances using the same value for the particular configurable attribute across each of the n compute instances.
[0010] One or more embodiments described herein and / or enumerated in the claims may not be included in this General Summary chapter. 2. INFRASTRUCTURE AS A SERVICE 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, the cloud computing provider may host infrastructure components (e.g., servers, storage devices, network nodes (e.g., hardware), deployment software, platform virtualization (e.g., hypervisor layer), or similar). In some cases, the IaaS provider may also supply various services associated with those infrastructure components (examples of such services include billing software, monitoring software, logging software, load balancing software, and clustering software). Therefore, since these services can be policy-driven, IaaS users may enforce policies to drive load balancing and maintain application availability and performance.
[0011] In some cases, IaaS customers may access resources and services over a wide area network (WAN), such as the internet, and install the rest of their application stack using the cloud provider's services. For example, a user may log into an IaaS platform, create virtual machines (VMs), install an operating system (OS) on each VM, deploy middleware such as databases, create storage buckets for workloads and backups, and even install enterprise software within those VMs. The customer can then use the provider's services to perform various functions, including balancing network traffic, troubleshooting application issues, monitoring performance, and managing disaster recovery.
[0012] In most cases, the cloud computing model requires the participation of a cloud provider. However, while a cloud provider can be a third-party service specializing in providing (e.g., offering, lending, selling) IaaS, it is not necessary for it to be such a third-party service. An entity may choose to deploy a private cloud and the entity itself may become a provider of infrastructure services.
[0013] In some examples, an IaaS deployment is the process of placing a new application, or a new version of an application, on a prepared application server or the like. It may also include the process of preparing the server (e.g., installing libraries, daemons, etc.). This is often managed by a cloud provider under a hypervisor layer (e.g., servers, storage, network hardware, and virtualization). Thus, a customer may play a role in handling the (OS), middleware, and / or application deployment (e.g., self-service virtual machines (e.g., that can be spun up on demand) or the like).
[0014] In some examples, IaaS provisioning refers to obtaining a computer or virtual host for use and further installing the required libraries or services on them. In most cases, deployment does not include provisioning, and provisioning may need to be done first.
[0015] In some cases, IaaS provisioning presents two distinct challenges. First, there is the initial challenge of provisioning an initial set of infrastructure before doing anything. Second, there is the challenge of developing the existing infrastructure after everything has been provisioned (e.g., adding new services, modifying services, removing services, etc.). In some cases, these two challenges can be addressed by allowing the infrastructure configuration to be defined declaratively. In other words, the infrastructure (e.g., what components are needed and how they interact) can be defined by one or more configuration files. Thus, the overall topology of the infrastructure (e.g., which resources depend on which and how they work together) can be described declaratively. In some cases, once the topology is defined, a workflow can be generated to create and / or manage the different components described within the configuration files.
[0016] In some examples, infrastructure can have many interconnected elements. For example, there may be one or more virtual private clouds (VPCs), also known as core networks (for example, perhaps a pool of configurable and / or shared computing resources on demand). In some examples, there may also be how inbound and / or outbound traffic for the network is set up, as well as one or more inbound / outbound traffic group rules provisioned to define one or more virtual machines (VMs). Other infrastructure elements, such as load balancers, databases, or similar, may also be provisioned. The more infrastructure elements desired and / or added, the more the infrastructure can evolve incrementally.
[0017] In some cases, sequential deployment techniques can be employed to enable the deployment of infrastructure code across various virtual computing environments. Additionally, the techniques described can enable infrastructure management within these environments. In some examples, a service team may write code that is to be deployed to one or more, but often many, different production environments (e.g., across various different geographical locations, sometimes even globally). However, in some examples, the infrastructure to which the code will be deployed must first be set up. In some cases, provisioning may be done manually, provisioning tools may be used to provision resources, and / or, once the infrastructure is provisioned, deployment tools may be used to deploy the code.
[0018] Figure 1 is a block diagram 100 illustrating an example pattern of an IaaS architecture according to at least one embodiment. A service operator 102 may be communicably coupled to a secure host tenancy 104, which may include a virtual cloud network (VCN) 106 and a secure host subnet 108. In some examples, the service operator 102 may use one or more client computing devices, which may be portable handheld devices (e.g., iPhone®, mobile phones, iPad®, computing tablets, personal digital assistants (PDAs)) or wearable devices (e.g., Google Glass® head-mounted displays), running software such as Microsoft Windows Mobile® and / or various mobile operating systems such as iOS, Windows Phone, Android, BlackBerry 8, Palm OS, and similar, and with the Internet, email, short message service (SMS), Blackberry®, or other communication protocols enabled. Alternatively, a client computing device could be a general-purpose personal computer, including, for example, personal computers and / or laptop computers running various versions of Microsoft Windows®, Apple Macintosh®, and / or Linux® operating systems. A client computing device could also be a workstation computer running any of various commercially available UNIX® or UNIX-like operating systems, including, for example, various GNU / Linux operating systems such as Google Chrome OS.Alternatively, or in addition, the client computing device may be any other electronic device, such as a thin client computer, an internet-enabled gaming system (e.g., a Microsoft Xbox game console with or without a Kinect® gesture input device), and / or a personal messaging device, that can communicate through a network that can access the VCN106 and / or the Internet.
[0019] VCN106 may include a local peering gateway (LPG) 110 which can be communicatively coupled to Secure Shell (SSH) VCN112 via LPG110 included in SSH VCN112. SSH VCN112 may include an SSH subnet 114, and SSH VCN112 may be communicatively coupled to control plane VCN116 via LPG110 included in control plane VCN116. Furthermore, SSH VCN112 may be communicatively coupled to data plane VCN118 via LPG110. Control plane VCN116 and data plane VCN118 may be included in a service tenancy 119 which may be owned and / or operated by an IaaS provider.
[0020] The control plane VCN 116 may include a control plane demilitarized zone (DMZ) layer 120 that acts as a peripheral network (e.g., a portion of the corporate network between the corporate intranet and the external network). DMZ-based servers have limited responsibilities and may help deter breaches. Additionally, the DMZ layer 120 may include a control plane application layer 124 that may include one or more load balancer (LB) subnets 122, an application subnet 126, and a control plane data layer 128 that may include a database (DB) subnet 130 (e.g., a front-end DB subnet and / or a back-end DB subnet). The LB subnet 122 included in the control plane DMZ layer 120 may be communicably coupled to the application subnet 126 included in the control plane application layer 124 and the internet gateway 134 included in the control plane VCN 116, and the application subnet 126 may be communicably coupled to the DB subnet 130 included in the control plane data layer 128, a service gateway 136, and a network address translation (NAT) gateway 138. The control plane VCN116 may include a service gateway 136 and a NAT gateway 138.
[0021] The control plane VCN 116 may include a data plane mirror application tier 140 which may include an application subnet 126. The application subnet 126 included in the data plane mirror application tier 140 may include a virtual network interface controller (VNIC) 142 which may run a compute instance 144. The compute instance 144 may communicatively connect the application subnet 126 of the data plane mirror application tier 140 to the application subnet 126 which may be included in the data plane application tier 146.
[0022] The data plane VCN 118 may include a data plane application tier 146, a data plane DMZ tier 148, and a data plane data tier 150. The data plane DMZ tier 148 may include an LB subnet 122 that can be communicatively coupled to the application subnet 126 of the data plane application tier 146 and the internet gateway 134 of the data plane VCN 118. The application subnet 126 may be communicatively coupled to the service gateway 136 of the data plane VCN 118 and the NAT gateway 138 of the data plane VCN 118. The data plane data tier 150 may also include a DB subnet 130 that can be communicatively coupled to the application subnet 126 of the data plane application tier 146.
[0023] The Internet gateway 134 of the control plane VCN116 and the Internet gateway 134 of the data plane VCN118 can be communicatively coupled to a metadata management service 152 which can be communicatively coupled to the public internet 154. The public internet 154 can be communicatively coupled to the NAT gateway 138 of the control plane VCN116 and the NAT gateway 138 of the data plane VCN118. The service gateway 136 of the control plane VCN116 and the service gateway 136 of the data plane VCN118 can be communicatively coupled to a cloud service 156.
[0024] In some examples, the service gateway 136 of the control plane VCN116 and the service gateway 136 of the data plane VCN118 can make application programming interface (API) calls to the cloud service 156 without going through the public internet 154. API calls from the service gateway 136 to the cloud service 156 can be unidirectional. The service gateway 136 can make an API call to the cloud service 156, and the cloud service 156 can send the requested data to the service gateway 136. However, the cloud service 156 does not have to initiate an API call to the service gateway 136.
[0025] In some examples, the secure host tenancy 104 may be directly connected to the service tenancy 119, otherwise the service tenancy 119 may be isolated. The secure host subnet 108 may communicate with the SSH subnet 114 through the LPG 110, which may enable bidirectional communication through otherwise isolated systems. Connecting the secure host subnet 108 to the SSH subnet 114 may give the secure host subnet 108 access to other entities within the service tenancy 119.
[0026] The control plane VCN116 may allow users of service tenancy 119 to set up or otherwise provision desired resources. Desired resources provisioned in the control plane VCN116 may be deployed within the data plane VCN118 or used separately. In some examples, the control plane VCN116 may be isolated from the data plane VCN118, and the data plane mirror application layer 140 of the control plane VCN116 may communicate with the data plane application layer 146 of the data plane VCN118 via a VNIC 142 which may be included in the data plane mirror application layer 140 and the data plane application layer 146.
[0027] In some examples, a system user or customer may perform requests, such as create, read, update, or delete (CRUD) operations, through the public internet 154, which can communicate requests to the metadata management service 152. The metadata management service 152 may communicate requests to the control plane VCN 116 through the internet gateway 134. Requests may be received by an LB subnet 122 included in the control plane DMZ layer 120. The LB subnet 122 may determine that the request is valid, and in response to this determination, the LB subnet 122 may transmit the request to an application subnet 126 included in the control plane application layer 124. If the request is confirmed and requires a call to the public internet 154, the call to the public internet 154 may be transmitted to a NAT gateway 138, which can make calls to the public internet 154. Metadata that may be desired to be stored by the request may be stored in the DB subnet 130.
[0028] In some examples, the data plane mirror application layer 140 may facilitate direct communication between the control plane VCN 116 and the data plane VCN 118. For example, it may be desirable that changes, updates, or other preferred modifications to the configuration be applied to the resources contained in the data plane VCN 118. Through VNIC 142, the control plane VCN 116 can communicate directly with the resources contained in the data plane VCN 118, thereby enabling it to perform changes, updates, or other preferred modifications to the configuration.
[0029] In some embodiments, the control plane VCN116 and data plane VCN118 may be included in the service tenancy 119. In this case, the system user or customer may not own or operate either the control plane VCN116 or the data plane VCN118. Instead, the IaaS provider may own or operate the control plane VCN116 and the data plane VCN118, and both may be included in the service tenancy 119. This embodiment may enable network isolation that can prevent a user or customer from interacting with the resources of other users or other customers. This embodiment may also enable the system user or customer to store databases privately without having to rely on the public internet 154, which may not have the desired level of threat protection for storage.
[0030] In another embodiment, the LB subnet 122 included in the control plane VCN 116 may be configured to receive signals from the service gateway 136. In this embodiment, the control plane VCN 116 and the data plane VCN 118 may be configured to be invoked by the IaaS provider's customer without calling the public internet 154. The IaaS provider's customer may prefer this embodiment because the database used by the customer may be controlled by the IaaS provider and stored in a service tenancy 119 that can be isolated from the public internet 154.
[0031] Figure 2 is a block diagram 200 illustrating another pattern example of an IaaS architecture according to at least one embodiment. A service operator 202 (e.g., service operator 102 in Figure 1) may be communicatively coupled to a secure host tenancy 204 (e.g., secure host tenancy 104 in Figure 1), which may include a virtual cloud network (VCN) 206 (e.g., VCN106 in Figure 1) and a secure host subnet 208 (e.g., secure host subnet 108 in Figure 1). VCN206 may include a local peering gateway (LPG) 210 (e.g., LPG110 in Figure 1), which may be communicatively coupled to a secure shell (SSH) VCN212 (e.g., SSH VCN112 in Figure 1) via an LPG110 contained in an SSH VCN212. SSH VCN212 may include SSH subnet 214 (e.g., SSH subnet 114 in Figure 1), and SSH VCN212 may be communicably coupled to control plane VCN216 (e.g., control plane VCN116 in Figure 1) via LPG210 included in control plane VCN216. Control plane VCN216 may be included in service tenancy 219 (e.g., service tenancy 119 in Figure 1), and data plane VCN218 (e.g., data plane VCN118 in Figure 1) may be included in customer tenancy 221, which may be owned or operated by a user or customer of the system.
[0032] The control plane VCN216 may include a control plane DMZ tier 220 (e.g., control plane DMZ tier 120 in Figure 1) which may include an LB subnet 222 (e.g., LB subnet 122 in Figure 1), a control plane application tier 224 (e.g., control plane application tier 124 in Figure 1) which may include an application subnet 226 (e.g., application subnet 126 in Figure 1), and a control plane data tier 228 (e.g., control plane data tier 128 in Figure 1) which may include a database (DB) subnet 230 (e.g., similar to DB subnet 130 in Figure 1). The LB subnet 222 included in the control plane DMZ tier 220 may be communicatively coupled to the application subnet 226 included in the control plane application tier 224, and to an internet gateway 234 (e.g., internet gateway 134 in Figure 1) which may be included in the control plane VCN 216. The application subnet 226 may be communicatively coupled to the DB subnet 230 included in the control plane data tier 228, and to a service gateway 236 (e.g., service gateway 136 in Figure 1), and to a network address translation (NAT) gateway 238 (e.g., NAT gateway 138 in Figure 1). The control plane VCN 216 may include the service gateway 236 and the NAT gateway 238.
[0033] The control plane VCN216 may include a data plane mirror application tier 240 (e.g., data plane mirror application tier 140 in Figure 1) which may include an application subnet 226. The application subnet 226 included in the data plane mirror application tier 240 may include a virtual network interface controller (VNIC) 242 (e.g., VNIC 142) which may run a compute instance 244 (e.g., similar to compute instance 144 in Figure 1). The compute instance 244 may facilitate communication between the application subnet 226 of the data plane mirror application tier 240 and the application subnet 226 included in the data plane application tier 246 (e.g., data plane application tier 146 in Figure 1) via the VNIC 242 included in the data plane mirror application tier 240 and the VNIC 242 included in the data plane application tier 246.
[0034] The Internet gateway 234 included in the control plane VCN216 may be communicably coupled to a metadata management service 252 (e.g., metadata management service 152 in Figure 1), which may be communicably coupled to the public internet 254 (e.g., public internet 154 in Figure 1). The public internet 254 may be communicably coupled to a NAT gateway 238 included in the control plane VCN216. The service gateway 236 included in the control plane VCN216 may be communicably coupled to a cloud service 256 (e.g., cloud service 156 in Figure 1).
[0035] In some examples, the data plane VCN218 may be included in a customer tenancy 221. In this case, the IaaS provider may provide a control plane VCN216 for each customer, and the IaaS provider may set up a unique compute instance 244 included in a service tenancy 219 for each customer. Each compute instance 244 may enable communication between the control plane VCN216 included in the service tenancy 219 and the data plane VCN218 included in the customer tenancy 221. The compute instance 244 may enable resources provisioned within the control plane VCN216 included in the service tenancy 219 to be deployed within the data plane VCN218 included in the customer tenancy 221, or to be used separately.
[0036] In another example, an IaaS provider's customer may have a database residing within customer tenancy 221. In this example, the control plane VCN 216 may include a data plane mirror app tier 240, which may include an app subnet 226. The data plane mirror app tier 240 may reside within data plane VCN 218, but does not have to. That is, the data plane mirror app tier 240 may have access to customer tenancy 221, but does not have to reside within data plane VCN 218, or may be owned or operated by the IaaS provider's customer. The data plane mirror app tier 240 may be configured to make calls to data plane VCN 218, but does not have to be configured to make calls to any entity contained within control plane VCN 216. Customers may wish to deploy resources in the data plane VCN218, which is provisioned within the control plane VCN216, or to use them separately, and the data plane mirror application tier 240 can facilitate the customer's desired deployment or other use of resources.
[0037] In some embodiments, a customer of the IaaS provider may apply filters to the data plane VCN218. In this embodiment, the customer may determine what the data plane VCN218 can access, and may restrict access from the data plane VCN218 to the public internet 254. The IaaS provider may not be able to apply filters to the data plane VCN218 or separately control its access to any external network or database. Applying filters and customer control over the data plane VCN218 included in the customer tenancy 221 may help isolate the data plane VCN218 from other customers and from the public internet 254.
[0038] In some embodiments, a cloud service 256 may be invoked by a service gateway 236 to access services that may not reside on the public internet 254, on the control plane VCN 216, or on the data plane VCN 218. The connection between the cloud service 256 and the control plane VCN 216 or data plane VCN 218 may not be live or continuous. The cloud service 256 may reside on different networks owned or operated by the IaaS provider. The cloud service 256 may be configured to receive calls from the service gateway 236 and not to receive calls from the public internet 254. Some cloud services 256 may be isolated from other cloud services 256, and the control plane VCN 216 may be isolated from cloud services 256 that may not be in the same region as the control plane VCN 216. For example, the control plane VCN 216 may be located in "Region 1", and the cloud service "Deployment 1" may be located in Region 1 and "Region 2". If a call to Deployment 1 is made by a service gateway 236 included in the control plane VCN216 located in Region 1, the call can be transmitted to Deployment 1 in Region 1. In this example, the control plane VCN216, or Deployment 1 in Region 1, does not need to be communicatively coupled to Deployment 1 in Region 2, nor does it need to be in separate communication with it.
[0039] Figure 3 is a block diagram 300 illustrating another pattern example of an IaaS architecture according to at least one embodiment. A service operator 302 (e.g., service operator 102 in Figure 1) may be communicatively coupled to a secure host tenancy 304 (e.g., secure host tenancy 104 in Figure 1), which may include a virtual cloud network (VCN) 306 (e.g., VCN106 in Figure 1) and a secure host subnet 308 (e.g., secure host subnet 108 in Figure 1). VCN 306 may include an LPG 310 (e.g., LPG110 in Figure 1), which may be communicatively coupled to an SSH VCN 312 (e.g., SSH VCN112 in Figure 1) via an LPG 310 contained in the SSH VCN 312. SSH VCN312 may include SSH subnet 314 (e.g., SSH subnet 114 in Figure 1), and SSH VCN312 may be communicably coupled to control plane VCN316 (e.g., control plane VCN116 in Figure 1) via LPG310 included in control plane VCN316, and to data plane VCN318 (e.g., data plane 118 in Figure 1) via LPG310 included in data plane VCN318. Control plane VCN316 and data plane VCN318 may be included in service tenancy 319 (e.g., service tenancy 119 in Figure 1).
[0040] The control plane VCN316 may include a control plane DMZ tier 320 (e.g., control plane DMZ tier 120 in Figure 1) which may include a load balancer (LB) subnet 322 (e.g., LB subnet 122 in Figure 1), a control plane application tier 324 (e.g., control plane application tier 124 in Figure 1) which may include an application subnet 326 (e.g., similar to application subnet 126 in Figure 1), and a control plane data tier 328 (e.g., control plane data tier 128 in Figure 1) which may include a DB subnet 330. An LB subnet 322, which may be included in the control plane DMZ tier 320, may be communicatively coupled to an application subnet 326, which may be included in the control plane application tier 324, and an internet gateway 334 (e.g., internet gateway 134 in Figure 1), which may be included in the control plane VCN 316. The application subnet 326 may be communicatively coupled to a DB subnet 330, which may be included in the control plane data tier 328, and a service gateway 336 (e.g., the service gateway in Figure 1), and a network address translation (NAT) gateway 338 (e.g., NAT gateway 138 in Figure 1). The control plane VCN 316 may include the service gateway 336 and the NAT gateway 338.
[0041] The data plane VCN318 may include a data plane application tier 346 (e.g., data plane application tier 146 in Figure 1), a data plane DMZ tier 348 (e.g., data plane DMZ tier 148 in Figure 1), and a data plane data tier 350 (e.g., data plane data tier 150 in Figure 1). The data plane DMZ tier 348 may include a trusted application subnet 360 and an untrusted application subnet 362 of the data plane application tier 346, as well as an LB subnet 322 that can be communicatively coupled to an internet gateway 334 included in the data plane VCN318. The trusted application subnet 360 may be communicatively coupled to a service gateway 336 included in the data plane VCN318, a NAT gateway 338 included in the data plane VCN318, and a DB subnet 330 included in the data plane data tier 350. The untrusted application subnet 362 may be communicatively coupled to a service gateway 336 included in the data plane VCN318 and a DB subnet 330 included in the data plane data tier 350. The data plane data tier 350 may include a DB subnet 330 that can be communicatively coupled to a service gateway 336 included in the data plane VCN 318.
[0042] An untrusted application subnet 362 may include one or more primary VNICs 364(1)-(N) that can be communicatively coupled to tenant virtual machines (VMs) 366(1)-(N). Each tenant VM 366(1)-(N) may be communicatively coupled to each application subnet 367(1)-(N) that may be included in each container egress VCN 368(1)-(N) that may be included in each customer tenancy 370(1)-(N). Each secondary VNIC 372(1)-(N) may facilitate communication between the untrusted application subnet 362 included in the data plane VCN 318 and the application subnets included in the container egress VCN 368(1)-(N). Each container egress VCN 368(1)-(N) may include a NAT gateway 338 that can be communicatively coupled to the public internet 354 (e.g., public internet 154 in Figure 1).
[0043] The Internet gateway 334 included in the control plane VCN316 and the Internet gateway 334 included in the data plane VCN318 can be communicatively coupled to a metadata management service 352 (e.g., the metadata management system 152 in Figure 1), which can be communicatively coupled to the public internet 354. The public internet 354 can be communicatively coupled to the NAT gateway 338 included in the control plane VCN316 and the NAT gateway 338 included in the data plane VCN318. The service gateway 336 included in the control plane VCN316 and the service gateway 336 included in the data plane VCN318 can be communicatively coupled to a cloud service 356.
[0044] In some embodiments, the data plane VCN318 may be integrated with a customer tenancy 370. This integration may be useful or desirable for the IaaS provider's customer in several cases, such as when support is desired when executing code. The customer may provide code to be executed that may be destructive, communicate with other customer resources, or otherwise cause undesirable effects. In response, the IaaS provider may decide whether to execute the code provided to the IaaS provider by the customer.
[0045] In some examples, an IaaS provider's customer may grant temporary network access to the IaaS provider and request functionality to be added to dataplane application tier 346. The code to perform the functionality may run within VM366(1)-(N), and the code may be configured to run elsewhere on dataplane VCN318. Each VM366(1)-(N) may be connected to one customer tenancy 370. Each container 371(1)-(N) contained within VM366(1)-(N) may be configured to run the code. In this case, there may be a double isolation that can help prevent inaccurate or otherwise undesirable code from damaging the IaaS provider's network or the network of a different customer (for example, container 371(1)-(N) may run the code, and container 371(1)-(N) may be contained within a VM366(1)-(N) that is in an untrusted application subnet 362). Containers 371(1)-(N) may be communicatively coupled to customer tenancy 370 and configured to send and receive data from customer tenancy 370. Containers 371(1)-(N) do not need to be configured to send and receive data from any other entities in the data plane VCN318. Upon completion of code execution, the IaaS provider may kill or otherwise discard containers 371(1)-(N).
[0046] In some embodiments, a trusted application subnet 360 may execute code owned or operated by the IaaS provider. In this embodiment, the trusted application subnet 360 may be communicatively coupled to a DB subnet 330 and may be configured to perform CRUD operations within the DB subnet 330. An untrusted application subnet 362 may be communicatively coupled to the DB subnet 330, but in this embodiment, the untrusted application subnet may be configured to perform read operations within the DB subnet 330. Containers 371(1)-(N) that may be contained in each customer's VM366(1)-(N) and that may execute code from the customer do not have to be communicatively coupled to the DB subnet 330.
[0047] In other embodiments, the control plane VCN316 and the data plane VCN318 do not have to be directly communicatively coupled. In this embodiment, direct communication between the control plane VCN316 and the data plane VCN318 is not required. However, communication may occur indirectly through at least one method. The LPG310 may be established by an IaaS provider that can facilitate communication between the control plane VCN316 and the data plane VCN318. In another example, the control plane VCN316 or the data plane VCN318 may make a call to the cloud service 356 via the service gateway 336. For example, a call from the control plane VCN316 to the cloud service 356 may include a request for a service that can communicate with the data plane VCN318.
[0048] Figure 4 is a block diagram 400 illustrating another pattern example of an IaaS architecture according to at least one embodiment. A service operator 402 (e.g., service operator 102 in Figure 1) may be communicatively coupled to a secure host tenancy 404 (e.g., secure host tenancy 104 in Figure 1), which may include a virtual cloud network (VCN) 406 (e.g., VCN106 in Figure 1) and a secure host subnet 408 (e.g., secure host subnet 108 in Figure 1). VCN 406 may include an LPG 410 (e.g., LPG110 in Figure 1), which may be communicatively coupled to an SSH VCN 412 (e.g., SSH VCN112 in Figure 1) via an LPG 410 contained in the SSH VCN 412. SSH VCN412 may include SSH subnet 414 (e.g., SSH subnet 114 in Figure 1), and SSH VCN412 may be communicably coupled to control plane VCN416 (e.g., control plane VCN116 in Figure 1) via LPG410 included in control plane VCN416, and to data plane VCN418 (e.g., data plane 118 in Figure 1) via LPG410 included in data plane VCN418. Control plane VCN416 and data plane VCN418 may be included in service tenancy 419 (e.g., service tenancy 119 in Figure 1).
[0049] The control plane VCN416 may include a control plane DMZ tier 420 (e.g., control plane DMZ tier 120 in Figure 1) which may include an LB subnet 422 (e.g., LB subnet 122 in Figure 1), a control plane application tier 424 (e.g., control plane application tier 124 in Figure 1) which may include an application subnet 426 (e.g., application subnet 126 in Figure 1), and a control plane data tier 428 (e.g., control plane data tier 128 in Figure 1) which may include a DB subnet 430 (e.g., DB subnet 330 in Figure 3). An LB subnet 422, which may be included in the control plane DMZ tier 420, may be communicatively coupled to an application subnet 426, which may be included in the control plane application tier 424, and an internet gateway 434 (e.g., internet gateway 134 in Figure 1), which may be included in the control plane VCN 416. The application subnet 426 may be communicatively coupled to a DB subnet 430, which may be included in the control plane data tier 428, and a service gateway 436 (e.g., the service gateway in Figure 1), and a network address translation (NAT) gateway 438 (e.g., NAT gateway 138 in Figure 1). The control plane VCN 416 may include the service gateway 436 and the NAT gateway 438.
[0050] The data plane VCN 418 may include a data plane application tier 446 (e.g., data plane application tier 146 in Figure 1), a data plane DMZ tier 448 (e.g., data plane DMZ tier 148 in Figure 1), and a data plane data tier 450 (e.g., data plane data tier 150 in Figure 1). The data plane DMZ tier 448 may include a trusted application subnet 460 (e.g., trusted application subnet 360 in Figure 3) and an untrusted application subnet 462 (e.g., untrusted application subnet 362 in Figure 3) of the data plane application tier 446, as well as an LB subnet 422 which can be communicatively coupled to an internet gateway 434 included in the data plane VCN 418. The trusted application subnet 460 may be communicatively coupled to a service gateway 436 included in the data plane VCN 418, a NAT gateway 438 included in the data plane VCN 418, and a DB subnet 430 included in the data plane data tier 450. An untrusted application subnet 462 may be communicatively coupled to a service gateway 436 included in the data plane VCN 418 and a DB subnet 430 included in the data plane data tier 450. The data plane data tier 450 may include a DB subnet 430 that can be communicatively coupled to a service gateway 436 included in the data plane VCN 418.
[0051] An untrusted application subnet 462 may include primary VNICs 464(1)-(N) that can be communicatively coupled to tenant virtual machines (VMs) 466(1)-(N) residing within the untrusted application subnet 462. Each tenant VM 466(1)-(N) may execute code within its respective container 467(1)-(N) and be communicatively coupled to an application subnet 426 that may be included in a dataplane application tier 446 that may be included in a container egress VCN 468. Each secondary VNIC 472(1)-(N) may facilitate communication between the untrusted application subnet 462 included in the dataplane VCN 418 and the application subnet included in the container egress VCN 468. The container egress VCN may include a NAT gateway 438 that can be communicatively coupled to the public internet 454 (e.g., public internet 154 in Figure 1).
[0052] The Internet gateway 434 included in the control plane VCN416 and the Internet gateway 434 included in the data plane VCN418 can be communicatively coupled to a metadata management service 452 (e.g., the metadata management system 152 in Figure 1), which can be communicatively coupled to the public internet 454. The public internet 454 can be communicatively coupled to the NAT gateway 438 included in the control plane VCN416 and the NAT gateway 438 included in the data plane VCN418. The service gateway 436 included in the control plane VCN416 and the service gateway 436 included in the data plane VCN418 can be communicatively coupled to a cloud service 456.
[0053] In some examples, the pattern illustrated by the architecture of block diagram 400 in Figure 4 may be considered an exception to the pattern illustrated by the architecture of block diagram 300 in Figure 3, and may be desirable for the IaaS provider's customers when the IaaS provider cannot communicate directly with the customers (e.g., in a disconnected region). Each container 467(1)-(N) contained within VM466(1)-(N) for each customer may be accessed by the customer in real time. Each container 467(1)-(N) may be configured to make calls to each secondary VNIC 472(1)-(N) contained within application subnet 426 of data plane application tier 446, which may be contained within container egress VCN468. The secondary VNIC 472(1)-(N) may carry calls to a NAT gateway 438, which may carry calls to the public internet 454. In this example, containers 467(1)-(N), which can be accessed by customers in real time, may be isolated from the control plane VCN416 and from other entities included in the data plane VCN418. Containers 467(1)-(N) may also be isolated from resources from other customers.
[0054] In another example, a customer may use containers 467(1)-(N) to invoke cloud service 456. In this example, the customer may execute code within containers 467(1)-(N) requesting a service from cloud service 456. Containers 467(1)-(N) may forward this request to secondary VNICs 472(1)-(N), which may forward the request to a NAT gateway, which may forward the request to the public internet 454. The public internet 454 may forward the request to LB subnet 422, which is included in control plane VCN 416, via internet gateway 434. In response to determining that the request is valid, the LB subnet may forward the request to application subnet 426, which may forward the request to cloud service 456 via service gateway 436.
[0055] It should be understood that the IaaS architectures 100, 200, 300, and 400 depicted in the figures may have other components besides those depicted. Furthermore, the embodiments shown in the figures are only some examples of cloud infrastructure systems that may incorporate embodiments of this disclosure. In some other embodiments, the IaaS system may have more or fewer components than shown in the figures, or may have two or more components combined, or may have components in different configurations or arrangements.
[0056] In one embodiment, the IaaS system described herein may include a set of applications, 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 Oracle Cloud Infrastructure (OCI) provided by the assignee.
[0057] Figure 5 illustrates an example computer system 500 in which various embodiments can be implemented. System 500 can be used to implement any of the computer systems described above. As shown in the figure, computer system 500 includes a processing unit 504 that communicates with several peripheral subsystems via a bus subsystem 502. These peripheral subsystems may include a processing accelerator 506, an I / O subsystem 508, a storage subsystem 518, and a communication subsystem 524. The storage subsystem 518 includes a tangible computer-readable storage medium 522 and system memory 510.
[0058] The bus subsystem 502 provides a mechanism for various components and subsystems of the computer system 500 to communicate with each other as intended. While the bus subsystem 502 is schematically shown as a single bus, alternative embodiments of the bus subsystem may utilize multiple buses. The bus subsystem 502 may be one of several types of bus structures, including a memory bus or memory controller, a peripheral bus, and a local bus using one of various bus architectures. For example, such architectures may include the Industry Standard Architecture (ISA) bus, the Microchannel Architecture (MCA) bus, the Enhanced ISA (EISA) bus, the VESA (Video Electronics Standards Association) local bus, and the Peripheral Component Interconnect (PCI) bus, which may be implemented as a mezzanine bus manufactured in accordance with the IEEE P1386.1 standard.
[0059] The processing unit 504, which can be implemented as one or more integrated circuits (e.g., conventional microprocessors or microcontrollers), controls the operation of the computer system 500. One or more processors may be included in the processing unit 504. These processors may include single-core or multi-core processors. In one embodiment, the processing unit 504 may be implemented as one or more independent processing units 532 and / or 534, each processing unit containing a single or multi-core processor. In another embodiment, the processing unit 504 may also be implemented as a quad-core processing unit formed by integrating two dual-core processors onto a single chip.
[0060] In various embodiments, the processing unit 504 may execute various programs in response to program code and may maintain multiple concurrently running programs or processes. At any given time, some or all of the program code to be executed may reside in the processor 504 and / or the storage subsystem 518. Through suitable programming, the processor 504 may provide the various functions described above. The computer system 500 may additionally include a processing accelerator 506 which may include a digital signal processor (DSP), a dedicated processor, and / or similar.
[0061] The I / O subsystem 508 may include user interface input devices and user interface output devices. User interface input devices may include pointing devices such as keyboards, mice or trackballs, touchpads or touchscreens integrated into displays, scroll wheels, click wheels, dials, buttons, switches, keypads, audio input devices with voice instruction recognition systems, microphones, and other types of input devices. User interface input devices may also include motion detection and / or gesture recognition devices such as Microsoft Kinect® motion sensors, which enable users to control and interact with input devices such as Microsoft Xbox® 360 game controllers through a natural user interface using gestures and voice instructions. User interface input devices may also include eye gesture recognition devices such as Google Glass® blink detectors, which detect eye activity from the user (e.g., blinking while taking a picture and / or selecting from a menu) and translate those eye gestures as input to an input device (e.g., Google Glass®). Additionally, the user interface input device may include a voice recognition detection device that allows the user to interact with a voice recognition system (e.g., Siri® Navigator) through voice commands.
[0062] User interface input devices may include, without limitation, three-dimensional (3D) mice, joysticks or pointing sticks, and graphic tablets, as well as audio / visual devices such as speakers, digital cameras, digital camcorders, portable media players, webcams, image scanners, fingerprint scanners, barcode readers, 3D scanners, 3D printers, laser rangefinders, and eye-tracking devices. Additionally, user interface input devices may include medical imaging input devices such as computed tomography, magnetic resonance imaging, positional emission tomography, and medical ultrasound devices. User interface input devices may also include audio input devices such as MIDI keyboards, digital musical instruments, and similar devices.
[0063] User interface output devices may include non-visual displays such as display subsystems, indicator lights, or audio output devices. Display subsystems may include flat panel devices such as those using cathode ray tubes (CRTs), liquid crystal displays (LCDs), or plasma displays, projection devices, touchscreens, and similar devices. In general, the use of the term “output device” is intended to include all possible types of devices and mechanisms for outputting information from the computer system 500 to a user or another computer. For example, user interface output devices may include, without limitation, a variety of display devices that visually convey text, graphics, and audio / video information, such as monitors, printers, speakers, headphones, car navigation systems, plotters, audio output devices, and modems.
[0064] The computer system 500 may include a storage subsystem 518 that provides a tangible, non-temporary, computer-readable storage medium for storing software and data structures that provide the functionality of the embodiments described herein. The software may include programs, code modules, instructions, scripts, etc., which, when executed by one or more cores or processors of the processing unit 504, provide the functionality described above. The storage subsystem 518 may also provide a repository for storing data used in accordance with this disclosure.
[0065] As illustrated in the example in Figure 5, the storage subsystem 518 may include various components, including system memory 510, a computer-readable storage medium 522, and a computer-readable storage medium reader 520. The system memory 510 may store program instructions that can be read and executed by the processing unit 504. The system memory 510 may also store data used during the execution of instructions and / or data generated during the execution of program instructions. Various different types of programs, including but not limited to client applications, web browsers, intermediate tier applications, relational database management systems (RDBMS), virtual machines, and containers, may be loaded into the system memory 510.
[0066] System memory 510 may also store an operating system 516. Examples of operating systems 516 may include various versions of Microsoft Windows®, Apple Macintosh®, and / or Linux operating systems, various commercially available UNIX® or UNIX-like operating systems (including, without limitation, various GNU / Linux operating systems, Google Chrome® OS, and similar ones), and / or mobile operating systems such as iOS, Windows® Phone, Android® OS, BlackBerry® OS, and Palm® OS. In one implementation in which the computer system 500 runs one or more virtual machines, the virtual machines, along with their guest operating systems (GOS), may be loaded into system memory 510 and run by one or more processors or cores of the processing unit 504.
[0067] The system memory 510 may be provided in different configurations depending on the type of computer system 500. For example, the system memory 510 may be volatile memory (such as random access memory (RAM)) and / or non-volatile memory (such as read-only memory (ROM) or flash memory). Different types of RAM configurations may be provided, including static random access memory (SRAM), dynamic random access memory (DRAM), and others. In some implementations, the system memory 510 may include a basic input / output system (BIOS) that contains basic routines to help transfer information between elements within the computer system 500, such as during startup.
[0068] The computer-readable storage medium 522 may represent a remote, local, fixed, and / or removable storage device, in addition to a storage medium for temporarily and / or more permanently containing and storing computer-readable information for use by the computer system 500, including instructions executable by the processing unit 504 of the computer system 500.
[0069] Computer-readable storage medium 522 may include, but is not limited to, any suitable medium known or used in the art, including storage and communication media, such as volatile and non-volatile removable and non-removable media, which are implemented in any method or technique 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 disk (DVD), or other optical storage, magnetic cassette, magnetic tape, magnetic disk storage or other magnetic storage devices, or other tangible computer-readable media.
[0070] For example, computer-readable storage media 522 may include hard disk drives that read from or write to non-removable non-volatile magnetic media, magnetic disk drives that read from or write to removable non-volatile magnetic disks, and optical disk drives that read from or write to removable non-volatile optical disks, such as CD-ROMs, DVDs, and Blu-ray® discs, or other optical media. Computer-readable storage media 522 may also include, but are not limited to, Zip® drives, flash memory cards, Universal Serial Bus (USB) flash drives, Secure Digital (SD) cards, DVD discs, digital videotapes, and similar devices. Computer-readable storage media 522 may also include solid-state drives (SSDs) based on non-volatile memory, such as flash memory-based SSDs, enterprise flash drives, solid-state ROMs, and similar devices; SSDs based on volatile memory, such as solid-state RAM, dynamic RAM, static RAM, DRAM-based SSDs, and magnetoresistive RAM (MRAM) SSDs; and hybrid SSDs that use a combination of DRAM and flash memory-based SSDs. Disk drives and their associated computer-readable media can provide non-volatile storage for computer-readable instructions, data structures, program modules, and other data for the computer system 500.
[0071] Machine-readable instructions executable by one or more processors or cores of the processing unit 504 may be stored in a non-temporary computer-readable storage medium. The non-temporary computer-readable storage medium may include physically tangible memory or storage devices, including volatile memory storage devices and / or non-volatile storage devices. Examples of non-temporary computer-readable storage media include magnetic storage media (e.g., disks or tapes), optical storage media (e.g., DVDs, CDs), various types of RAM, ROM, or flash memory, hard drives, floppy drives, removable memory drives (e.g., USB drives), or other types of storage devices.
[0072] The communication subsystem 524 provides interfaces to other computer systems and networks. The communication subsystem 524 acts as an interface for receiving data from other systems and for transmitting data from computer system 500 to other systems. For example, the communication subsystem 524 may enable computer system 500 to connect to one or more devices via the Internet. In some embodiments, the communication subsystem 524 may include radio frequency (RF) transceiver components for accessing wireless voice and / or data networks (e.g., cellular technology, advanced data network technologies such as 3G, 4G, or EDGE (Enhanced Data Rates for Global Evolution), WiFi (IEEE 802.11 family standards, or other mobile communication technologies, or any combination thereof), global positioning system (GPS) receiver components, and / or other components. In some embodiments, the communication subsystem 524 may provide, in addition to or instead of wireless interfaces, wired network connectivity (e.g., Ethernet®).
[0073] In some embodiments, the communication subsystem 524 may also receive input communications on behalf of one or more users who may have access to the computer system 500, in the form of structured and / or unstructured data feeds 526, event streams 528, event updates 530, and the like.
[0074] For example, the communications subsystem 524 may be configured to receive data feeds 526 in real time from users of social networks and / or other communications services, such as web feeds like Twitter® feeds, Facebook® updates, Rich Site Summary (RSS) feeds, and / or real-time updates from one or more third-party sources.
[0075] Additionally, the communication subsystem 524 may also be configured to receive data in the form of a continuous data stream, which may include an event stream 528 and / or event updates 530 of real-time events that are essentially continuous or unlimited with no explicit end. Examples of applications that generate continuous data may include, for example, sensor data applications, financial tickers, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, automotive traffic monitoring, and similar.
[0076] The communication subsystem 524 may also be configured to output structured and / or unstructured data feeds 526, event streams 528, event updates 530, and similar to one or more databases that may be in communication with one or more streaming data source computers coupled to the computer system 500.
[0077] Computer system 500 may be one of various types, including handheld portable devices (e.g., iPhone® mobile phones, iPad® computing tablets, PDAs), wearable devices (e.g., Google Glass® head-mounted displays), PCs, workstations, mainframes, kiosks, server racks, or any other data processing systems.
[0078] Due to the constantly changing nature of computers and networks, the description of the computer system 500 depicted in the figure is intended only as a specific example. Many other configurations are possible, having more or fewer components than the system depicted in the figure. For example, customized hardware may also be used, and / or certain elements may be implemented in hardware, firmware, software (including applets), or a combination thereof. Furthermore, connections to other computing devices, such as network input / output devices, may be used. Based on the disclosures and teachings provided herein, those skilled in the art will understand other ways and / or methods for carrying out various embodiments. 3. Compute Instance Configuration System Architecture Figure 6 illustrates a system 600 according to one or more embodiments. As illustrated in Figure 6, the system 600 includes an interface 602, a compute instance configuration manager 610, and a data repository 620. The compute instance configuration manager 610 may include one or more functional components such as a graphical user interface generator 612, a compute instance selector 616, a compute instance builder 618, and a machine learning algorithm 642.
[0079] In one or more embodiments, the system 600 may include more or fewer components than those illustrated in Figure 6. The components illustrated in Figure 6 may be local to each other or remote from each other. The components illustrated in Figure 6 may be implemented in software and / or hardware. Each component may be distributed across multiple applications and / or machines. Multiple components may be combined into a single application and / or machine. An operation described with respect to one component may instead be performed by another component.
[0080] In one or more embodiments, the compute instance configuration manager 610 refers to hardware and / or software configured to receive user input requesting the creation of a compute instance, select from various options to create a compute instance that meets the request, and launch the compute instance, as described herein. Examples of the operations for receiving user input requesting the creation of a compute instance, selecting from various options to create a compute instance that meets the request, and launching the compute instance are described below with reference to Figures 8A-8B and 9.
[0081] In one or more embodiments, the graphical user interface (GUI) generator 612 refers to hardware and / or software configured to perform the operations described herein for displaying one or more interface elements 614 within the GUI, receiving user input 630 through the interface elements 614, and providing information corresponding to the selection to the compute instance selector 616 and / or compute instance builder 618. For example, the GUI generator 612 may present interface elements corresponding to one or more configurable attributes. Interface elements may allow the user to indicate whether the system should select a value for a given configurable attribute, or whether the user should provide a value as the attribute value 632. Other interface elements may allow the user to select or input a specific value for a configurable attribute. Still other interface elements may allow the user to specify preferences and / or priorities that the system should consider when selecting a value for a configurable attribute. Examples of GUIs are discussed below with reference to Figures 7 and 10-12.
[0082] In one or more embodiments, the compute instance selector 616 refers to hardware and / or software configured to perform the actions described herein for selecting a value for a compute instance when the user indicates that the system should make a selection. The compute instance selector 616 may select a value for a configurable attribute based on user-specified criteria such as user preferences 634. The compute instance selector 616 may select a value for a configurable attribute based on system-specified parameters, such as vendor criteria 622, supply chain information 626, cost information 628, and / or availability information 629. In one or more embodiments, the compute instance selector 616 may select a value for a configurable attribute using a machine learning model 644 generated from a machine learning algorithm 642. In one or more embodiments, the compute instance selector 616 may select a value for a configurable attribute using instance selection logic 646.
[0083] In one or more embodiments, compute instance builder 618 refers to hardware and / or software configured to receive configurable attribute values of system selection and configurable attribute values of user selection, and to perform the operations described herein for creating and launching a specific compute instance based on the configurable attribute values. For example, compute instance builder 618 may allocate to a requesting user several cores for a specific processing unit of a processor type within a specific region and / or availability domain. Compute instance builder 618 may then make the allocated cores available to the requesting user, along with any additional resources such as network and storage that the user may need to utilize the compute instance.
[0084] In one or more embodiments, the data repository 620 is any type of storage device and / or device for storing data (e.g., a file system, a database, a set of tables, or any other storage mechanism). Furthermore, the data repository 620 may include multiple different storage devices and / or devices. These multiple different storage devices and / or devices may or may not be of the same type, or may or may not be located in the same physical location. Furthermore, the data repository 620 may be implemented or run on the same computing system as the compute instance configuration manager 610. Alternatively or additionally, the data repository 620 may be implemented or run on a different computing system than the compute instance configuration manager 610. The data repository 620 may be communicably coupled to the compute instance configuration manager 610 via a direct connection or via a network.
[0085] Vendor Criteria 622 may include one or more parameters relating to the resources, business model, or other factors of the cloud service provider that System 600 will consider when selecting specific values for configurable attributes. Supply Chain Information 626 may include information about installed compute shape resources and information about compute shape resources that are planned but have not yet been supplied or installed. Cost Information 628 may include information about the cost of acquiring compute shape resources, the cost of operating compute shape resources, and / or the benefits associated with operating compute resources. Availability Information 629 may include information about which compute shape resources are in use and therefore unavailable, and which compute shape resources are not in use and therefore available for allocation to users.
[0086] Data repository 620 may contain information about compute shape 624. Compute shape information 624 may contain information about the type of compute shape that the cloud service provider provides to the user, along with the information required to launch compute instances from the compute shape.
[0087] Information describing the compute instance configuration manager 610 may be implemented across any of the components within the system 600. However, for clarity and explanatory purposes, this information is illustrated within the data repository 620.
[0088] In one or more embodiments, the instance selection logic 646 may include logic for selecting specific values for configurable attributes of compute instances. The instance selection logic 646 may include, for example, one or more decision trees for selecting values for configurable attributes. The instance selection logic 646 may include a weighted expression that aggregates system and / or user preferences into a ranked list of available compute shapes.
[0089] In one or more embodiments, the machine learning algorithm 642 is an algorithm that can be iterated upon to learn a target model f that best maps a set of input variables to output variables. In particular, the machine learning algorithm 642 is configured to generate and / or train a machine learning model 644.
[0090] A machine learning algorithm is an algorithm that can be iterated upon to learn a target model f that best maps a set of input variables to output variables, using a set of training data. The training data includes a dataset and associated labels. The dataset is associated with the input variables for the target model f. The associated labels are associated with the output variables of the target model f. The training data can be updated, for example, based on feedback on the accuracy of the current target model f. The updated training data is fed back to the machine learning algorithm, which then updates the target model f.
[0091] The machine learning algorithm 642 generates a target model f such that the target model f best fits the training data dataset to the labels of the training data. Additionally, or alternatively, the machine learning algorithm 642 generates a target model f such that, when the target model f is applied to the training data dataset, the maximum number of results determined by the target model f matches the labels of the training data. Different target models are generated based on different machine learning algorithms and / or different sets of training data.
[0092] Machine learning algorithms 642 may include supervised and / or unsupervised components. Various types of algorithms may be used, such as linear regression, logistic regression, linear discriminant analysis, classification and regression trees, naive Bayes, k nearest neighbors, learning vector quantization, support vector machines, bagging and random forests, boosting, backpropagation, and / or clustering.
[0093] In embodiments, the compute instance configuration manager 610 is implemented on one or more digital devices. The term “digital device” generally refers to any hardware device including a processor. A digital device may refer to a physical device on which an application or virtual machine runs. Examples of digital devices include computers, tablets, laptops, desktops, netbooks, servers, web servers, network policy servers, proxy servers, general-purpose machines, hardware devices for specific functions, hardware routers, hardware switches, hardware firewalls, hardware network address translation devices (NATs), hardware load balancers, mainframes, televisions, content receivers, set-top boxes, printers, mobile handsets, smartphones, personal digital assistants (PDAs), wireless receivers and / or transmitters, base stations, communication management devices, routers, switches, controllers, access points, and / or client devices.
[0094] In one or more embodiments, interface 602 refers to hardware and / or software configured to facilitate communication between a user and a compute instance configuration manager 610. Interface 602 renders user interface elements, such as interface element 614, and receives input through user interface elements. Examples of interfaces include graphical user interfaces (GUIs), command-line interfaces (CLIs), haptic interfaces, application programming interfaces (APIs) accessed via a console, and voice instruction interfaces. Examples of user interface elements include checkboxes, radio buttons, drop-down lists, list boxes, buttons, toggles, text fields, date and time selectors, command lines, sliders, pages, and forms.
[0095] In this embodiment, different components of interface 602 are specified in different languages. The behavior of user interface elements is specified in a dynamic programming language such as JavaScript. The content of user interface elements is specified in a markup language such as Hypertext Markup Language (HTML) or XML User Interface Language (XUL). The layout of user interface elements is specified in a stylesheet language such as Cascading Style Sheets (CSS). Alternatively, interface 602 is specified in one or more other languages such as Java, C, or C++.
[0096] Additional embodiments and / or examples related to computer networks are described below in Chapter 8, titled “Computer Networks and Cloud Networks.” 4. Graphical User Interface Figure 7 illustrates an example of a graphical user interface 702 that may be generated by the graphical user interface generator 612. The graphical user interface 702 may be presented via interface 602. As shown, the graphical user interface 702 presents four interface elements: a configurable attribute element 712, a configurable attribute element 722, an attribute value setting element 730, and a compute instance creation selection element 740.
[0097] Interface element 712 represents a configurable attribute 710 and includes selectable components 714 and 716. Selectable component 714, when selected by the user, corresponds to a choice to allow the system to select a value for the configurable attribute 710. Selectable component 716, when selected by the user, corresponds to a choice to allow the user to select a value for the configurable attribute 710. Similarly, interface element 722 represents a configurable attribute 720 and includes selectable components 724 and 726. Selectable component 724, when selected by the user, corresponds to a choice to allow the system to select a value for the configurable attribute 720. Selectable component 726, when selected by the user, corresponds to a choice to allow the user to select a value for the configurable attribute 720. In the illustrated example, the user selected selectable elements 714 and 726.
[0098] In response to receiving a selection of a selectable element corresponding to a user selection, for example, element 726, GUI 702 may present an interface element 730. Interface element 730 may include one or more input elements, such as input elements 732 and 734. The input elements may allow the user to select from a set of values for configurable attributes. The input elements may provide acceptable values for selection, for example, as a menu, checklist, slider bar, or any other interface element for selection. The input elements may allow the user to enter values, for example, by manually typing them in, or in a text input field where values can be entered separately.
[0099] Once the user has selected their desired settings for those compute instances, the user may select a compute instance creation element 740. In response to that selection, the compute instance selector 616 may select values for any configurable attributes, for example, the system-selected values for the configurable attribute 710. The compute instance builder 617 may then launch the compute instances based on the system-selected values and the user-selected values. 5. Configure a compute instance. Figures 8A and 8B illustrate an example set of actions for presenting a graphical user interface for configuring and launching compute instances according to one or more embodiments. One or more actions illustrated in Figures 8A-8B may be collectively modified, rearranged, or omitted. Therefore, any particular sequence of actions illustrated in Figures 8A-8B should not be construed as limiting the scope of one or more embodiments.
[0100] The graphical user interface generator 612 can display a graphical user interface (GUI) having one or more elements, each representing a different configurable attribute, and selectable components for configuring each respective configurable attribute (operation 802). For example, an interface element corresponding to a configurable attribute may include the name of the configurable attribute, a first selectable component indicating that the system should select a value, and a second selectable component indicating that the user selects a value.
[0101] The GUI generator 612 may receive a configuration for selectable attributes (operation 804). The user may select either a first selectable component or a second selectable component for a configurable attribute. The selection of the first or second selectable component may be mutually exclusive.
[0102] The GUI generator 612 can determine whether the user has selected a first selectable component or a second selectable component for a configurable attribute (operation 806). If the user has selected a first selectable component, the GUI generator 612 stores an index of the system selection for the configurable attribute (operation 808). If the user has selected a second selectable component, the GUI generator 612 stores an index of the user selection for the configurable attribute (operation 810).
[0103] The GUI generator 612 may determine whether there are any remaining configurable attribute selections to process (operation 812). If there are, the GUI generator may return to operation 804 to receive configurations for other configurable attributes.
[0104] When the GUI generator 612 has received all the configurations for the configurable attributes to be displayed in the GUI, the system proceeds to the operation shown in Figure 8B.
[0105] The compute instance builder 618 may begin configuring the compute instance (operation 822). In some embodiments, the user may select an interface element to indicate that the user's request is complete and that the user wishes to create the compute instance.
[0106] The compute instance builder 618 may select a configurable attribute for a compute instance (action 824). For example, the compute instance builder 618 may select one of the configurable attributes for a compute instance, such as processor type, availability domain, failure domain, region, or launch time.
[0107] The compute instance builder 618 may determine which type of configuration has been selected for the configurable attribute (operation 826). The compute instance builder 618 may, for example, retrieve a stored configuration for the configurable attribute.
[0108] The compute instance builder 618 may determine which type of configuration has been stored for a configurable attribute (operation 826). When the configuration is a system-selected attribute, the compute instance selector 616 selects a value for the configurable attribute (operation 828). The compute instance selector 616 may select a value for a configurable attribute from the available resources according to one or more vendor-specific criteria, one or more user preferences, or both. For example, a vendor-specific criterion for a processor generation value might be to first select the latest generation. For an availability domain configuration attribute value, a vendor-specific criterion might be to select the availability domain with the least used processor cores available. Some user preferences may indicate that a user prefers one value for a configuration attribute over several other values and may include a priority ranking of multiple possible values. Other user preferences may indicate that a user wants to specifically include a first value if available, or exclude a second value for a configurable attribute. In one or more embodiments, the compute instance selector 616 may consider multiple vendor-specific criteria and / or multiple user preferences. The multiple vendor-specific criteria and / or user preferences may be weighted relative to each other.
[0109] The compute instance selector 616 may use instance selection logic 645 to select values for configurable attributes. Alternatively, the compute instance selector 616 may use a machine learning model 644 to select values for configurable attributes.
[0110] When the configuration is for a user-selected value, the GUI generator 612 displays an input element to receive user input specifying the value (operation 830). The input element may contain a default set of possible values or a range of possible values from which the user can select. The input element may be an input field from which the user can insert any value. The GUI generator 612 or compute instance builder 618 may check that the user-inserted value is a valid selection and may prompt the user to change those inputs if the value is not valid for the configurable attribute. The GUI generator 612 receives user input of values for the configurable attribute (operation 832).
[0111] Alternatively, in some embodiments, the second optional component may include an input component so that the user can simultaneously indicate that a value is being provided by providing a value in operation 804. In some embodiments, operations 830 and 832 may be performed before operation 810 instead.
[0112] The compute instance builder 618 determines whether there are any additional configurable attribute selections to process (operation 834). If there are additional configurable attribute selections, the compute instance builder 618 returns to operation 824 to select the next configurable attribute.
[0113] When there are no configurable attribute selections remaining to process, the compute instance builder 618 configures the compute instance attributes according to the system selection values and user selection values, and then launches the compute instance.
[0114] Figure 9 illustrates an example of a set of actions for selecting an attribute for a configurable attribute when the user indicates that the system should select a value, according to one or more embodiments. One or more actions illustrated in Figure 9 may be modified, rearranged, or omitted collectively. Therefore, no particular sequence of actions illustrated in Figure 9 should be construed as limiting the scope of one or more embodiments.
[0115] The compute instance builder 618 may receive a request to create a compute instance (operation 902). The request may include user input specifying one or more criteria for the configurable attributes of the compute instance, without including specific values for the configurable attributes. For example, the request may include criteria for the architecture type of processor, without specifying the vendor or generation. In another example, the request may include criteria for the North American region, without specifying a particular region.
[0116] The compute instance selector 616 may select specific values for configurable attributes from a set of candidate values based on one or more criteria (operation 904). The compute instance selector 616 may first determine which compute instance resources are available, for example, by evaluating compute shape 624 and availability information 629. The compute instance selector 616 may then determine a set of candidate values from the available resources. For example, the compute instance selector 616 may identify which processors of a given processor architecture are available.
[0117] The compute instance selector 616 may select a specific value from a set of candidate values according to one or more vendor-specific criteria, one or more user preferences, or both. For example, a vendor-specific criterion for a processor of a particular architecture type value might be to first select the latest generation of any available processor of that architecture type, or to select an available processor of the specified architecture type from the availability domain that has the most available processors. In one or more embodiments, the compute instance selector 616 may consider multiple vendor-specific criteria and / or multiple user preferences. Multiple vendor-specific criteria and / or user preferences may be weighted against each other.
[0118] The compute instance selector 616 may use instance selection logic 645 to select values for configurable attributes. Alternatively, the compute instance selector 616 may use a machine learning model 644 to select values for configurable attributes.
[0119] The compute instance selector 616 may store system selection values in relation to configurable attributes (operation 906). One or more embodiments may use the stored system selection values for configurable attributes to train or correct a machine learning model 644. One or more embodiments may store system selection values beyond the lifetime of a particular compute instance for a user and may use system selection values to create subsequent compute instances for the user.
[0120] The compute instance builder 618 may launch compute instances based on system selection values for configurable attributes (operation 908). For example, the compute instance builder 618 may allocate a compute shape consisting of specific processor units within a specific availability domain in a specific region, and may also provide access to that compute shape to a user. 6. Examples of Embodiments Detailed examples are described below for the sake of clarity. The components and / or operations described below should be understood as one specific example, which may not be applicable to all embodiments. Accordingly, the components and / or operations described below should not be construed as limiting the scope of any of the claims.
[0121] Figure 10 illustrates an example of a graphical user interface 1002 that allows a user to set preferences regarding how the system should select values for configurable attributes when the user specifies that the system should select values. In particular, the graphical user interface 1002 may allow the user to indicate which configurable attribute values should be included or excluded from the system's configurable attribute value setting behavior. In the illustrated example, the graphical user interface 1002 shows several possible values for a configurable attribute of a processor type. The configurable attribute of a processor type for a processor architecture, e.g., an x86 processor architecture, may be further specified by the processor vendor, e.g., Intel or AMD, and the generation, e.g., E2, E3, X7, X9.
[0122] The graphical user interface 1002 may list possible values for a given configurable attribute, e.g., vendor 1 (1012) and vendor 2 (1014). Each possible value may be represented by an including user interface element, e.g., 1022a, and an excluding user interface element, e.g., 1022b. The user may select an including user interface element to specify that the corresponding value should be included as a possible value when the system selects a value for a configurable attribute. The user may select an excluding user interface element to specify that the corresponding value should be excluded from the possible values when the system selects a value for a configurable attribute. As illustrated, the user selected to include vendor 1 and exclude generation 1 (1016). When neither an including nor an excluding user interface element is selected, the system may consider the corresponding value as a possible value for the configurable attribute, while prioritizing any value specifically included by the user. For example, the system may first attempt to provide a vendor 1 processor from either generation 2 or generation 3, if available. If a vendor 1 processor is not available, the system may then attempt to provide a vendor 2 processor from either generation 2 or generation 3.
[0123] Figure 11 illustrates an example of a graphical user interface 1102 that allows a user to set preferences regarding how the system should select values for configurable attributes when the user specifies that the system should select values. In particular, the graphical user interface 1102 allows the user to rank, prioritize, or separately order various possible values for configurable attributes. In the illustrated example, the graphical user interface 1102 provides values for a configurable attribute of a processor architecture type. The processor architecture, for example, the x86 architecture, may be available from vendor 1 (1112a) or vendor 2 (1112b). The processor architecture may be available in generation 1 (1114a), generation 2 (111b), and generation 3 (1114c). As illustrated, the user entered a priority or rank of "1" in the user interface element 1122b corresponding to vendor 2, and a priority or rank of "2" in the user interface element 1122a corresponding to vendor 1. The user also entered a priority or rank of "1" for user interface element 1124b corresponding to generation 2, a priority or rank of "2" for user interface element 1124c corresponding to generation 3, and a priority or rank of "3" for user interface element 1124a corresponding to generation 1.
[0124] According to the illustrated preferences, in one or more embodiments, when a user chooses to have the system select a value for a processor type within a processor architecture, the system may first attempt to select a generation 2 processor from vendor 2. If none are available, the system may then attempt to select a generation 2 processor from vendor 1 or a generation 3 processor from vendor 2. In one or more embodiments, the user or the system may assign weights to different configurable attributes and change the values of lower-weighted attributes before changing the values of higher-weighted attributes.
[0125] When a user selects a user interface element 1140 to save their preferences, the system may save that value as user preference 634 for subsequent compute instance creation operations.
[0126] Figure 12 shows an example of a graphical user interface 1202 that allows a user to create multiple compute instances that all share at least one common configurable attribute value. In the illustrated example, user interface element 1204 allows the user to input several compute instances to be created, for example, four compute instances. User interface element 1206 allows the user to specify a configurable attribute value that all compute instances share, for example, an x86 processor architecture from vendor 1. Interface elements 1204 and 1206 may be text input boxes, drop-down menus, or any other type of interface element that allows the user to input or select values.
[0127] In one or more embodiments, the graphical user interface 1202 may further provide one or more additional user interface elements corresponding to other configurable attributes to enable the user to choose whether the value of a corresponding configurable attribute is a system selection or a user selection. For example, user interface element 1210 corresponds to a configurable attribute of an availability domain, and user interface element 1212 corresponds to a configurable attribute of a region. In the illustrated example, the user chose to have the system select an availability domain.
[0128] The user also chose to select a value for the region. The graphical user interface 1202 therefore presents a user interface element 1230 to allow the user to select a specific value for the region. As illustrated, the user selected the user interface element 1232 corresponding to the value "Region 1".
[0129] In the illustrated example, when a user uses user interface element 1240 to create a pool of compute instances, the system may identify a first set of vendor 1 x86 compute instances in region 1. The system may select a first set of vendor 1 x86 compute instances in a first availability domain. The system may determine that the number of available compute instances in the first set of compute instances does not meet the specified number of multiple compute instances requested, which is 4.
[0130] The system may then identify a second set of Vendor 1 x86 compute instances in Region 1 within a different availability domain. If the number of available compute instances in the second set of compute instances satisfies the specified number of multiple compute instances requested, which is 4, the system may select the second set of compute instances and launch the specified number of compute instances in the second set.
[0131] In some cases, the user may specify a specific value for a configurable attribute, such as an x86 processor, rather than a category, without vendor selection. In these cases, the system may determine a set of candidate values within the category for the configurable attribute. The system may then select a specific value for the configurable attribute from the set of candidate values based on available resources, and may also launch a pool of requested compute instances having the system-selected value for the configurable attribute. 7. Practical applications, benefits, and improvements Traditionally, cloud service providers may require users to specify all values for the configurable attributes of a compute instance. If no available compute shape exists that satisfies all of the values specified by the user, the user may be unable to use the cloud service or may need to restart their request with one or more new values. Other cloud service providers may not allow users to select any specific values for a compute instance. The user may gain access to a compute instance, but the compute instance may not meet the user's needs.
[0132] One or more embodiments described herein provide a more flexible and customizable approach to providing compute instances that enable users to indicate which attributes they are agnostic to and for which attributes they wish to set specific values. This allows cloud service providers to expand their search from all available compute resources that still meet the user's specific needs. 8. Computer networks and cloud networks In one or more embodiments, a computer network provides connectivity between sets of nodes. Nodes may be local to each other or remote from each other. Nodes are connected by a set of links. Examples of links include coaxial cables, unshielded twisted cables, copper cables, optical fibers, and virtual links.
[0133] A subnet of nodes implements a computer network. Examples of such nodes include switches, routers, firewalls, and network address translation devices (NATs). Another subset of nodes uses a computer network. Such nodes (also called "hosts") may run client processes and / or server processes. A client process makes requests for computing services (such as running a specific application and / or storing a specific amount of data). A server process responds by performing the requested service and / or returning the corresponding data.
[0134] A computer network can be a physical network that includes physical nodes connected by physical links. A physical node is any digital device. A physical node can be a hardware device with a specific function, such as a hardware switch, hardware router, hardware firewall, and hardware NAT. Additionally or alternatively, a physical node can be a general-purpose machine configured to run various virtual machines and / or applications that perform their respective functions. A physical link is a physical medium that connects two or more physical nodes. Examples of links include coaxial cables, unshielded twisted cables, copper cables, and optical fibers.
[0135] A computer network can be an overlay network. An overlay network is a logical network implemented on top of another network (such as a physical network). Each node in the overlay network corresponds to each node in the underlying network. Therefore, each node in the overlay network is associated with both an overlay address (for addressing the overlay node) and an underlay address (for addressing the underlay node that implements the overlay node). Overlay nodes can be digital devices and / or software processes (such as virtual machines, application instances, or threads). Links connecting overlay nodes are implemented as tunnels through the underlying network. Overlay nodes at both ends of the tunnel treat the underlying multi-hop path between them as a single logical link. Tunneling is performed through encapsulation and decapsulation.
[0136] In embodiments, a client may be local to and / or remote from a computer network. A client may access the computer network through a private network or another computer network such as the Internet. A client may communicate requests to the computer network using a communication protocol such as Hypertext Transfer Protocol (HTTP). Requests are communicated through an interface such as a client interface (e.g., a web browser), a program interface, or an application programming interface (API).
[0137] In an embodiment, a computer network provides connectivity between clients and network resources. Network resources include hardware and / or software configured to run server processes. Examples of network resources include processors, data storage, virtual machines, containers, and / or software applications. Network resources are shared among multiple clients. Clients request computing services from the computer network independently of each other. Network resources are dynamically allocated to requests and / or clients on demand. The network resources allocated to each request and / or client may be scaled up or down based, for example, (a) computing services requested by a particular client, (b) aggregated computing services requested by a particular tenant, and / or (c) the computer network's requested aggregated computing services. Such a computer network may be referred to as a “cloud network”.
[0138] In embodiments, a service provider provides a cloud network to one or more end users. Various service models, including but not limited to Software-as-a-Service (SaaS), Platform-as-a-Service (PaaS), and Infrastructure-as-a-Service (IaaS), can be implemented by the cloud network. In SaaS, the service provider provides end users with the ability to use the service provider's applications running on network resources. In PaaS, the service provider provides end users with the ability to deploy custom applications on network resources. Custom applications may be created using programming languages, libraries, services, and tools supported by the service provider. In IaaS, the service provider provides end users with the ability to provision processing, storage, networking, and other basic computing resources provided by the network resources. Any application, including an operating system, can be deployed on network resources.
[0139] In embodiments, various deployment models can be implemented by computer networks, including but not limited to private clouds, public clouds, and hybrid clouds. In a private cloud, network resources are provisioned for exclusive use by a specific group of one or more entities (the term “entity” as used herein means a company, organization, individual, or other entity). Network resources may be local to and / or remote from the location of the specific group of entities. In a public cloud, cloud resources are provisioned for multiple entities (also referred to as “tenants” or “customers”) that are independent of each other. The computer network and its network resources are accessed by clients corresponding to different tenants. Such a computer network may be referred to as a “multitenant computer network.” Several tenants may use the same particular network resources at different times and / or at the same time. Network resources may be local to and / or remote from the location of the tenants. In a hybrid cloud, the computer network comprises a private cloud and a public cloud. The interface between the private cloud and the public cloud enables data and application portability. Data stored in a private cloud and data stored in a public cloud can be exchanged through an interface. Applications implemented in a private cloud and applications implemented in a public cloud may have dependencies on each other. Calls from applications in a private cloud to applications in a public cloud (and vice versa) can be performed through an interface.
[0140] In embodiments, tenants in a multi-tenant computer network are independent of each other. For example, the business or operations of one tenant may be separate from the business or operations of another tenant. Different tenants may have different network requirements for the computer network. Examples of network requirements include processing speed, data storage volume, security requirements, performance requirements, throughput requirements, latency requirements, resilience requirements, Quality of Service (QoS) requirements, tenant isolation, and / or consistency. The same computer network may need to implement different network requirements demanded by different tenants.
[0141] In one or more embodiments, in a multi-tenant computer network, tenant isolation is implemented to ensure that applications and / or data of different tenants are not shared with one another. Various tenant isolation techniques can be used.
[0142] In this embodiment, each tenant is associated with a tenant ID. Each network resource in a multi-tenant computer network is tagged with the tenant ID. A tenant is granted access to a specific network resource only if that tenant and that specific network resource are associated with the same tenant ID.
[0143] In this embodiment, each tenant is associated with a tenant ID. Each application implemented by the computer network is tagged with the tenant ID. Additionally or alternatively, each data structure and / or dataset stored by the computer network is tagged with the tenant ID. A tenant is granted access to a particular application, data structure, and / or dataset only if that tenant and its particular application, data structure, and / or dataset are associated with the same tenant ID.
[0144] For example, each database implemented by a multi-tenant computer network may be tagged with a tenant ID. Only tenants associated with the corresponding tenant ID can access the data in a particular database. As another example, each entry in a database implemented by a multi-tenant computer network may be tagged with a tenant ID. Only tenants associated with the corresponding tenant ID can access the data in a particular entry. However, the database may be shared by multiple tenants.
[0145] In this embodiment, the subscription list indicates which tenants have permission to access which applications. For each application, a list of tenant IDs of tenants granted permission to access the application is stored. A tenant is permitted access to a particular application only if their tenant ID is included in the subscription list corresponding to that particular application.
[0146] In this embodiment, network resources corresponding to different tenants (such as digital devices, virtual machines, application instances, and threads) are separated into tenant-specific overlay networks managed by a multi-tenant computer network. For example, packets from any source device within a tenant overlay network can only be transmitted to other devices within the same tenant overlay network. Encapsulation tunnels are used to prevent any transmission from a source device on one tenant overlay network to devices in other tenant overlay networks. Specifically, packets received from a source device are encapsulated within an outer packet. The outer packet is transmitted from a first encapsulation tunnel endpoint (communicating with a source device within the tenant overlay network) to a second encapsulation tunnel endpoint (communicating with a destination device within the tenant overlay network). The second encapsulation tunnel endpoint decapsulates the outer packet to obtain the original packet transmitted by the source device. The original packet is then transmitted from the second encapsulation tunnel endpoint to a destination device within the same specific overlay network. 9. Miscellaneous notes, expansion Embodiments relate to systems comprising one or more devices, including a hardware processor, and configured to perform any of the operations described herein and / or enumerated in any of the following claims.
[0147] In embodiments, a non-temporary computer-readable storage medium includes instructions that, when executed by one or more hardware processors, cause the execution of any of the operations described herein and / or enumerated in any of the following claims.
[0148] While specific embodiments are described, various embodiments, modifications, changes, alternative structures, and equivalents are also included within the scope of this disclosure. The embodiments are not limited to operation within a particular data processing environment, but can freely operate within multiple data processing environments. Additionally, while the embodiments are described using a specific set of transactions and steps, those skilled in the art will understand that the scope of this disclosure is not limited to the described set of transactions and steps. The various features and aspects of the embodiments described above may be used individually or in combination.
[0149] Furthermore, while embodiments are described using specific combinations of hardware and software, it should be understood that other combinations of hardware and software are also within the scope of this disclosure. Embodiments may be carried out using hardware alone, software alone, or a combination thereof. Various processes described herein may be carried out on the same processor or on different processors in any combination. Thus, where a component or service is described as being configured to perform a certain operation, such configuration may be achieved, for example, by designing an electrical circuit to perform that operation, by programming a programmable electrical circuit (such as a microprocessor) to perform that operation, or in any combination thereof. Processes may communicate using a variety of techniques, including but not limited to conventional techniques for inter-process communication, different pairs of processes may use different techniques, or the same pair of processes may use different techniques at different times.
[0150] This specification and its drawings are therefore intended to be illustrative rather than restrictive. However, it is evident that additions, subtractions, deletions, and other modifications and alterations may be made thereto without departing from the broader intent and scope expressed in the claims. Thus, while certain embodiments of disclosure are described, they are not intended to be limiting. Various modifications and equivalents are within the scope of the following claims.
[0151] In the context describing the disclosed embodiments, the terms “a,” “an,” and “the,” and similar referents (in particular, in the context of the following claims) shall be construed to encompass both singular and plural unless otherwise indicated herein or explicitly contradict the context. The terms “equip,” “have,” “include,” and “contain” shall be construed as open-ended terms unless otherwise indicated (i.e., “include, but not limited to”). The term “connected” shall be construed to be included in, fitted into, or joined to each other, partially or whole, even if something exists in between. The enumeration of value ranges within this Specified is intended only as a simple way to refer individually to each distinct value that falls within that range unless otherwise indicated herein, and each individual value is incorporated herein as if it were individually enumerated herein. All methods described herein may be performed in any preferred order unless otherwise indicated herein or explicitly contradict the context. The use of any and all examples or illustrative language provided herein (e.g., "etc.") is intended solely to better illustrate the embodiments and does not impose any limitation on the scope of this disclosure unless otherwise claimed. The language within this specification should not be construed as indicating any unclaimed element as essential to the practice of this disclosure.
[0152] Disjunctive language, such as the expression "at least one of X, Y, or Z," is intended to be understood in a context in which it is commonly used to indicate that an item, term, etc., can be X, Y, Z, or any combination thereof (e.g., X, Y, and / or Z), unless otherwise specifically stated. Therefore, such disjunctive language is not generally intended, nor should it be suggested, that an embodiment requires the presence of at least one X, at least one Y, or at least one Z, respectively.
[0153] Preferred embodiments of the Disclosure, including the best known form of implementation, are described herein. Variations of these preferred embodiments may become apparent to those skilled in the art by reading the preceding description. Those skilled in the art may use such variations as needed, and the Disclosure may be practiced differently from those specifically described herein. Accordingly, the Disclosure includes all modifications and equivalents of the subject matter enumerated in the claims appended herein as permitted by applicable law. Furthermore, any combination of the elements described above, in all possible variations thereof, is encompassed herein unless otherwise indicated herein.
[0154] All references cited herein, including publications, patent applications, and patents, are incorporated herein by reference to the same extent that each reference is individually and specifically indicated as being incorporated herein by reference, and to the same extent that it is included herein in whole.
[0155] In the aforementioned specification, aspects of the disclosure are described with reference to those specific embodiments, but those skilled in the art will recognize that the disclosure is not limited thereto. The various features and aspects of the disclosure described above may be used individually or in combination. Furthermore, embodiments may be used in any number of environments and uses beyond those described herein without departing from the broad spirit and scope of this specification. This specification and the drawings are therefore intended to be illustrative rather than restrictive.
[0156] Any combination of the features and functions described herein may be used according to one or more embodiments. In the foregoing specification, embodiments are described with reference to a number of specific details which may vary from one implementation to another. This specification and the drawings are therefore intended to be illustrative rather than restrictive. The sole and exclusive guideline for the scope of the invention, and what the applicant intends to be the scope of the invention, is the literal and equivalent scope of the set of claims derived in this application, including any subsequent amendments, which is in the particular form from which such claims arise.
Claims
1. A non-temporary computer-readable medium containing instructions that, when executed by one or more hardware processors, cause an action to be performed, the action is This includes receiving a request to launch a compute instance, The compute instance is defined by at least a first configurable attribute, and the request includes one or more user-specified criteria for the first configurable attribute, without including a specific value for the first configurable attribute. The aforementioned operation is, Determining a set of candidate values for the first configurable attribute, Based on one or more user-specified criteria, the system selects a specific value for the first configurable attribute from the set of candidate values for the first configurable attribute, Storing the specific value in relation to the first configurable attribute, Launching the compute instance based on the specific value of the system selection for the first configurable attribute of the compute instance, Non-temporary computer-readable media, including the above.
2. Determining the set of candidate values means Determining a set of candidate compute instances that meet one or more of the above criteria, based on available resources, Determining a value for the first configurable attribute corresponding to the set of candidate compute instances, Selecting the values corresponding to the set of candidate compute instances as the set of candidate values for the first configurable attribute, The medium according to claim 1, including the following:
3. The medium according to claim 1, wherein the one or more criteria designate a category for the system to determine the specific value for the first configurable attribute.
4. The medium according to claim 3, wherein the first configurable attribute includes a processor type, and the category includes a processor vendor, a processor architecture, or a processor generation.
5. The medium according to claim 1, wherein the one or more criteria include at least one of user preference for the specific value for the first configurable attribute, user ranking of a set of values, user-specified exclusion of the specific value for the first configurable attribute, user-specified location for launching the compute instance, user-specified operating system preference for the first compute instance, and user-specified cost preference for the compute instance.
6. The medium according to claim 1, further comprising selecting a weight for each value in the set of candidate values based on one or more of the aforementioned criteria, wherein the selection of the specific value is based on the weight.
7. The medium according to claim 1, wherein selecting the specific value for the first configurable attribute comprises applying a machine learning model to one or more criteria for calculating the specific value for the first configurable attribute.
8. The medium according to claim 1, wherein the configurable attributes include at least one of processor type, availability domain, launch time, region, and failure domain.
9. The medium according to claim 1, wherein the compute instance is further defined by a second configurable attribute, the request includes a second user input specifying a user-selected value for the second configurable attribute, and the operation further includes launching the compute instance based on a specific value of the system selection for the first configurable attribute of the compute instance and the user-selected value for the second configurable attribute of the compute instance.
10. The aforementioned operation is, This further includes obtaining one or more vendor-specific criteria, The medium according to claim 1, wherein the system further selects the specific value for the first configurable attribute based on one or more vendor-specified criteria.
11. Determining the set of candidate values means Determining a set of candidate compute instances that meet the criteria of one or more vendors, based on available resources, Determining a value for the first configurable attribute corresponding to the set of candidate compute instances, Selecting the values corresponding to the set of candidate compute instances as the set of candidate values for the first configurable attribute, The medium according to claim 10, including the following:
12. The criteria for designating one or more vendors are: Number of available cores, generation order, Cost constraints, Operating system requirements, Predicted demand for compute shapes corresponding to available compute instances, Actual demand for compute shapes corresponding to available compute instances, Supply chain information, Profitability information, power consumption, User preferences, and Physical location of compute instances The medium according to claim 10, comprising at least one of the following.
13. The medium according to claim 12, further comprising selecting a weight for each criterion within the one or more criteria, wherein the selection of a specific value is based on the weight of each of the criteria.
14. The medium according to claim 10, wherein selecting the specific value for the first configurable attribute comprises applying a machine learning model to one or more criteria for calculating the specific value for the first configurable attribute.
15. The medium according to claim 10, wherein the compute instance is further defined by a second configurable attribute, the request includes a second user input specifying a user-selected value for the second configurable attribute, and the medium launches the compute instance based on a specific value of the system selection for the first configurable attribute of the compute instance and the user-selected value for the second configurable attribute of the compute instance.
16. A non-temporary computer-readable medium containing instructions that, when executed by one or more hardware processors, cause an action to be performed, the action is This includes receiving a request to launch a pool of n compute instances, The request includes one or more user-specified criteria for a first configurable attribute for each of the pools of n compute instances, The aforementioned operation is, Determining a set of candidate values for the first configurable attribute, Based on the one or more user-specified criteria and available resources, the system selects the specific value for the first configurable attribute from the set of candidate values for the first configurable attribute, Launching the aforementioned pool of n compute instances, A non-temporary computer-readable medium further comprising n compute instances, each having the specific value for the first configurable attribute.
17. The medium according to claim 16, wherein the first compute instance of the n compute instances has a value for a second configurable attribute that is different from the second compute instance of the n compute instances.
18. It is a system, One or more processors, A memory that stores instructions that, when executed by one or more processors, cause the system to perform the operation described in any one of claims 1 to 17, A system that includes these features.
19. A method comprising the operation described in any one of claims 1 to 17.
20. A system comprising means for performing the operation described in any one of claims 1 to 17.