TECHNIQUES FOR BUILDING CLOUD REGIONS AT A PREFAB FACTORY

Techniques are disclosed for building a region at a prefab factory. A manager service can receive a build request. The manager service can generate, based on the build request, a physical build request for building physical resources within the prefab factory. The manager service can receive an indication that the physical resources corresponding to the physical build request have been built. In response, the manager service can implement a virtual bootstrap environment at a second data center communicatively connected to the prefab factory. The manager service can deploy software resources to the physical resources using the virtual bootstrap environment. The manager service can configure the physical resources for transmitting to a destination site by at least generating an inventory of the physical resources and generating a network configuration corresponding to a network topology of the physical resources in the prefab factory.

BACKGROUND

A cloud infrastructure provider may operate one or more data centers in geographic areas around the world. A “region” is a logical abstraction around a collection of the computing, storage, and networking resources of the data centers of a given geographical area that are used to provide the cloud computing infrastructure. Building new regions can include provisioning the computing resources, configuring infrastructure, and deploying code to those resources, typically over network connections to the data centers. However, building regions with physical resources located at the final destination data center sites requires significant preparation work at the data centers that can complicate the logistics and scheduling of completing the building of a region.

BRIEF SUMMARY

Embodiments of the present disclosure relate to automatically building a region using a prefab factory. A prefab factory may be a facility dedicated to configuring computing devices, networking devices, and other physical resources for delivery to a destination site (e.g., a destination region—one or more data centers in a geographic area, a customer facility, etc.). Operations for building a region can include bootstrapping (e.g., provisioning and/or deploying) resources (e.g., infrastructure components, artifacts, etc.) for any suitable number of services available from the region when delivered to the destination. Once the physical resources have been configured at the prefab factory, they may be shipped to the destination site, installed at the destination data center, and have final configurations and other software resources deployed to the physical resources. Resources used for bootstrapping (e.g., software artifacts, software images, etc.) may be provided in a bootstrapping environment in an existing region (e.g., one or more data centers of a host region). The host region can be selected based on network proximity to the prefab factory, and in a complimentary fashion, the prefab factory may be sited to have high performance network connectivity to one or more host regions to support the bootstrapping environment. Building the region may be orchestrated by one or more cloud-based services that can manage the inventory of physical computing devices used to build regions in the prefab factory, generate and specify the configurations of regions to be built in the prefab factory, manage the bootstrapping of the regions, configure the regions for transmission to a destination site, and test and verify the physical resources after the physical resources have been installed at the destination site. A prefab region may be built to meet a specific customer's configuration preferences (built-to-order) or built to a common specification that may be further customized during installation at a specific customer's site (built-to-stock).

One embodiment is directed to a computer-implemented method that can include receiving a build request at a manager service executing on one or more computing devices of a cloud service provider. The build request can include a specification of the region, for example a number of server racks for the region, a number of computing devices, a number and type services to be hosted by the region, a network topology of the region, and the like. The manager service can use the build request to generate a physical build request for building physical resources within a first data center. The first data center may be a prefab factory. The method may also include the manager service implementing a virtual bootstrap environment at a second data center communicatively connected to the first data center. The second data center may be a host region data center. Implementing the virtual bootstrap environment can be done in response to the manager service receiving an indication that the physical resources corresponding to the physical build request have been built in the first data center. The manager service can use the virtual bootstrap environment to deploy software resources to the physical resources. The manager service can configure the physical resources for transmission to a destination site by generating an inventory of the physical resources and a network configuration corresponding to a network topology of the physical resources in the first data center. The network configuration can include an identifier for at least one physical resource in the inventory and information associating the at least one physical resource with neighboring physical resources according to the network topology.

Another embodiment is directed to a computing device comprising one or more processors and instructions that, when executed by the one or more processors, cause the computing device to perform the method described above.

Still another embodiment is directed to a non-transitory computer-readable medium storing computer-executable instructions that, when executed by one or more processors of a computing device, cause the computing device to perform the method described above.

DETAILED DESCRIPTION OF DRAWINGS

Example Automated Data Center Build (Region Build) Infrastructure

The adoption of cloud services has seen a rapid uptick in recent times. Various types of cloud services are now provided by various different cloud service providers (CSPs). The term cloud service is generally used to refer to a service or functionality that is made available by a CSP to users or customers on demand (e.g., via a subscription model) using systems and infrastructure (cloud infrastructure) provided by the CSP. Typically, the servers and systems that make up the CSP's infrastructure, and which are used to provide a cloud service to a customer, are separate from the customer's own on-premises servers and systems. Customers can thus avail themselves of cloud services provided by the CSP without having to purchase separate hardware and software resources for the services. Cloud services are designed to provide a subscribing customer easy, scalable, and on-demand access to applications and computing resources without the customer having to invest in procuring the infrastructure that is used for providing the services or functions. Various different types or models of cloud services may be offered such as Software-as-a-Service (SaaS), Platform-as-a-Service (PaaS), Infrastructure-as-a-Service (IaaS), and others. A customer can subscribe to one or more cloud services provided by a CSP. The customer can be any entity such as an individual, an organization, an enterprise, a government entity, and the like.

As indicated above, a CSP is responsible for providing the infrastructure and resources that are used for providing cloud services to subscribing customers. The resources provided by the CSP can include both hardware and software resources. These resources can include, for example, compute resources (e.g., virtual machines, containers, applications, processors, bare-metal computers), memory resources (e.g., databases, data stores), networking resources (e.g., routers, host machines, load balancers), identity, and other resources. In certain implementations, the resources provided by a CSP for providing a set of cloud services CSP are organized into data centers. A data center may be configured to provide a particular set of cloud services. The CSP is responsible for equipping the data center with infrastructure and resources that are used to provide that particular set of cloud services. A CSP may build one or more data centers.

Data centers provided by a CSP may be hosted in different regions. A region is a localized geographic area and may be identified by a region name. Regions are generally independent of each other and can be separated by vast distances, such as across countries or even continents. Regions are grouped into realms. Examples of regions for a CSP may include US West, US East, Australia East, Australia Southeast, and the like.

A region can include one or more data centers, where the data centers are located within a certain geographic area corresponding to the region. As an example, the data centers in a region may be located in a city within that region. For example, for a particular CSP, data centers in the US West region may be located in San Jose, California; data centers in the US East region may be located in Ashburn, Virginia; data centers in the Australia East region may be located in Sydney, Australia; data centers in the Australia Southeast region may be located in Melbourne, Australia; and the like.

As indicated above, a CSP builds or deploys data centers to provide cloud services to its customers. As a CSP's customer base grows, the CSP typically builds new data centers in new regions or increases the capacity of existing data centers to service the customers' growing demands and to better serve the customers. Preferably, a data center is built in close geographical proximity to the location of customers serviced by that data center. Geographical proximity between a data center and customers serviced by that data center leads to shorter latency resulting in more efficient use of resources and faster and more reliable services being provided to the customers. Accordingly, a CSP typically builds new data centers in new regions in geographical areas that are geographically proximal to the customers serviced by the data centers. For example, for a growing customer base in Germany, a CSP may build one or more data centers in a new region in Germany.

Building a data center (or multiple data centers)) and configuring it to provide cloud services in a region is sometimes also referred to as building a region. The term “region build” is used to refer to building one or more data centers in a region. Building a region involves provisioning or creating a set of new resources that are needed or used for providing a set of services that the data center is configured to provide. The end result of the region build process is the creation of a region, where the data center, together with the contained hardware and software resources, is capable of providing a set of services intended for that region and includes a set of resources that are used to provide the set of services.

Building a new region is a very complex activity requiring extensive coordination between various bootstrapping activities. At a high level, this involves the performance and coordination of various tasks such as: identifying the set of services to be provided by the data center; identifying various resources that are needed for providing the set of services; creating, provisioning, and deploying the identified resources; wiring the underlying hardware properly so that they can be used in an intended manner; and the like. Each of these tasks further have subtasks that need to be coordinated, further adding to the complexity. Due to this complexity, presently, the building of a region involves several manually initiated or manually controlled tasks that require careful manual coordination. As a result, the task of building a new region (i.e., building one or more data centers in a region and configuring the hardware and software in each data center to provide the requisite cloud services) is very time consuming. It can take time, for example many months, to build a region. Additionally, the process is very error prone, sometimes requiring several iterations before a desired configuration of the region is achieved, which further adds to the time taken to build a region (e.g., deploy hardware and software resources). These limitations and problems severely limit a CSP's ability to grow computing resources in a timely manner responsive to increasing customer needs.

Recent innovations allow CSPs to reduce build time, reduce computing resource waste, and reduce risk related to building a region. A CSP may employ an orchestration service to bootstrap services into a new region. The orchestration service may be a cloud-based service hosted within a separate region (e.g., an orchestration region) from the target region. To bootstrap services into the target region, the orchestration service can create a bootstrapping environment to host instances of one or more cloud services. The orchestration service can then use the services in the bootstrapping environment to support the deployment of services into the target region.

Even more recent innovations allow CSPs to centralize the region build operations to one or more facilities that can act as “factories” to produce partially or fully configured physical infrastructure for subsequent delivery to a destination site. Instead of waiting for the construction of a target region data center and the installation of physical components (e.g., servers, network switches, power supply, etc.) at the data center before bootstrapping the services into the target region, a CSP can build regions in a prefab factory, ship the configured physical components, like racks, to the destination data center, and then finalize and verify the components of the region once the racks arrive at the destination site. The prefab factory is capable of building multiple regions simultaneously. Each region being built at the prefab factory can have separate configurations, network topologies, and services. By building the regions at a prefab factory, the complexity of scheduling and logistics related to preparing the destination facility, delivering physical components to the destination facility, and managing bootstrapping resources within the cloud services can be greatly reduced, since the regions can be built in advance and maintained until the destination site is ready.

A prefab factory can also be used to build computing components to be integrated into on-premises solutions for customers, for example, when the customer controls and manages its own data center environment.

The centralized prefab factory supports additional innovations for building regions in an efficient manner. The prefab factory can include a static network fabric consisting of networking infrastructure (e.g., network switches, routers, cabling, etc.) designed to support any potential configuration of region components built in the factory. As such, the static network fabric can allow for physical resources of the region to be placed in the factory and quickly connected to the existing network fabric. Regions with different network topologies can also be quickly connected to the same network fabric according to connection plans that match the static network fabric with the physical components of the region. The static network fabric can reduce the complexity of network connections of the regions within the factory, increasing the speed at which the region components are installed in the factory and removed from the factory in preparation for transmission. In a complementary manner, because the static network fabric provides a set of dedicated network connections for devices at different locations within the prefab factory, these connections can be protected by a cable terminal protection apparatus (CTPA) that is designed to accommodate each possible network connection (e.g., Ethernet, fiber optic, etc.) that can be used to connect the region to the factory network.

The present disclosure is directed to a prefab factory in which automated region builds are performed using one or more prefab services. A prefab manager service can orchestrate the overall building of a region at the prefab factory. The manager service can work in conjunction with the one or more additional prefab services to manage the inventory of physical components used to construct the region at the prefab factory, configure the network (e.g., endpoints, network topology, addresses and/or other identifiers of the components within the region), bootstrapping services onto the region infrastructure, preparing the components for transmission of the region (including encrypting data volumes to provide security during transit), verifying the region after delivery to and installation at the destination site, and finalizing the configuration of the region, including performing any remaining bootstrapping or updating operations for the services deployed to the region infrastructure previously at the prefab factory. In addition, the present disclosure describes features of the prefab factory itself that improve the automated region build activities therein, including a static network fabric of the prefab factory that is configured to support any potential region network topology without needing ad hoc modifications, as well as dedicated CTPAs to improve the performance of the static network fabric. Finally, this disclosure also describes a mobile prefab factory that can perform some, any, or all of the operations related to automated region build in the prefab factory while the region components are in transit to the destination site.

Certain Definitions

A “region” is a logical abstraction corresponding to a collection of computing, storage, and networking resources associated with a geographical location. A region can include any suitable number of one or more execution targets. A region may be associated with one or more data centers. A “prefab region” describes a region built in a prefab factory environment prior to delivery to the corresponding geographical location. In some embodiments, an execution target could correspond to the destination data center as opposed to the prefab factory data center.

An “execution target” refers to a smallest unit of change for executing a release. A “release” refers to a representation of an intent to orchestrate a specific change to a service (e.g., deploy version8, “add an internal DNS record,” etc.). For most services, an execution target represents an “instance” of a service or an instance of change to be applied to a service. A single service can be bootstrapped to each of one or more execution targets. An execution target may be associated with a set of devices (e.g., a data center).

“Bootstrapping” a single service is intended to refer to the collective tasks associated with provisioning and deployment of any suitable number of resources (e.g., infrastructure components, artifacts, etc.) corresponding to a single service. Bootstrapping a region is intended to refer to the collective of tasks associated with each of the bootstrap of each of the services intended to be in the region.

A “service” refers to functionality provided by a set of resources, typically in the form of an API that customers can invoke to achieve some useful outcome. A set of resources for a service includes any suitable combination of infrastructure, platform, or software (e.g., an application) hosted by a cloud provider that can be configured to provide the functionality of a service. A service can be made available to users through the Internet.

An “artifact” refers to code being deployed to an infrastructure component or a Kubernetes engine cluster, this may include software (e.g., an application), configuration information (e.g., a configuration file), credentials, for an infrastructure component, or the like.

IaaS provisioning (or “provisioning”) refers to acquiring computers or virtual hosts for use, and even installing needed libraries or services on them. The phrase “provisioning a device” refers to evolving a device to a state in which it can be utilized by an end-user for their specific use. A device that has undergone the provisioning process may be referred to as a “provisioned device.” Preparing the provisioned device (installing libraries and daemons) may be part of provisioning; this preparation is different from deploying new applications or new versions of an application onto the prepared device. In most cases, deployment does not include provisioning, and the provisioning may need to be performed first. Once prepared, the device may be referred to as “an infrastructure component.”

IaaS deployment (or “deployment”) refers to the process of providing and/or installing a new application, or a new version of an application, onto a provisioned infrastructure component. Once the infrastructure component has been provisioned (e.g., acquired, assigned, prepared, etc.), additional software may be deployed (e.g., provided to and installed on the infrastructure component). The infrastructure component can be referred to as a “resource” or “software resource” after provisioning and deployment has concluded. Examples of resources may include, but are not limited to, virtual machines, databases, object storage, block storage, load balancers, and the like.

A “virtual bootstrap environment” (ViBE) refers to a virtual cloud network that is provisioned in the overlay of an existing region (e.g., a “host region”). Once provisioned, a ViBE is connected to a new region using a communication channel (e.g., an IPSec Tunnel VPN). Certain essential core services (or “seed” services) like a deployment orchestrator, a public key infrastructure (PKI) service, a dynamic host configuration protocol service (DHCP), a domain name service (DNS), and the like can be provisioned in a ViBE. These services can provide the capabilities required to bring the hardware online, establish a chain of trust to the new region, and deploy the remaining services in the new region. Utilizing the virtual bootstrap environment can prevent circular dependencies between bootstrapping resources by utilizing resources of the host region. These services can be staged and tested in the ViBE prior to the prefab region (e.g., the target region) being available.

A “Manager Service” may refer to a service configured to manage provisioning and deployment operations for any suitable number of services as part of a prefab region build. A manager service may be used in conjunction with one or more additional prefab services to orchestrate a region build in a prefab factory as well as for managing how the prefabbed region is installed and configured at the destination data center after it is built and shipped over. The manager service and other prefab services may be hosted in an existing region of a CSP.

A “host region” refers to a region that hosts a virtual bootstrap environment (ViBE). A host region may be used to bootstrap a ViBE.

A “target region” refers to a region under build in the prefab factory. During a prefab region build, the target region is associated with physical space, power, and cooling provided by the prefab factory. After bootstrapping, once the prefabbed region has been shipped to the destination data center, the prefabbed region is associated with the destination data center into which it gets installed.

Prefab Region Build

In some examples, techniques for building a region at a prefab factory are described herein. Such techniques, as described briefly above, can include one or more prefab services (e.g., manager service, network service, inventory service, testing service, deployment orchestration system) hosted by a CSP that can manage bootstrapping (e.g., provisioning and deploying software to) infrastructure components for one or more regions within the prefab factory. The prefab factory may be configured to support multiple region builds simultaneously. For example, physical resources (e.g., server racks, network switches, etc.) of a first prefab region may be installed at one location in the prefab factory while physical resources of a second prefab region may be installed at a second location in the prefab factory. Each prefab region can be connected to a dedicated network fabric of the prefab factory to provide networking connections to each prefab region independently, so that each region can communicate with the prefab services and/or other cloud services to support the region build. Based on a build request (a specification of the region, e.g., a number of server racks for the region, a number of computing devices, a number and type services to be hosted by the region, a network topology of the region, etc.), the prefab services can generate instructions to install (e.g., by factory personnel) the corresponding physical infrastructure in the prefab factory, which can include networking the physical devices together on their racks, positioning the racks at locations in the prefab factory, and connecting the devices to the static network fabric of the prefab factory. The manager service can then orchestrate the provisioning of the region infrastructure and deployment of software resources to the prefab region infrastructure, configure the prefab region for transmission, manage (e.g., schedule and monitor) the transmission of the prefab region, and perform testing and verification of the prefab region once it reaches its destination site.

The prefab factory can centralize the region build process to provide more efficient use of computing and networking resources that support region build. For example, the prefab factory may be sited “close” (e.g., with low-latency and high data rate networking connections) to a host region that includes the prefab services and/or a ViBE. Multiple regions may be built using the improved performance of the network connection to the host region, avoiding potential poor performance when performing a region build to a newly constructed data center site for typical region build. The prefab factory also provides improved physical and computational security for the devices during region build, as the CSP can control the prefab factory and the network connections therein.

In addition, the prefab factory improves the management of the inventory of physical components. The manager service can determine which computing devices are needed for a particular region build, which may be stored at or near the prefab factory. As regions are built and shipped, infrastructure for new regions can be quickly moved into the prefab factory and installed, increasing efficiency.

Turning now to the figures,FIG.1is a block diagram illustrating a prefabrication system100including a prefab factory102for building regions (e.g., Prefab Region106A, Prefab Region106B, Prefab Region106C) and preparing the region computing devices for transmission to target data centers (e.g., data center108, data center110), according to at least one embodiment. Each region being built in the prefab factory102can include one or more devices that form the computing environment of a data center. The prefab factory102can be used to build multiple regions simultaneously. For example, prefab factory102can build all of Prefab Region106A, Prefab Region106B, and Prefab Region106C at the same time. In some examples, the devices of a region may be installed and staged in the prefab factory102prior to beginning infrastructure provisioning and software deployment operations.

The prefab factory102can be a facility similar to a data center, including sufficient power, cooling, and networking infrastructure to support building one or more regions. The prefab factory102may be located in proximity to existing computing infrastructure of a CSP (e.g., CSP104). For example, CSP104can operate existing data centers for one or more regions. The prefab factory102can be located close to or even adjacent to an existing data center of a host region to provide high data rate network connections between the cloud services of the CSP and the computing devices of the regions being built in the prefab factory102. Additionally or alternatively, the prefab factory102can be located to improve logistical operations including shipping of regions to destination data centers.

A prefab region being built in the prefab factory102can include any suitable number of physical resources, including computing devices (e.g., servers, racks of multiple servers, etc.), storage (e.g., block storage devices, object storage devices, etc.), networking devices (e.g., switches, routers, gateways, etc.), and the like. Each region may have different physical resources according to the specific requirements of the destination region and data centers. For example, Prefab Region106A may include100racks each having40computing devices, while Prefab Region106B may include20racks each having30computing devices. Each rack of computing devices can include one or more networking devices communicatively connected to the server devices on the rack and configured to connect to networking infrastructure of the prefab factory102to form a network with other computing devices of the prefab region. Each rack can also include power supplies and cooling devices to support the operation of the computing devices on the racks.

The prefab factory102can include any suitable number of networking devices to support the installation and connection of the one or more computing devices of the prefab regions being built. For example, the prefab factory102can include any suitable number of leaf and spine switches to support the connection of computing devices on multiple racks to form the network of a prefab region. Similarly, the prefab factory102can include network cabling installed in the facility that can provide network connections to the networking infrastructure of the prefab factory102. The network cabling may be positioned to terminate at locations within the prefab factory102where racks of computing devices for the prefab regions may be installed during region build operations. Additional details about the networking infrastructure and configuration of the prefab factory is provided below with respect toFIGS.9-11.

The prefab factory102may be connected over one or more networks to services provided by CSP104. During region build operations, CSP104can provision infrastructure components on the physical resources of the prefab regions and deploy software resources, configurations, and/or other artifacts to the provisioned infrastructure components. For example, CSP104can provision the computing devices of Prefab Region106A to host one or more virtual machines, provide hostnames, network addresses, and other network configurations for the provisioned physical and virtual devices, and then deploy one or more services to be executed on the provisioned infrastructure. The prefab region may be brought to a state that is close to the final production state of the devices when they are installed at the destination facility.

Once the prefab region has been built, the physical resources may be configured for transmission/transportation to the destination facility. As used herein, the term “transmission” may be used synonymously with the term “transportation” within the context of moving the physical resources associated with the prefab region from the prefab factory to a destination site. Configuring the prefab region for transmission can include obtaining a “snapshot” of the current network configuration of the computing devices in the prefab region, storing the snapshot, providing a portion of the snapshot to each computing device that includes identifiers for each device and its neighboring devices within the network, encrypting data volumes of the computing devices, and configuring the devices to boot into a test state when powered on after transmission. In addition to network snapshots, the prefab services of the CSP104may also capture device snapshots which are disk images taken of fully configured individual switches, compute devices, and smart NICs in the various racks to be shipped to the destination site. The device snapshots can enable rapid replacement of any device in the racks that get shipped if that device is non-functional after arrival and has to be replaced. Transportation to a destination facility may be by one or more methods, including shipment by truck112or shipment by aircraft114. For example, Prefab Region106B may be configured to be delivered by truck112to data center108, while Prefab Region106C may be configured to be delivered by aircraft114to data center110.

Once the computing devices of a prefab region arrive at the destination facility, they may be installed at the facility according to the configuration of the facility. The destination facilities can be data centers that have been built to host the prefab region devices, with networking, power, cooling, and other infrastructure provided according to the configuration of the prefab region. The data centers can have network connections to the CSP104. Installation of the prefab region can include manual operations for connecting racks and their computing devices to the network infrastructure of the data centers and other related tasks. Once the physical connections have been made, the devices of the prefab region can be powered on, which can initiate one or more testing operations by the devices based on the configuration that was performed at the prefab factory102prior to transmission. The prefab regions can also connect to the CSP104via one or more network connections to the data center to communicate with prefab services. For example, Prefab Region106B can connect to CSP104via connection118, while Prefab Region106C can connect to CSP104via connection116. The prefab services can deploy final configurations for the installed devices, deploy updates to software resources on the installed devices, and perform additional testing and verification operations for the prefab region at the destination data center.

FIG.2is a block diagram illustrating a prefabrication system200including a prefab factory202connected to prefab services210provided by a CSP204for building regions, according to at least one embodiment. The prefab factory202may be an example of prefab factory102ofFIG.1, and CSP204may be an example of CSP104ofFIG.1. The prefab factory202may interface with the CSP204via network208, which may be a public network like the Internet, a private network, or other network. The prefab services210can include manager service212, inventory service214, testing service216, orchestration service218, and network service220. The prefab services210can perform operations corresponding to building the prefab region206in the prefab factory202, including managing a bootstrapping environment (e.g., ViBE222), provisioning infrastructure components in the Prefab Region206, deploying software resources to the Prefab Region206, configuring the network of the Prefab Region206, testing the Prefab Region at various points during the build process, and managing the physical inventory (e.g., physical inventory224) of computing devices used to build Prefab Region206and other prefab regions being built at prefab factory202.

The manager service212can perform tasks to coordinate the operations of the prefab services210, including scheduling prefab region build operations by other prefab services210, generating physical build requests and corresponding instructions, initiating shipping of the prefab region206to a destination site, and managing the provisioning and deployment of resources in the prefab region206both in the prefab factory202and at the destination site. A physical build request can specify the number and type of physical resources to be used in Prefab Region206. The physical build request can also include a set of instructions usable by personnel to install the corresponding physical resources in the prefab factory202. For example, the manager service212may generate a physical build request that specifies the number of racks and server devices for Prefab Region206, the number of networking devices usable to connect the server devices to form the network of Prefab Region206, and the connection plan that determines the networking connections between the specified server devices, networking devices, and the existing networking infrastructure of the prefab factory20. The physical build request can also include instructions for personnel to obtain physical devices from an associated location (e.g., physical inventory224) and instructions to install the devices in the prefab factory202at specified locations. In some embodiments, operations of the physical build request may be performed by automated systems under the control of the manager service212. For example, obtaining racks of server devices from physical inventory224and installing the racks at prefab factory202may be performed by a robotic system configured to move physical racks from site to site.

The inventory service214may be configured to track and monitor physical devices corresponding to one or more regions (e.g., one or more data centers of a region). The inventory service214can also track physical devices for one or more prefab regions (e.g., Prefab Region206) in the prefab factory202. Tracking and monitoring the physical devices can include maintaining an inventory of the devices according to an identifier of the device (e.g., serial number, device name, etc.) and the association of the devices with a data center. The inventory service214can provide inventory information to other prefab services210, including manager service212, for use in the prefab region build process. For example, inventory service214can determine if a physical device is located at prefab factory202or at a destination site. Inventory service214can query devices to determine their location and/or association with a region, prefab region, or data center via a network (e.g., network208). Inventory service214can also maintain a physical inventory (e.g., physical inventory224) of devices that are stored for use in prefab region build operations. For example, inventory service214can track physical devices as they are received at the physical inventory224and then retrieved from the physical inventory224to be used as part of a prefab region at prefab factory202. In some examples, inventory service214can provide inventory information to manager service212that is usable to generate a physical build request for Prefab Region206that includes instructions to obtain physical resources from physical inventory224and install the physical resources at the prefab factory202.

The physical inventory224may be a warehouse or storage facility for storing physical resources (e.g., computing devices) for use in prefab region build operations. The physical inventory224may be located near the prefab factory202to facilitate retrieval of physical resources according to a physical build request. For example, the physical inventory224may be a building adjacent to a building used for the prefab factory202. In some examples, the physical inventory224may be located within the prefab factory202. Physical resources may be placed into and retrieved from the physical inventory224by personnel associated with the CSP and the prefab factory202. In some instances, during prefab region build operations, the retrieval and installation of physical resources from physical inventory224may be done by robots, automated guided vehicles, or other similar autonomous or semi-autonomous systems using instructions provided by the physical build request.

The orchestration service218may be configured to perform bootstrapping operations to provision infrastructure components in the Prefab Region206and to deploy software resources to the Prefab Region206. The orchestration service218can also construct a bootstrapping environment (e.g., ViBE222) for use when bootstrapping resources into the Prefab Region206. The orchestration service218may be an example of a deployment orchestrator described above. In some examples, the orchestration service218may be configured to bootstrap (e.g., provision and deploy) services into a prefab region (e.g., Prefab Region206) based on predefined configuration files that identify the resources (e.g., infrastructure components and software to be deployed) for implementing a given change to the prefab region. The orchestration service218can parse and analyze configuration files to identify dependencies between resources. The orchestration service218may generate specific data structures from the analysis and may use these data structures to drive operations and to manage an order by which services are bootstrapped to a region. The orchestration service218may utilize these data structures to identify when it can bootstrap a service, when bootstrapping is blocked, and/or when bootstrapping operations associated with a previously blocked service can resume.

In some embodiments, the orchestration service218may include components configured to execute bootstrapping tasks that are associated with a single service of a prefab region. The orchestration service218can maintain current state data indicating any suitable aspect of the current state of the resources associated with a service. In some embodiments, desired state data may include a configuration that declares (e.g., via declarative statements) a desired state of resources associated with a service. In some embodiments, orchestration service218can identify, through a comparison of the desired state data and the current state data, that changes are needed to one or more resources. For example, orchestration service218can determine that one or more infrastructure components need to be provisioned, one or more artifacts deployed, or any suitable change needed to the resources of the service to bring the state of those resources in line with the desired state. Specific details about a particular implementation of orchestration service218is provided in U.S. patent application Ser. No. 17/016,754, entitled “Techniques for Deploying Infrastructure Resources with a Declarative Provisioning Tool,” the entire contents of which are incorporated in its entirety for all purposes.

The ViBE222may be an example of a bootstrapping environment that can be used to deploy resources to a prefab region in a prefab factory202. A ViBE can include a virtual cloud network (e.g., a network of cloud resources) implemented within a suitable region of a CSP (e.g., CSP204). The ViBE can have one or more nodes (e.g., compute nodes, storage nodes, load balancers, etc.) to support operations to host services deployed by orchestration service218. The ViBE services can in turn be used to support deployment of services into the Prefab Region206. For example, orchestration service218may deploy an instance of one or more constituent services of the orchestration service218into the bootstrapping environment (e.g., an instance of orchestration service218), which in turn may be used to deploy resources from the ViBE222to the Prefab Region206. Because a ViBE is implemented as a virtual cloud network in an existing region, any suitable amount of region infrastructure may be provisioned to support the deployed services within the ViBE (as compared to the fixed hardware resources of a seed server). The orchestration service218may be configured to provision infrastructure resources (e.g., virtual machines, compute instances, storage, etc.) for the ViBE222in addition to deploying software resources to the VIBE222. The ViBE222can support bootstrapping operations for more than one prefab region in the prefab factory202at the same time.

When the Prefab Region206is available to support bootstrapping operations, the ViBE222can be connected to the Prefab Region206so that services in the VIBE222can interact with the services and/or infrastructure components of the Prefab Region206. This can enable deployment of production level services, instead of self-contained seed services as in previous systems, and will require connectivity over the internet to the target region. Conventionally, a seed service was deployed as part of a container collection and used to bootstrap dependencies necessary to build out the region. Using infrastructure/tooling of an existing region, resources may be bootstrapped into the ViBE222and connected to the Prefab Region206in order to provision hardware and deploy services until the Prefab Region206reaches a self-sufficient state (e.g., self-sufficient with respect to services hosted within the Prefab Region206). Utilizing the ViBE222allows for standing up the dependencies and services needed to be able to provision/prepare infrastructure and deploy software while making use of the host region's resources in order to break circular dependencies of core services.

The testing service216may be configured to perform one or more test operations or validation operations on the Prefab Region206following the provisioning and/or deployment of resources. The test operations may be part of a user-acceptance test usable to determine if the behavior of the built region conforms to a build specification. For example, testing service216may perform a test that interacts with an instance of a service deployed to the Prefab Region206to verify an expected operation of the queried service. As another example, testing service216may perform a networking test to obtain hostnames, networking addresses, and/or other identifiers of the components of the Prefab Region206to compare to the expected identifiers of the components as specified in a build request or other specification for the Prefab Region206. Testing service216may perform test operations both during the prefab region build process at prefab factory202and after delivery of the Prefab Region206to a destination site. The testing operations performed at the prefab factory202may be the same or different from testing operations performed after the Prefab Region206is delivered to the destination site.

The network service220may be configured to determine the network configuration of the devices in the Prefab Region206. The network service220can use configuration information from a build request to determine a network topology of the devices (e.g., servers, networking devices, racks of servers and networking devices, etc.). As used herein, a network topology may refer to a graph representation of all the networking connections between each computing device in a prefab region. The network service220can use the configuration information to determine physical networking connections (e.g., network cabling connections) to be made between the device in the prefab region. The network service220may provide the networking connection information to the manager service212to be used to generate instructions for physically installing the devices for the prefab region in the prefab factory202. The network service220may also obtain device information from inventory service214as part of determining the network topology for the devices in a prefab region. Additional details about the network service220are provided below with respect toFIGS.5and6.

FIG.3is a block diagram illustrating a CSP system300that includes multiple host regions (e.g., host regions304A-304C) that can support a ViBE (e.g., ViBEs308A-308C) for deploying software resources to a Prefab Region306being built at a prefab factory302, according to at least one embodiment. Prefab factory302may be an example of prefab factory202described above with respect toFIG.2. Similarly, ViBEs308A-308C may each be examples of ViBE222ofFIG.2, while manager service312may be an example of manager service212ofFIG.2. Host regions304A-304C may correspond to regions of the CSP and can be associated with one or more data centers having computing resources for hosting a ViBE. The host regions304A-304C may correspond to different geographical locations.

As depicted inFIG.3, the manager service312may be an instance within one host region (e.g., host region304B). In some embodiments, the manager service312may correspond to a tenancy of the CSP and may therefore have an instance in multiple regions (e.g., host regions304A,304C) from which prefab services can be provided. Similarly, other prefab services (e.g., prefab services210) may also be instances of services within a host region.

A ViBE may be hosted within a host region to support prefab region build operations at prefab factory302. Because a ViBE may be constructed by an orchestration service (e.g., orchestration service218) as needed for bootstrapping a prefab region, the ViBE can be built in any suitable host region. Suitability as a host region can be based on network connectivity to the prefab factory302(e.g., high-bandwidth, high data rate, low latency network connection between the data center(s) of the host region to the prefab factory302), sufficient infrastructure resources to support the ViBE for one or more prefab region build operations (e.g., availability of computing resources in the host region for the length of time to provision and deploy the prefab region(s), and/or jurisdictional considerations (e.g., a host region in the same country as the prefab factory to comply with regulations regarding data security). For example, host region304A may include a data center in close proximity to prefab factory302, resulting in a low latency network connection between ViBE308A and Prefab Region306. During successive prefab region build operations, a ViBE used to support the prefab region build may be constructed in a different host region. For example, ViBE308A may be used as part of a prefab region build at prefab factory302for one prefab region, but then ViBE308B in host region304B or ViBE308C in host region304C may be constructed and used for a subsequent region build operation.

In addition, the prefab factory302may be built in a location to provide suitable connectivity to one or more host regions. For example, prefab factory302may be constructed at a site adjacent to a data center of host region304A, to provide suitable network connectivity between host region304A and prefab factory302.

FIG.4is a block diagram illustrating a CSP system400having an arrangement of physical computing resources in a prefab factory402for different Prefab Regions430,440according to at least one embodiment. Prefab factory402may be an example of prefab factory202ofFIG.2. Prefab services410may be provided by the CSP and may be examples of prefab services210described above with respect toFIG.2, including manager service412as an example of manager service212ofFIG.2and inventory service414as an example of inventory service214ofFIG.2. Similarly, Prefab Region430and Prefab Region440may be examples of other prefab regions described herein, including Prefab Region206ofFIG.2.

As described above, prefab factory402may support multiple prefab region build operations at the same time. As depicted inFIG.4, prefab factory402includes Prefab Region430and Prefab Region440. Prefab Region430can include one or more server racks432A-432C. Each server rack can include one or more devices, including server devices and networking devices. For example, server rack432A can include switch434and server device436. Switch434may be a top-of-rack switch that provides networking connections to other server racks (e.g., via top-of-rack switches at the other server racks) or other physical resources of the Prefab Region430. Networking connections between physical resources in Prefab Region430may include parts of networking infrastructure438. Networking infrastructure438may include a portion of the networking infrastructure of prefab factory402, including network cabling, network switches, routers, and the like that form the network fabric of the prefab factory402. Similarly, Prefab Region440can include one or more server racks442A-442B, which can include more or fewer computing devices than server racks432A-432C of Prefab Region430. For example, server rack442A can include switch444and server device446.

Each prefab region may be at a different point of the prefab region build process at any given time. For example, Prefab Region430may be undergoing infrastructure provisioning and resource deployment while Prefab Region440may be undergoing installation of physical resources. In addition, each prefab region at the prefab factory402may include a different arrangement of physical resources. For example, Prefab Region430can include a greater number of server racks (e.g., racks432A-432C) than Prefab Region440, with each server rack supporting a greater number of computing devices than the server racks of Prefab Region440(e.g., server racks442A,442B). Because the number and arrangement of physical resources in each prefab region can be different, the network topology corresponding to the connections between the physical resources can be different for each prefab region.

Inventory service414can track physical resources used to form the prefab regions in the prefab factory402. The physical resources tracked by inventory service414can included server devices and networking devices as well as racks of server devices and networking devices. Inventory service414can also track physical resources at data centers for deployed regions, including prefab region devices after delivery to and installation at a destination site. In some embodiments, inventory service414can connect to the prefab regions (e.g., via a network) and query device identifiers for devices in the prefab regions. Inventory service414may provide information corresponding to the physical resources in a prefab region to manager service412as part of prefab region build operations. For example, manager service412may use inventory information from inventory service414to determine if physical resources for a prefab region were installed according to a physical build request. In some embodiments, inventory service414can also maintain information corresponding to physical inventory424(e.g., a repository, warehouse, or other storage for computing devices and other physical resources used to construct a prefab region). Maintaining the physical inventory424can include tracking the number and type of physical resources available for use in a prefab region, maintaining a database or other datastore of inventory information, updating the inventory information as new physical resources are added to physical inventory424(e.g., delivery of new devices, construction of a server rack, etc.), and updating the inventory information as devices leave the physical inventory for use in the prefab factory402(as depicted by the arrows inFIG.4). In some examples, CSP personnel may interact with inventory service414to provide manual updates to inventory information.

The manager service412can obtain inventory information from inventory service414for use when generating a physical build request. For example, the inventory information may be used by manager service412to determine which physical resources to install in the prefab factory402for a prefab region corresponding to the physical build request.

FIG.5is a diagram illustrating a CSP system500for managing a network configuration of computing resources of a Prefab Region530being built in a prefab factory502using a manager service512and a network service520, according to at least one embodiment. The prefab factory502and Prefab Region530may be examples of other prefab factories and prefab regions described herein, including prefab factory202and Prefab Region206ofFIG.2. Prefab services510may be provided by the CSP and may be examples of prefab services210described above with respect toFIG.2, including manager service512as an example of manager service212ofFIG.2and network service520as an example of network service220ofFIG.2.

As described above with respect toFIG.2, the manager service512can perform tasks to coordinate the operations of the prefab services510, including scheduling prefab region build operations by other prefab services510, generating physical build requests and corresponding instructions, and configuring Prefab Region206for shipping to a destination site. A physical build request can specify the number and type of physical resources to be used in Prefab Region206. The network service520can use configuration information from a build request to determine a network topology of the devices (e.g., servers, networking devices, racks of servers and networking devices, etc.). The network service520can also determine the network configuration of devices of the Prefab Region530after the provisioning of infrastructure components in the Prefab Region530.

In some examples, the network service520can store a snapshot of the network configuration of a prefab region (e.g., Prefab Region530). A snapshot can include information about the network topology of the prefab region at a specific point in time, including network identifiers (e.g., network addresses, hostnames, etc.) for the devices in the prefab region, the current network connections between the devices, the physical networking interfaces between the devices and the networking infrastructure538of the prefab factory502, and network settings for the devices (e.g., port configurations, gateway configurations, etc.). As an example, server device536may be a computing device in server rack532A of Prefab Region530. Server device536may have a networking connection540to switch534of server rack532. The network configuration of Prefab Region530can then include information associating server device536to switch534, including information specifying the type of network connection540, the port of switch534to which server device536is connected, and the settings of both server device536and switch534that correspond to the networking connection540between them. In addition, the network configuration can include information that associates server device536with “neighboring” devices in Prefab Region530that have networking connections542,544between them. The networking connections542and544may be via switch534, so that server device536may be communicatively connected to other devices in server rack532A via network connections542,544. In some examples, “neighboring” devices of a given device in Prefab Region530can include each computing device on the same server rack. In addition, switch534may have a network connections to one or more other switches within Prefab Region530(e.g., network connection546to a switch of server rack532B).

The network snapshot may be used to validate the physical installation (e.g., physical networking connections) of Prefab Region530after the devices are installed at the destination site. For example, network service520can provide the network snapshot (or a portion of the snapshot) to each device in the Prefab Region530as part of configuring the Prefab Region530for transportation to a destination site. For example, network service520may provide network snapshot526to server device536for storage at server device536. Network snapshot526may be a portion of the network snapshot corresponding to the network configuration of the entire Prefab Region530. Network snapshot526can include an identifier (e.g., network address, hostname, etc.) for server device536and information associating server device536with one or more other devices in Prefab Region530. The information associating server device536with a neighboring device can include an identifier for the neighboring device and information about the network connection between them. For example, server device536can use network snapshot526to identify neighboring devices and communicate with the neighboring devices over the network connection.

The network service520may also maintain a network configuration for the network fabric of the prefab factory502. For example, the prefab factory502can have networking infrastructure to support multiple, separate prefab regions being built at the same time. The prefab factory502can have multiple dedicated locations for placing server racks for the prefab regions being built. Each location may have a set of networking cables of the networking infrastructure that terminate at the location that can be connected to the server racks. Based on the devices placed at the location, specific cables from the set of networking cables can be connected to the devices (e.g., to a top-of-rack switch) to connect the devices to other devices in the prefab region using a portion of the network fabric of the prefab factory502. For example, server rack532A may be placed at a location within the prefab factory502and connected to networking infrastructure538using switch534, while server rack532B may be placed at a second location and connected to networking infrastructure538.

In addition to operations for preserving the network configuration of the Prefab Region530, configuring Prefab Region530for transportation to a destination site can also include the manager service512configuring each device to enter a testing state during a subsequent power-on of the device, encrypting data volumes of the devices with encryption keys, storing the encryption keys at a device that can act as a key server for the Prefab Region530during initialization at the destination site, and configuring one of the devices to act as dynamic host configuration protocol (DHCP) server during initialization of the Prefab Region530at the destination site. Manager service512may also generate instructions usable by personnel or robotic systems associated with the prefab factory502for packing the devices for transmission. Manager service512may also generate instructions usable by personnel associated with the destination facility for installing and connecting the devices at the destination facility.

In some embodiments, configuring the devices of Prefab Region530can also include operations to capture device snapshots of each device. A device snapshot can include a software image of one or more disk drives or other memory of a computing device, which can be used to duplicate the software configuration of the device onto a replacement device. The manager service512can generate the device snapshots in conjunction with one or more of the prefab service510. The device snapshots may be stored along with the network snapshot(s) in a database or datastore (e.g., snapshot(s)524). As a particular example, manager service512can generate device snapshot552of server device550of Prefab Region530at the prefab factory502. The device snapshot552may be used to image another physical device that has the same or similar physical configuration as server device550in order to create a duplicate server device in the event that server device550fails (e.g., damaged or lost during transit to the destination site).

FIG.6is a diagram illustrating a CSP system600for testing and evaluation of a Prefab Region530after delivery to a destination site602using a manager service612and a testing service616, according to at least one embodiment. The destination site602may be a data center facility at a location corresponding to new region to be deployed for the CSP using the computing resources of Prefab Region630. Prefab services610may be provided by the CSP and may be similar to prefab services210ofFIG.2, including manager service612as an example of manager service212, testing service616as an example of testing service216, and orchestration service618as an example of orchestration service218ofFIG.2.

Shipping Prefab Region530to the destination site602can include powering down each device, disconnecting the devices from the networking infrastructure of the prefab factory, and packing the devices as appropriate for transit. Server racks (e.g., server racks532A,532B may be shipped intact, without disconnecting individual devices of the server rack. Once delivered to the destination site602, the server racks may be positioned in the destination site602per the physical layout of the resulting data center and connected to the networking infrastructure638of the destination site. For example, networking connections may be made between the networking infrastructure638and the switches of the server racks532A,532B by connecting one or more networking cables to the switches (e.g., switch534).

As described above, the devices in Prefab Region530may have been configured to boot into a test mode when first powered on at the destination site602. In some embodiments, the devices may have a dedicated boot volume to support the test mode during initialization at the destination site602. In other embodiments, the boot volume may be configured on an external device connected to each device in the Prefab Region530. For example, each server device (e.g., server device536) may be connected to a smart network interface card (SmartNIC) that provides a low-overhead boot volume that can be used to boot the server device into a test mode. Because the boot volume may only be used to support the test mode, the data on the boot volume may not need to be encrypted as with data volumes on the server devices.

The test mode may be configured to cause each computing device to validate its connection to other devices in the Prefab Region530. The validation can determine if the physical network connections of the devices to the networking infrastructure638at the destination site602were made correctly. To validate a connection, a device in the test mode may use a stored network configuration or portion of the network configuration that was determined by a network service (e.g., network service520ofFIG.5) and stored at each device. For example, server device536can use network snapshot526to determine a neighboring computing device that is communicatively connected to server device536by network connection542. To validate the network connection542, server device536may send a validation request to the neighboring computing device. If the network connection542is intact, then server device may receive a validation indication from the neighboring computing device that indicates that the validation request was successfully received at the neighboring computing device. The server device536may validate all of the connections specified in network snapshot526. Similarly, devices on one server rack (e.g., server rack532A) may validate a connection to each other server rack (e.g., server rack532B) in the Prefab Region530.

In some embodiment, one device of Prefab Region530may be configured to act as a DHCP server (e.g., DHCP server646). The DHCP server646may provide network addresses or other identifiers to the devices in Prefab Region530during initialization. For example, during test mode, each device may validate a connection to the DHCP server646and then receive an address, identifier, or other network configuration information from the DHCP server646. The device may compare the received identifier to an identifier included in the network configuration that was generated by the network service during prefab region build operations at the prefab factory. For example, server device536can receive an identifier from DHCP server646and then compare the received identifier to an identifier in network snapshot526. Because the Prefab Region530should not have undergone any component changes during transit, the network configuration of the Prefab Region530at the destination site602should be unchanged, including configuration information from DHCP server646. That is to say, server devices in the Prefab Region should receive the same network addresses from DHCP server646after installation of the devices at the destination site602. If the network configuration changes, then the server devices can indicate that the network configuration of Prefab Region530may be incorrect.

In some embodiments, if any device was damaged in transit and no longer works, operators at the destination site may replace the broken device with a new replacement device and configure the new device with the device snapshot taken prior to shipping thus allowing the on-site post-install validation to complete successfully even if there was hardware failure in transit. For example, server device550may be damaged during transportation to the destination site602. Discovery of the non-functional state of server device550may occur during testing operations to validate the network configuration of the Prefab Region530. To recover, the manager service612can generate instructions to replace server device550with an identical physical device at the same location on server rack532B. Once the replacement device is installed, the manager service612can deploy the device snapshot552that was generated during prefab region build operations in the prefab factory502. Deploying the device snapshot552can include imaging one or more disk drives or other memories of the replacement server device to bring the replacement server device to the same software configuration as server device550in the Prefab Region530prior to transportation to the destination site602. Other devices, including networking devices like switch534, may be similarly replaced and restored using the captured device snapshots.

The DHCP server646can perform test mode validation operations similar to other devices within Prefab Region530. If DHCP server646can successfully validate the network connections between neighboring devices and itself, DHCP server646can exit test mode and begin operating as a DHCP server to other devices in the Prefab Region530. In some embodiments, DHCP server646may complete its test mode validation operations prior to other devices in Prefab Region530completing their test mode validation operations. For example, server device536may boot into test mode and attempt to validate a network connection to DHCP server646before validating network connection542or network connection544between itself and neighboring computing devices. DHCP server646may not send a validation indication to server device536until DHCP server646has completed its own test mode validation operations. Server device536can then wait a predetermined amount of time and retry the validation request to DHCP server646. Similarly, other computing devices performing test mode validation operations may wait and retry validation requests until DHCP server646is operational.

As described above, data volumes of the devices in Prefab Region530may be encrypted prior to transportation to the destination site602. The encryption keys used to encrypt the data volumes of each device may be associated with that specific device. The encryption keys644may be stored at one of the computing devices in Prefab Region530configured to act as a key server for the Prefab Region530during initialization(e.g., stored at key server642). The encryption keys644may themselves be encrypted by a master key. In some embodiments, encryption keys644may be secured by a hardware security module (e.g., a trusted platform module (TPM)). The hardware security module may be part of key server642or may be part of another device connected to key server642(e.g., a SmartNIC, an external security device, etc.). In some embodiments, the master key or external security device may be delivered to the destination site602separately from the Prefab Region530(e.g., by operations personnel) and provided to or installed at the key server642as part of the installation operations for Prefab Region530. Key server642may perform test mode validation operations similar to other computing devices in Prefab Region530. If test mode validation operations complete successfully, key server642may begin providing encryption keys644to other computing devices in the Prefab Region to decrypt the data volumes. For example, key server642may receive a key request from server device536. In response, key server642can decrypt the data volume storing encryption keys644(e.g., via a master key, via a hardware security module), retrieve an encryption key corresponding to server device536, and send the encryption key to server device536.

Once the Prefab Region530has been installed and initialized at destination site602(e.g., devices boot into a normal operating mode, data volumes decrypted, services deployed during prefab region build operations at the prefab factory are executing), testing service616can perform one or more acceptance tests. An acceptance test can include verifying that all services are functioning as expected. For example, testing service616can interact with a service executing at Prefab Region530to verify that the service is operating according to the requirements that define the acceptance test. Testing service616can provide results of an acceptance test to manager service612indicating that Prefab Region build is complete.

During transportation of Prefab Region530to destination site602, updates or other changes may be specified for one or more infrastructure components and/or software resources that had been provisioned at and/or deployed to Prefab Region530at the prefab factory. For example, a service may have been updated to a newer version during the transit time. Before the prefab region build operation is complete, orchestration service618can deploy updated software resources to Prefab Region530at destination site602. Deploying an updated software resource may occur similar to deployment of software resources to the Prefab Region530at the prefab factory.

FIG.7is an example method for deploying software resources to physical resources of a region being built in a prefab factory and preparing the physical resources for transmission to a destination data center, according to at least one embodiment. The method700may be performed by one or more components of a computer system, including one or more components of a computer system of a CSP (e.g., CSP204ofFIG.2) that execute a manager service (e.g., manager service212ofFIG.2). The operations of method700may be performed in any suitable order, and method700may include more or fewer operations than those depicted inFIG.7.

The method700may begin at block702with a manager service receiving a build request. The manager service may be an example of any manager services described herein, including manager service212ofFIG.2. The manager service may execute on one or more computing devices of a CSP computer system. The manager service may be one of a plurality of services of the CSP that are configured to perform operations to build a prefab region (e.g., Prefab Region206ofFIG.2) in a prefab factory (e.g., prefab factory202ofFIG.2). The build request may be a specification or configuration containing information characterizing a prefab region. For example, the build request can include information that defines the size of the prefab region (e.g., the number of computing devices, server racks, etc.), the number and type of services, applications, and other software that will be executed on the computing devices in the prefab region, requirements for computing capabilities (e.g., the number of processors in each computing device, the computing speed of the processors, etc.) in the prefab region, requirements for the types of storage provided in the prefab region, and other similar definitions. In some embodiments, the build request may be provided by operations personnel or system architects that design the prefab regions.

At block704, the manager service may generate a physical build request for building physical resources within a first data center. The first data center may be a prefab factory (e.g., prefab factory202ofFIG.2). The manager service can use information in the build request to generate the physical build request. The physical resources can include server devices, networking devices, and other computing devices that may be used to build a prefab region in the first data center. The physical build request can include information identifying specific physical resources to be built in the first data center. For example, the manager service can interact with an inventory service (e.g., inventory service214ofFIG.2) to obtain an inventory of available server devices and server racks in a physical inventory of such devices (e.g., physical inventory224ofFIG.2). The manager service can then determine the specific server racks to be used to build the prefab region corresponding to the build request and include that information in the physical build request. The physical build request can also include instructions usable by, for example, operations personnel to retrieve, move, and install the physical resources into the first data center. For example, the instructions can identify specific locations within the first data center to place server racks and instructions for completing specific network connections to the server rack to form the network of the prefab region.

At block706, the manager service can implement a ViBE (e.g., ViBE222ofFIG.2) at a second data center. The second data center can be communicatively connected to the first data center. For example, the manager service may implement the ViBE in a host region of a CSP that is connected to a prefab factory via a network (e.g., network208ofFIG.2). The manager service can implement the ViBE in conjunction with an orchestration service (e.g., orchestration service218ofFIG.2). For example, the manager service may provide an indication to the orchestration service to build the ViBE, specifying the second data center in which the ViBE is to be constructed. The manager service may implement the ViBE in response to an indication that the physical resources corresponding to the physical build request have been built (e.g., installed, powered on, and functioning normally in the first data center). The indication may be provided by operations personnel after installing the physical resources. In some embodiments, the indication may be provided by the one or more of the physical resources after completing a self-check or other validation of the installation.

At block708, the manager service can use the ViBE to deploy software resources to the physical resources. The software resources may be associated with cloud services executed on the physical resources. For example, the software resources may be components of a production service (e.g., a database service) that will execute in a prefab region after the prefab region is delivered to a destination site. The manager service can deploy software resources in conjunction with the orchestration service.

At block710, the manager service can generate an inventory of the physical resources. The manager service may operate in conjunction with the inventory service to generate the inventory. At block712, the manager service can use the inventory to generate a network configuration corresponding to a network topology of the physical resources in the first data center. The manager service may operate in conjunction with a network service (e.g., network service220ofFIG.2) to generate the network configuration. The network configuration may be a network snapshot of the prefab region. The network configuration can include an identifier for a physical resource in the inventory (e.g., a network address for a server device) and information associating the physical resource with neighboring physical resources according to the network topology. For example, the network configuration may identify each computing device and the network connections between the computing device and one or more neighboring computing devices. The operations of block710and block712may be operations for configuring the physical resources for transmission to a destination site. The destination site may be a third data center. In some embodiments, the manager service may send a portion of the network configuration to the physical resource. The portion of the network configuration can include the identifier corresponding to the physical resource and the information associating the physical resource with the neighboring physical resources in the network topology. In some embodiments, configuring the physical resources for transmission to a destination site can include encrypting, using an encryption key associated with each physical resource, at least a portion of the software resources deployed to each physical resource and storing each encryption key at one of the physical resources (e.g., key server642ofFIG.6) designated to host a key service at the second data center.

In some embodiments, the manager service can receive an indication that the physical resources have been delivered to and built (e.g., installed) at the destination site. In response to the indication, the manager service can validate the topology of the physical resources at the destination site. For example, the manager service, in conjunction with the network service, may obtain a network configuration of the physical resources at the destination site and compare the network configuration to information included in a stored network snapshot that was obtained before the physical resources were shipped to the destination site. If the network topology of the physical resources at the destination site is validated, the manager service may deploy one or more updated software resources to the physical resources. For example, the manager service may operate with the orchestration service to deploy updated software components for a service that was deployed in the prefab region at the prefab factory but which were moved to a newer version during transit of the physical resources to the destination site.

In some embodiments, the manager service can perform operations to support the initialization of the physical resources at the destination site. The manager service can determine a dependency of a first cloud service (e.g., a deployed application) on a second cloud service (e.g., a database service). The first cloud service can include software resources hosted on a first physical resource while the second cloud service can include software resources hosted on a second physical resource of the physical resources. Because of the dependency, the first cloud service may not function correctly until the second cloud service is operating normally. Since the physical resources can perform test mode validations independently during initialization, portions of the deployed region may become available before others. In this case, the manager service can determine whether a portion of the network topology associated with the second physical resource was validated successfully and then send an indication that the first cloud service is available. The indication may be sent to an operations console or other system that configured to report the availability of services and applications in the prefab region at the destination site as they become available. For example, the indication may be used to initiate one or more user acceptance tests on the newly available first cloud service.

In some embodiments, during prefab region build operations at the prefab factory, changes may be made to the configuration of the prefab region. For example, a prefab region may need to have additional computing resources to support additional or expanded applications and/or services once delivered to the destination site. The techniques described herein can address modifications to a prefab region while it is being built in the prefab factory. The manager service can generate an updated physical build request that can be used to modify the physical resources. For example, the updated physical build request can specify the installation of an additional server rack into the prefab region at the prefab factory. As another example, one or more server devices may be replaced with a different type of server device (e.g., a device with a faster processor, additional processors, additional memory, etc.). As with the physical build request, the updated physical build request can include instructions usable to obtain, install, and/or modify the physical resources, for example by operations personnel at the prefab factory. After the modifications have been made, the manager service can deploy updated software resources to the modified physical resources. For example, the manager service can use the orchestration service and the ViBE to deploy software components of a new service to a new server rack in the prefab region. The manager service may deploy the updated software resources in response to receiving an indication that the physical resources were successfully modified.

In some embodiments, configuring the physical resources for transportation to the second data center can include generating device snapshots for one or more of the physical resources. For example, the manager service can generate a software image of each server device in the prefab region and store the software images in a datastore or similar repository. When validating the prefab region after installation at the destination site, the manger service can determine that one of the physical resources has failed. For example, a server device may have been damaged or lost during shipment to the destination site. In response, the manager service can generate instructions usable to replace the non-functional physical resource with a functional replacement (e.g., swap a non-working server device with a working replacement server device with identical physical configuration). Once the functional replacement device has been installed, the manager service can configure the replacement device using the device snapshot of the failed device. For example, the manager service can deploy an image to the replacement device to create a device that is configured and functions the same as the device that was replaced.

FIG.8is an example method800for booting physical resources built at a prefab factory after delivery to a destination data center and verifying a network configuration of the physical resources, according to at least one embodiment. The method800may be performed by one or more components of a computer system, including one or more components of a computer system of a prefab region (e.g., Prefab Region206ofFIG.2) that are communicatively connected to a CSP hosting a manager service (e.g., manager service212ofFIG.2). For example, the method800may be performed by a computing device of a prefab region, including server device536ofFIG.5, DHCP server646, or key server642ofFIG.6. The operations of method800may be performed in any suitable order, and method800may include more or fewer operations than those depicted inFIG.8.

Method800may begin at block802with the computing device receiving a network configuration (e.g., network snapshot526ofFIG.5) from the manager service. The network configuration can include information specifying a network topology of physical resources in a first data center (e.g., prefab factory202ofFIG.2). The network configuration can include a first identifier (e.g., network address, hostname, etc.) associated with the computing device, a second identifier (e.g., network address, hostname, etc.) associated with a neighboring computing device, and information associating the computing device with the neighboring computing device (e.g., information specifying network connection544ofFIG.5). The computing device can be configured to use the network configuration to communicate over a network connection with the neighboring computing device.

At block804, the computing device can be configured for transmission to a second data center (e.g., destination site602ofFIG.6). Configuring the computing device for transmission can include operations similar to those described above for blocks710and712ofFIG.7. Additionally, configuring the computing device for transmission to the second data center can include configuring the computing device to boot into a test mode during a subsequent power on sequence. At block806, the computing device may be booted into the test mode at the second data center. For example, once the computing device and other physical resources of the prefab region have been delivered to and installed at the second data center, the computing device may be powered on and enter the test mode. In some embodiments, booting the computing device into the test mode can include booting from a boot volume stored on a SmartNIC connected to the computing device.

At block808the computing device can receive a new identifier. The new identifier can be received from a server device at the second data center. For example, the server device can be a device configured to act as a DHCP server at the second data center. The identifier may be a network address for the computing device. As described above, the identifier may be the same as the first identifier associated with the computing device in the prefab region at the prefab factory, since no changes to the network configuration should have occurred during transit and installation of the physical resources at the second data center.

At block810, the computing device can verify the new identifier by comparing the new identifier with the first identifier. The computing device can obtain the first identifier from the network configuration stored at the computing device prior to transmission.

At block812, the computing device can send a validation request to the neighboring computing device. The validation request sent according to the second identifier associated with the neighboring computing device. For example, the computing device can ping the neighboring device at a network address associated with the neighboring computing device. In response, at block814, the computing device can validate a network connection to the neighboring computing device. The network connection can be characterized by the network configuration. In some embodiments, the validation of the network connection can include receiving a response to the validation request, which may be a validation indication from the neighboring computing device. In some embodiments, the response to the validation request may be an indication that validation request was not received by the neighboring computing device, for example a request time out indication. The validation indication can indicate that the physical networking between the computing device and the neighboring computing device has been installed correctly at the second data center. In some embodiments, once the computing device successfully validates its connection to each neighboring computing device, the computing device can send an indication to the manager service that the network connections associated with the computing device were successfully validated at the destination site.

In some embodiments, the computing device may be configured to operate as a key server in the prefab region at the second data center. Configuring the computing device for transmission to a second data center can then include encrypting a data volume of the neighboring computing device using an encryption key associated with the neighboring computing device. The encryption key may be stored at a data volume of the computing device, which can in turn be encrypted with a different encryption key (e.g., a master key). The master key may then be stored at a secure storage volume (e.g., hardware security module, trusted platform module (TPM), SmartNIC) that is connected to the computing device and that can be used to decrypt the storage volume on the computing device to retrieve and vend encryption keys to the neighboring computing device and other computing devices in the prefab region as they come online in the second data center. In some embodiments, once the computing device validates the network connection to the neighboring computing device, the computing device can obtain the master key from the secure storage volume, decrypt the data volume storing the encryption keys, and vend the encryption keys in response to key requests from the neighboring computing device or other computing devices.

In some embodiments, the computing system can determine that one or more of the computing devices at the second data center has failed or is otherwise not functioning correctly. For example, a server device of a server rack may have been damaged during transportation. To complete the installation of the prefab region at the second data center, the failed or otherwise non-functional computing device can be replaced with another device and configured with a software image of the failed device prior to the transportation of the devices to the second data center. As one example, the computing system can configure the neighboring computing device for transmission to the second data center by generating a device snapshot of the neighboring computing device. The device snapshot can include a software image of the neighboring computing device. The device snapshot may be generated by the manager service and/or other prefab services performing prefab region build operations at the prefab factory.

Once the computing devices are installed at the second data center, the computing system can determine that the neighboring computing device is non-functional. For example, the computing device can receive a response to the validation request that indicates that the neighboring computing device has been damaged or is not functioning properly. In response to this determination, the manager service can generate instructions to replace the neighboring computing device with a replacement computing device. The instructions may be usable by personnel at the second data center to make the replacement (e.g., a like-for-like swap of the device on a server rack). The manager service can then deploy the device snapshot for the neighboring computing device to the functional neighboring computing device, resulting in a device that can be identical to the failed device. The computing device can then re-send the validation request to determine the correct operation of the network connection between the computing device and the neighboring computing device.

Static Network Fabric

As described above, a prefab factory (e.g., prefab factory102ofFIG.1) can include a static network fabric consisting of networking infrastructure (e.g., switches, routers, cabling, etc.) designed to support various network topologies of region components built in the factory. Prefab regions with different network topologies can be quickly connected to the static network fabric according to connection plans that match the static network fabric with the physical components of the region. The static network fabric can include network cabling that terminates at set locations in the prefab factory configured for the installation of server racks. The network cabling can include multiple types and numbers of cable connectors or other terminations to support connections to different computing devices of a prefab region that is installed at the locations. For example, server racks for a first prefab region can be installed at locations in the prefab factory and connected to the static network fabric at those locations according to the specified network for the first prefab region. Subsequently (e.g., after prefab region build operations) those server racks can be removed and server racks for a second prefab region having different networking interfaces can be installed at the same locations and connected to the static network fabric according to the specified network for the second prefab region. In this way, different prefab regions can be installed at the prefab factory without modification to the static network fabric, reducing the complexity of network connections of the prefab regions within the factory and increasing the speed at which the prefab region components are installed/removed from the factory to support prefab region build operations.

FIG.9is a block diagram illustrating an example static network fabric900in a prefab factory902, according to at least one embodiment. Prefab factory902may be an example of any of the prefab factories described herein, including prefab factory102ofFIG.1. The static network fabric900can include network cables908that are routed throughout the prefab factory. As one example, the network cables908may be installed in overhead cable trays that are aligned with locations for rows of server racks. In other examples, the network cables908may be installed to run in trays or conduits under raised flooring also aligned with locations of rows of server racks. The network cables908can be configured to terminate at the locations in the prefab factory902where server racks can be positioned when installing a prefab region. For example, a set of network cables910can terminate at a location for server rack904A of Prefab Region904.

The prefab factory can support multiple prefab regions simultaneously for prefab region build operations. As depicted inFIG.9, prefab factory902can include Prefab Region904and Prefab Region906, which each may be examples of other prefab regions described herein, including Prefab Region206ofFIG.2. Prefab Region904can include server racks904A-904D. Similarly, Prefab Region906can include server racks906A-906D. the computing devices of a prefab region may be communicatively connected to one another via an arrangement of network cables, including one or more of the network cables908and associated networking devices of the static network fabric900. The arrangement of connected computing devices in a prefab region can be referred to as a region network. The region network for Prefab Region904can be different from the region network of Prefab Region906, although in certain cases some networking devices of the static network fabric may handle traffic from both region networks. Network cables908can include one or more types of network cabling, and/or various combinations of types, including fiber-optic cabling, copper based cabling (e.g., Ethernet, copper coaxial, etc.). In some embodiments, the network connectivity enabled by network cables908may be implemented by optical and/or wireless links such as ultra-wideband technology. Although described herein with reference to physical network cabling, embodiments of the present disclosure that include optical or other wireless network connectivity are contemplated.

The set of network cables910terminating at the location can include multiple types of cables (e.g., fiber optic, twisted pair cabling for Ethernet or the like, coaxial, etc.) each terminating with a suitable cable termination connector. The cable termination connector may be connected to a terminal end of a network cable of the set of network cables910. The types of cable termination connectors can include, but is not limited to, multi-fiber push on (MPO), multi-fiber pull off, small form-factor pluggable (SFP), SFP+, SFP28, quad small form-factor pluggable (QSFP), QSFP+, QSFP28, and RJ45. When a server rack is positioned at a location in the prefab factory, one or more of the set of network cables that terminate at that location may be connected to one or more computing devices of the server rack to connect the computing devices of the server rack to a region network. For example, server rack904A can include a network switch positioned at the top of the rack (e.g., a top of rack switch).

The static network fabric900can also include one or more networking devices configured to support network traffic for multiple region networks simultaneously. The networking devices can be arranged in various architectures to support different levels of network traffic for the different prefab regions in the prefab factory902. For example, the static network fabric900can be arranged in a three-tier architecture with aggregate switches (e.g., switches912,914) supporting top of rack switches in each server rack (e.g., server racks904A-904D and server racks906A-906D), and core switches (e.g., switches916) supporting the aggregate switches. As another example, the static network fabric900can be arranged in a spine and leaf architecture with leaf switches (e.g., top of rack switches for each server rack) supporting traffic from the server devices in each server rack with spine switches (e.g., switches912,914,916) supporting traffic for each of the leaf switches in the layer below.

The static network fabric900can form a Clos network. A Clos network topology is a non-blocking architecture with each switch of one layer of the network fabric (e.g., each leaf switch) connected to each switch of the next layer (e.g., each spine switch), providing a network path between each device and each other device and allowing traffic to be directed along available paths in the most efficient manner. For example, switches912-916may be spine switches of the static network fabric900. Each of the switches912-916can be connected to a network cable of network cables908that terminates at each location, so that the set of network cables (e.g., set of network cables910) includes a network connection to each of switches912-916. When the network connections at the locations are connected to leaf switches (e.g., a top of rack switch of each server rack), the resulting interconnection can form a Clos network. Other topologies can be supported with suitable numbers of switches and other networking devices.

FIGS.10A and10Bare diagrams illustrating example arrangements of physical computing resources connected to the static network fabric in a prefab factory, according to some embodiments.FIG.10Ais a diagram illustrating a CSP system1000that includes a prefab factory1002in which Prefab Region1004may be built.FIG.10Bis a diagram illustrating Prefab Region1032in prefab factory1002. The CSP systems1000,1030can include prefab services1020, which may be examples of other prefab services described herein, including prefab services510ofFIG.5. Prefab services1020can include a manager service1022and a network service1024, which may be examples of manager service512and network service520ofFIG.5, respectively. The prefab factory1002may be an example of any other prefab factory described herein, including prefab factory902ofFIG.9. The prefab factory1002can include static network fabric1012, which may be an example of static network fabric900ofFIG.9. Static network fabric1012can include network cables1008and networking infrastructure1010that has one or more networking devices (e.g., switches, routers, etc.) for handling traffic among computing devices in one or more region networks.

Prefab Region1004can include a plurality of server racks1004A,1004B, through1004N. Each server rack can have a number of computing devices, including server devices and networking devices. Each server rack1004A-1004N can have the same or a different number of computing devices and/or different types of computing devices (e.g., server devices with different computing capabilities). For example, server rack1004N may have fewer server devices than server rack1004A. As part of prefab region build operations for Prefab Region1004, server racks1004A-1004N may be positioned at locations within prefab factory1002. A set of network cables1008configured to terminate at each location (e.g., set of network cables1006A-1006N) may then be connected to each server rack1004A-1004N.

As a particular example, server rack1004A of Prefab Region1004may be communicatively connected to the static network fabric1012of prefab factory1002by connecting a set of network cables1006A from the network cables1008. As described above with respect toFIG.9, the set of network cables1006A can include a plurality of network cables that have cable termination connector. The server devices on server rack1004A can be communicatively connected to a network switch. For example, server rack1004A can include 40 server devices that each have a network connection to a top of rack switch on the server rack1004A. The connection between the server devices and a networking device of the server rack can be made prior to installing the server rack in the prefab factory. For example, server devices and networking devices of server rack1004A may be connected while server rack1004A is stored in a physical inventory (e.g., physical inventory224ofFIG.2). When server rack1004A is installed at the corresponding location in prefab factory1002, one or more of the set of network cables1006A can be connected to one or more ports of the network switch to communicatively connect the server devices to a region network using the static network fabric1012. The region network can include the network formed by computing devices of the prefab region and the portions of static network fabric1012that enable network connections between different server racks.

Depending on the configuration of server rack1004A, some of the cables of the set of network cables1006A may not be connected to the network switch of server rack1004A. For example, the network switch may be configured to connect to another network switch of the static network fabric via a QSFP+ fiber optic connection and may not have networking ports to support twisted pair cabling or coaxial cabling. Thus, any of the cables of the set of network cables1006A that are twisted pair cabling or coaxial cabling and have a corresponding cable termination connector will not be connected to the network switch of server rack1004A. Similarly, a networking device of server rack1004B can be connected to one or more cables of the set of network cables1006B, and a networking device of server rack1004N can be connected to one or more cables of the set of network cables1006N.

To make the connections between the static network fabric1012of the prefab factory1002and the computing devices of Prefab Region1004and/or Prefab Region1032, the manager service1022and network service1024can perform operations to generate a connection plan. The connection plan can include instructions usable (e.g., by operations personnel in the prefab factory1002) to identify the appropriate network cables of the set of network cables at each location to connect to the server racks (e.g., server racks1004A-1004N, server racks1034A-1034N) and identify corresponding ports at a computing device (e.g., a top of rack switch) at which the identified cables can be connected. Server racks in the Prefab Region1004may connect to the static network fabric1012via different connections. For example, server rack1004A may connect via one or more QSFP+ connections of the set of network cables1006A, while server rack1034A may connect via one or more SFP connections of the set of network cables1036A.

To generate the connection plan, the network service1024can determine the configuration of the computing devices in the prefab regions and determine the static network topology of the static network fabric1012. The configuration of the computing devices can include information specifying the physical networking connections between the server devices and networking devices on each server rack. For example, each server device on server rack1004A may be connected to a specific, identified port on a top of rack switch on the server rack1004A. The configuration of server rack1004A can include information that identifies the connection between each server device and the specific port on the top of rack switch to which it is connected. The configuration of the computing devices in Prefab Region1004may be pre-determined, for example as part of the initial construction of each server rack in the physical inventory (e.g., physical inventory224ofFIG.2). The configuration can be stored at a data store accessible to network service1024as configuration parameters.

Similarly, the static network topology of static network fabric1012can specify the physical connection of the network cables1008to ports of switches in networking infrastructure1010as well as the identity and type of cables that terminate at locations in the prefab factory1002as part of the set of network cables at each location (e.g., set of network cables1006A-1006N, set of network cables1036A-1036N). Information describing the static network topology may be stored in the data store accessible to network service1024.

As depicted inFIGS.10A and10B, the prefab factory1002may be configured to support prefab region build operations on both Prefab Region1004and Prefab Region1032simultaneously. In some embodiments, the server racks1004A-1004N of Prefab Region1004may be installed at different locations than the server racks1034A-1034N of Prefab Region1032. In some embodiments, the server racks1034A-1034N of Prefab Region1032may be installed at the same locations as used for server racks1004A-1004N after the server racks1004A-1004N have been configured for transmission to a destination site and removed from the prefab factory1002. In this case, the sets of network cables1036A-1036N may be the same as the sets of network cables1006A-1006N used to connect server racks1004A-1004N to static network fabric1012but connected to server racks1034A-1034N according to the connection plan corresponding to Prefab Region1032.

As described above with respect toFIG.7, the prefab factory1002can support updates and other modifications to the physical resources during prefab region build operations. The static network fabric1012can support the installation of additional server racks for Prefab Region1004and/or Prefab Region1032according to an updated build request. If additional computing devices are added to a prefab region, the network service1024can generate an updated connection plan having instructions to connect the additional computing devices to the static network fabric1012.

FIG.11is an example method1100for generating a connection plan to connect a plurality of computing devices (e.g., server racks1004A ofFIG.10) to a set of networking cables (e.g., set of networking cables1006A ofFIG.10) of a static network fabric (e.g., static network fabric1012ofFIG.10) in a prefab factory (e.g., prefab factory1002ofFIG.10), according to at least one embodiment. The method1100may be performed by one or more computing devices of a CSP that host prefab services (e.g., prefab services1020ofFIG.10), including a network service (e.g., network service1024).

The method1100may begin at block1102with the network service can receive a physical build request. The physical build request can specify a plurality of computing devices to connect to a static network fabric of a data center (e.g., prefab factory1002). The physical build request may be an example of the physical build request generated by the manager service at the beginning of prefab region build operations and described above with respect to method700ofFIG.7. The network service may receive the physical build request from the manager service.

At block1104, the network service can determine a configuration of the plurality of the computing devices. The configuration can specify the network connections between the plurality of computing devices. For example, the plurality of computing devices may be server devices on a server rack, each communicatively connected to a port on a top of rack switch. The configuration may therefore identify the server devices, the corresponding port of the top of rack switch to which the server devices are connected, and the network settings associated with the connections. In some embodiments, determining the configuration of the computing devices can include determining an arrangement of the network connections of the computing devices to the top of rack switch or other networking device. In some embodiments, determining the configuration of the computing devices can include obtaining configuration parameters from a data store. The configuration parameters can include information that identifies the connection between each server device and the specific port the networking device to which it is connected.

At block1106, the network service can determine a static network fabric topology of the static network fabric of the data center. The static network topology may define the network connections between one or more networking devices (e.g., leaf switches, spine switches, aggregate switches, core switches, etc.) of the network infrastructure of the static network fabric of the prefab factory. For example, the static network topology may identify ports and devices to which each networking device is connected in the static network fabric. The static network topology may also specify one or more cable termination connectors at locations in the prefab factory. The network service can determine the configuration and the static network topology in response to receiving the physical build request. In some embodiments, determining the static network fabric topology can include obtaining a predetermined topology of the static network fabric for the data center from the data store. In some embodiments, the static network topology may correspond to a Clos network.

At block1108, the network service can use the configuration and the static network fabric topology to generate a connection plan for connecting a set of networking cables of the static network fabric to the computing devices. The set of networking cables may be determined from the networking cables (e.g., network cables1008) of the static network fabric that are configured to terminate at a location in the data center. Terminating at the location can include having a cable termination connector at an end of the network cable that can be connected to a computing device. The location may correspond to a position at which the computing devices may be positioned in the prefab factory for installation to support prefab region build operations. The connection plan can include instructions usable (e.g., by operations personnel) to connect each networking cable of the set of networking cables to a corresponding networking port of a networking device of the computing devices to form a region network.

In some embodiments, the network service can determine an additional configuration of additional computing devices connected to a second networking device. The additional computing devices and the second networking device may be a new server rack installed at the prefab factory to support a modification to a prefab region being built therein. The additional configuration may be similar to the configuration and may specify the network connections between the additional computing devices and the second networking device. Using the configuration of the computing devices, the additional configuration of the additional computing devices, and the static network topology, the network service can then generate an updated connection plan that has instructions to connect the additional computing devices to the static network fabric to form an updated region network with the previous installed computing devices of the prefab region.

Example Infrastructure as a Service Architectures

As noted above, infrastructure as a service (IaaS) is one particular type of cloud computing. IaaS can be configured to provide virtualized computing resources over a public network (e.g., the Internet). In an IaaS model, a cloud computing provider can host the infrastructure components (e.g., servers, storage devices, network nodes (e.g., hardware), deployment software, platform virtualization (e.g., a hypervisor layer), or the like). In some cases, an IaaS provider may also supply a variety of services to accompany those infrastructure components (example services include billing software, monitoring software, logging software, load balancing software, clustering software, etc.). Thus, as these services may be policy-driven, IaaS users may be able to implement policies to drive load balancing to maintain application availability and performance.

The VCN1206can include a local peering gateway (LPG)1210that can be communicatively coupled to a secure shell (SSH) VCN1212via an LPG1210contained in the SSH VCN1212. The SSH VCN1212can include an SSH subnet1214, and the SSH VCN1212can be communicatively coupled to a control plane VCN1216via the LPG1210contained in the control plane VCN1216. Also, the SSH VCN1212can be communicatively coupled to a data plane VCN1218via an LPG1210. The control plane VCN1216and the data plane VCN1218can be contained in a service tenancy1219that can be owned and/or operated by the IaaS provider.

The control plane VCN1216can include a control plane demilitarized zone (DMZ) tier1220that acts as a perimeter network (e.g., portions of a corporate network between the corporate intranet and external networks). The DMZ-based servers may have restricted responsibilities and help keep breaches contained. Additionally, the DMZ tier1220can include one or more load balancer (LB) subnet(s)1222, a control plane app tier1224that can include app subnet(s)1226, a control plane data tier1228that can include database (DB) subnet(s)1230(e.g., frontend DB subnet(s) and/or backend DB subnet(s)). The LB subnet(s)1222contained in the control plane DMZ tier1220can be communicatively coupled to the app subnet(s)1226contained in the control plane app tier1224and an Internet gateway1234that can be contained in the control plane VCN1216, and the app subnet(s)1226can be communicatively coupled to the DB subnet(s)1230contained in the control plane data tier1228and a service gateway1236and a network address translation (NAT) gateway1238. The control plane VCN1216can include the service gateway1236and the NAT gateway1238.

The control plane VCN1216can include a data plane mirror app tier1240that can include app subnet(s)1226. The app subnet(s)1226contained in the data plane mirror app tier1240can include a virtual network interface controller (VNIC)1242that can execute a compute instance1244. The compute instance1244can communicatively couple the app subnet(s)1226of the data plane mirror app tier1240to app subnet(s)1226that can be contained in a data plane app tier1246.

The data plane VCN1218can include the data plane app tier1246, a data plane DMZ tier1248, and a data plane data tier1250. The data plane DMZ tier1248can include LB subnet(s)1222that can be communicatively coupled to the app subnet(s)1226of the data plane app tier1246and the Internet gateway1234of the data plane VCN1218. The app subnet(s)1226can be communicatively coupled to the service gateway1236of the data plane VCN1218and the NAT gateway1238of the data plane VCN1218. The data plane data tier1250can also include the DB subnet(s)1230that can be communicatively coupled to the app subnet(s)1226of the data plane app tier1246.

The Internet gateway1234of the control plane VCN1216and of the data plane VCN1218can be communicatively coupled to a metadata management service1252that can be communicatively coupled to public Internet1254. Public Internet1254can be communicatively coupled to the NAT gateway1238of the control plane VCN1216and of the data plane VCN1218. The service gateway1236of the control plane VCN1216and of the data plane VCN1218can be communicatively couple to cloud services1256.

In some examples, the service gateway1236of the control plane VCN1216or of the data plane VCN1218can make application programming interface (API) calls to cloud services1256without going through public Internet1254. The API calls to cloud services1256from the service gateway1236can be one-way: the service gateway1236can make API calls to cloud services1256, and cloud services1256can send requested data to the service gateway1236. But, cloud services1256may not initiate API calls to the service gateway1236.

In some examples, the secure host tenancy1204can be directly connected to the service tenancy1219, which may be otherwise isolated. The secure host subnet1208can communicate with the SSH subnet1214through an LPG1210that may enable two-way communication over an otherwise isolated system. Connecting the secure host subnet1208to the SSH subnet1214may give the secure host subnet1208access to other entities within the service tenancy1219.

The control plane VCN1216may allow users of the service tenancy1219to set up or otherwise provision desired resources. Desired resources provisioned in the control plane VCN1216may be deployed or otherwise used in the data plane VCN1218. In some examples, the control plane VCN1216can be isolated from the data plane VCN1218, and the data plane mirror app tier1240of the control plane VCN1216can communicate with the data plane app tier1246of the data plane VCN1218via VNICs1242that can be contained in the data plane mirror app tier1240and the data plane app tier1246.

In some examples, users of the system, or customers, can make requests, for example create, read, update, or delete (CRUD) operations, through public Internet1254that can communicate the requests to the metadata management service1252. The metadata management service1252can communicate the request to the control plane VCN1216through the Internet gateway1234. The request can be received by the LB subnet(s)1222contained in the control plane DMZ tier1220. The LB subnet(s)1222may determine that the request is valid, and in response to this determination, the LB subnet(s)1222can transmit the request to app subnet(s)1226contained in the control plane app tier1224. If the request is validated and requires a call to public Internet1254, the call to public Internet1254may be transmitted to the NAT gateway1238that can make the call to public Internet1254. Memory that may be desired to be stored by the request can be stored in the DB subnet(s)1230.

In some examples, the data plane mirror app tier1240can facilitate direct communication between the control plane VCN1216and the data plane VCN1218. For example, changes, updates, or other suitable modifications to configuration may be desired to be applied to the resources contained in the data plane VCN1218. Via a VNIC1242, the control plane VCN1216can directly communicate with, and can thereby execute the changes, updates, or other suitable modifications to configuration to, resources contained in the data plane VCN1218.

In some embodiments, the control plane VCN1216and the data plane VCN1218can be contained in the service tenancy1219. In this case, the user, or the customer, of the system may not own or operate either the control plane VCN1216or the data plane VCN1218. Instead, the IaaS provider may own or operate the control plane VCN1216and the data plane VCN1218, both of which may be contained in the service tenancy1219. This embodiment can enable isolation of networks that may prevent users or customers from interacting with other users', or other customers', resources. Also, this embodiment may allow users or customers of the system to store databases privately without needing to rely on public Internet1254, which may not have a desired level of threat prevention, for storage.

In other embodiments, the LB subnet(s)1222contained in the control plane VCN1216can be configured to receive a signal from the service gateway1236. In this embodiment, the control plane VCN1216and the data plane VCN1218may be configured to be called by a customer of the IaaS provider without calling public Internet1254. Customers of the IaaS provider may desire this embodiment since database(s) that the customers use may be controlled by the IaaS provider and may be stored on the service tenancy1219, which may be isolated from public Internet1254.

FIG.13is a block diagram1300illustrating another example pattern of an IaaS architecture, according to at least one embodiment. Service operators1302(e.g., service operators1202ofFIG.12) can be communicatively coupled to a secure host tenancy1304(e.g., the secure host tenancy1204ofFIG.12) that can include a virtual cloud network (VCN)1306(e.g., the VCN1206ofFIG.12) and a secure host subnet1308(e.g., the secure host subnet1208ofFIG.12). The VCN1306can include a local peering gateway (LPG)1310(e.g., the LPG1210ofFIG.12) that can be communicatively coupled to a secure shell (SSH) VCN1312(e.g., the SSH VCN1212ofFIG.12) via an LPG1210contained in the SSH VCN1312. The SSH VCN1312can include an SSH subnet1314(e.g., the SSH subnet1214ofFIG.12), and the SSH VCN1312can be communicatively coupled to a control plane VCN1316(e.g., the control plane VCN1216ofFIG.12) via an LPG1310contained in the control plane VCN1316. The control plane VCN1316can be contained in a service tenancy1319(e.g., the service tenancy1219ofFIG.12), and the data plane VCN1318(e.g., the data plane VCN1218ofFIG.12) can be contained in a customer tenancy1321that may be owned or operated by users, or customers, of the system.

The control plane VCN1316can include a control plane DMZ tier1320(e.g., the control plane DMZ tier1220ofFIG.12) that can include LB subnet(s)1322(e.g., LB subnet(s)1222ofFIG.12), a control plane app tier1324(e.g., the control plane app tier1224ofFIG.12) that can include app subnet(s)1326(e.g., app subnet(s)1226ofFIG.12), a control plane data tier1328(e.g., the control plane data tier1228ofFIG.12) that can include database (DB) subnet(s)1330(e.g., similar to DB subnet(s)1230ofFIG.12). The LB subnet(s)1322contained in the control plane DMZ tier1320can be communicatively coupled to the app subnet(s)1326contained in the control plane app tier1324and an Internet gateway1334(e.g., the Internet gateway1234ofFIG.12) that can be contained in the control plane VCN1316, and the app subnet(s)1326can be communicatively coupled to the DB subnet(s)1330contained in the control plane data tier1328and a service gateway1336(e.g., the service gateway ofFIG.12) and a network address translation (NAT) gateway1338(e.g., the NAT gateway1238ofFIG.12). The control plane VCN1316can include the service gateway1336and the NAT gateway1338.

The control plane VCN1316can include a data plane mirror app tier1340(e.g., the data plane mirror app tier1240ofFIG.12) that can include app subnet(s)1326. The app subnet(s)1326contained in the data plane mirror app tier1340can include a virtual network interface controller (VNIC)1342(e.g., the VNIC of1242) that can execute a compute instance1344(e.g., similar to the compute instance1244ofFIG.12). The compute instance1344can facilitate communication between the app subnet(s)1326of the data plane mirror app tier1340and the app subnet(s)1326that can be contained in a data plane app tier1346(e.g., the data plane app tier1246ofFIG.12) via the VNIC1342contained in the data plane mirror app tier1340and the VNIC1342contained in the data plane app tier1346.

The Internet gateway1334contained in the control plane VCN1316can be communicatively coupled to a metadata management service1352(e.g., the metadata management service1252ofFIG.12) that can be communicatively coupled to public Internet1354(e.g., public Internet1254ofFIG.12). Public Internet1354can be communicatively coupled to the NAT gateway1338contained in the control plane VCN1316. The service gateway1336contained in the control plane VCN1316can be communicatively couple to cloud services1356(e.g., cloud services1256ofFIG.12).

In some examples, the data plane VCN1318can be contained in the customer tenancy1321. In this case, the IaaS provider may provide the control plane VCN1316for each customer, and the IaaS provider may, for each customer, set up a unique compute instance1344that is contained in the service tenancy1319. Each compute instance1344may allow communication between the control plane VCN1316, contained in the service tenancy1319, and the data plane VCN1318that is contained in the customer tenancy1321. The compute instance1344may allow resources, that are provisioned in the control plane VCN1316that is contained in the service tenancy1319, to be deployed or otherwise used in the data plane VCN1318that is contained in the customer tenancy1321.

In other examples, the customer of the IaaS provider may have databases that live in the customer tenancy1321. In this example, the control plane VCN1316can include the data plane mirror app tier1340that can include app subnet(s)1326. The data plane mirror app tier1340can reside in the data plane VCN1318, but the data plane mirror app tier1340may not live in the data plane VCN1318. That is, the data plane mirror app tier1340may have access to the customer tenancy1321, but the data plane mirror app tier1340may not exist in the data plane VCN1318or be owned or operated by the customer of the IaaS provider. The data plane mirror app tier1340may be configured to make calls to the data plane VCN1318but may not be configured to make calls to any entity contained in the control plane VCN1316. The customer may desire to deploy or otherwise use resources in the data plane VCN1318that are provisioned in the control plane VCN1316, and the data plane mirror app tier1340can facilitate the desired deployment, or other usage of resources, of the customer.

In some embodiments, the customer of the IaaS provider can apply filters to the data plane VCN1318. In this embodiment, the customer can determine what the data plane VCN1318can access, and the customer may restrict access to public Internet1354from the data plane VCN1318. The IaaS provider may not be able to apply filters or otherwise control access of the data plane VCN1318to any outside networks or databases. Applying filters and controls by the customer onto the data plane VCN1318, contained in the customer tenancy1321, can help isolate the data plane VCN1318from other customers and from public Internet1354.

In some embodiments, cloud services1356can be called by the service gateway1336to access services that may not exist on public Internet1354, on the control plane VCN1316, or on the data plane VCN1318. The connection between cloud services1356and the control plane VCN1316or the data plane VCN1318may not be live or continuous. Cloud services1356may exist on a different network owned or operated by the IaaS provider. Cloud services1356may be configured to receive calls from the service gateway1336and may be configured to not receive calls from public Internet1354. Some cloud services1356may be isolated from other cloud services1356, and the control plane VCN1316may be isolated from cloud services1356that may not be in the same region as the control plane VCN1316. For example, the control plane VCN1316may be located in “Region 1,” and cloud service “Deployment 12,” may be located in Region 1 and in “Region 2.” If a call to Deployment 12 is made by the service gateway1336contained in the control plane VCN1316located in Region 1, the call may be transmitted to Deployment 12 in Region 1. In this example, the control plane VCN1316, or Deployment 12 in Region 1, may not be communicatively coupled to, or otherwise in communication with, Deployment 12 in Region 2.

FIG.14is a block diagram1400illustrating another example pattern of an IaaS architecture, according to at least one embodiment. Service operators1402(e.g., service operators1202ofFIG.12) can be communicatively coupled to a secure host tenancy1404(e.g., the secure host tenancy1204ofFIG.12) that can include a virtual cloud network (VCN)1406(e.g., the VCN1206ofFIG.12) and a secure host subnet1408(e.g., the secure host subnet1208ofFIG.12). The VCN1406can include an LPG1410(e.g., the LPG1210ofFIG.12) that can be communicatively coupled to an SSH VCN1412(e.g., the SSH VCN1212ofFIG.12) via an LPG1410contained in the SSH VCN1412. The SSH VCN1412can include an SSH subnet1414(e.g., the SSH subnet1214ofFIG.12), and the SSH VCN1412can be communicatively coupled to a control plane VCN1416(e.g., the control plane VCN1216ofFIG.12) via an LPG1410contained in the control plane VCN1416and to a data plane VCN1418(e.g., the data plane1218ofFIG.12) via an LPG1410contained in the data plane VCN1418. The control plane VCN1416and the data plane VCN1418can be contained in a service tenancy1419(e.g., the service tenancy1219ofFIG.12).

The control plane VCN1416can include a control plane DMZ tier1420(e.g., the control plane DMZ tier1220ofFIG.12) that can include load balancer (LB) subnet(s)1422(e.g., LB subnet(s)1222ofFIG.12), a control plane app tier1424(e.g., the control plane app tier1224ofFIG.12) that can include app subnet(s)1426(e.g., similar to app subnet(s)1226ofFIG.12), a control plane data tier1428(e.g., the control plane data tier1228ofFIG.12) that can include DB subnet(s)1430. The LB subnet(s)1422contained in the control plane DMZ tier1420can be communicatively coupled to the app subnet(s)1426contained in the control plane app tier1424and to an Internet gateway1434(e.g., the Internet gateway1234ofFIG.12) that can be contained in the control plane VCN1416, and the app subnet(s)1426can be communicatively coupled to the DB subnet(s)1430contained in the control plane data tier1428and to a service gateway1436(e.g., the service gateway ofFIG.12) and a network address translation (NAT) gateway1438(e.g., the NAT gateway1238ofFIG.12). The control plane VCN1416can include the service gateway1436and the NAT gateway1438.

The data plane VCN1418can include a data plane app tier1446(e.g., the data plane app tier1246ofFIG.12), a data plane DMZ tier1448(e.g., the data plane DMZ tier1248ofFIG.12), and a data plane data tier1450(e.g., the data plane data tier1250ofFIG.12). The data plane DMZ tier1448can include LB subnet(s)1422that can be communicatively coupled to trusted app subnet(s)1460and untrusted app subnet(s)1462of the data plane app tier1446and the Internet gateway1434contained in the data plane VCN1418. The trusted app subnet(s)1460can be communicatively coupled to the service gateway1436contained in the data plane VCN1418, the NAT gateway1438contained in the data plane VCN1418, and DB subnet(s)1430contained in the data plane data tier1450. The untrusted app subnet(s)1462can be communicatively coupled to the service gateway1436contained in the data plane VCN1418and DB subnet(s)1430contained in the data plane data tier1450. The data plane data tier1450can include DB subnet(s)1430that can be communicatively coupled to the service gateway1436contained in the data plane VCN1418.

The untrusted app subnet(s)1462can include one or more primary VNICs1464(1)-(N) that can be communicatively coupled to tenant virtual machines (VMs)1466(1)-(N). Each tenant VM1466(1)-(N) can be communicatively coupled to a respective app subnet1467(1)-(N) that can be contained in respective container egress VCNs1468(1)-(N) that can be contained in respective customer tenancies1470(1)-(N). Respective secondary VNICs1472(1)-(N) can facilitate communication between the untrusted app subnet(s)1462contained in the data plane VCN1418and the app subnet contained in the container egress VCNs1468(1)-(N). Each container egress VCNs1468(1)-(N) can include a NAT gateway1438that can be communicatively coupled to public Internet1454(e.g., public Internet1254ofFIG.12).

The Internet gateway1434contained in the control plane VCN1416and contained in the data plane VCN1418can be communicatively coupled to a metadata management service1452(e.g., the metadata management system1252ofFIG.12) that can be communicatively coupled to public Internet1454. Public Internet1454can be communicatively coupled to the NAT gateway1438contained in the control plane VCN1416and contained in the data plane VCN1418. The service gateway1436contained in the control plane VCN1416and contained in the data plane VCN1418can be communicatively couple to cloud services1456.

In some embodiments, the data plane VCN1418can be integrated with customer tenancies1470. This integration can be useful or desirable for customers of the IaaS provider in some cases such as a case that may desire support when executing code. The customer may provide code to run that may be destructive, may communicate with other customer resources, or may otherwise cause undesirable effects. In response to this, the IaaS provider may determine whether to run code given to the IaaS provider by the customer.

In some examples, the customer of the IaaS provider may grant temporary network access to the IaaS provider and request a function to be attached to the data plane app tier1446. Code to run the function may be executed in the VMs1466(1)-(N), and the code may not be configured to run anywhere else on the data plane VCN1418. Each VM1466(1)-(N) may be connected to one customer tenancy1470. Respective containers1471(1)-(N) contained in the VMs1466(1)-(N) may be configured to run the code. In this case, there can be a dual isolation (e.g., the containers1471(1)-(N) running code, where the containers1471(1)-(N) may be contained in at least the VM1466(1)-(N) that are contained in the untrusted app subnet(s)1462), which may help prevent incorrect or otherwise undesirable code from damaging the network of the IaaS provider or from damaging a network of a different customer. The containers1471(1)-(N) may be communicatively coupled to the customer tenancy1470and may be configured to transmit or receive data from the customer tenancy1470. The containers1471(1)-(N) may not be configured to transmit or receive data from any other entity in the data plane VCN1418. Upon completion of running the code, the IaaS provider may kill or otherwise dispose of the containers1471(1)-(N).

In some embodiments, the trusted app subnet(s)1460may run code that may be owned or operated by the IaaS provider. In this embodiment, the trusted app subnet(s)1460may be communicatively coupled to the DB subnet(s)1430and be configured to execute CRUD operations in the DB subnet(s)1430. The untrusted app subnet(s)1462may be communicatively coupled to the DB subnet(s)1430, but in this embodiment, the untrusted app subnet(s) may be configured to execute read operations in the DB subnet(s)1430. The containers1471(1)-(N) that can be contained in the VM1466(1)-(N) of each customer and that may run code from the customer may not be communicatively coupled with the DB subnet(s)1430.

In other embodiments, the control plane VCN1416and the data plane VCN1418may not be directly communicatively coupled. In this embodiment, there may be no direct communication between the control plane VCN1416and the data plane VCN1418. However, communication can occur indirectly through at least one method. An LPG1410may be established by the IaaS provider that can facilitate communication between the control plane VCN1416and the data plane VCN1418. In another example, the control plane VCN1416or the data plane VCN1418can make a call to cloud services1456via the service gateway1436. For example, a call to cloud services1456from the control plane VCN1416can include a request for a service that can communicate with the data plane VCN1418.

FIG.15is a block diagram1500illustrating another example pattern of an IaaS architecture, according to at least one embodiment. Service operators1502(e.g., service operators1202ofFIG.12) can be communicatively coupled to a secure host tenancy1504(e.g., the secure host tenancy1204ofFIG.12) that can include a virtual cloud network (VCN)1506(e.g., the VCN1206ofFIG.12) and a secure host subnet1508(e.g., the secure host subnet1208ofFIG.12). The VCN1506can include an LPG1510(e.g., the LPG1210ofFIG.12) that can be communicatively coupled to an SSH VCN1512(e.g., the SSH VCN1212ofFIG.12) via an LPG1510contained in the SSH VCN1512. The SSH VCN1512can include an SSH subnet1514(e.g., the SSH subnet1214ofFIG.12), and the SSH VCN1512can be communicatively coupled to a control plane VCN1516(e.g., the control plane VCN1216ofFIG.12) via an LPG1510contained in the control plane VCN1516and to a data plane VCN1518(e.g., the data plane1218ofFIG.12) via an LPG1510contained in the data plane VCN1518. The control plane VCN1516and the data plane VCN1518can be contained in a service tenancy1519(e.g., the service tenancy1219ofFIG.12).

The control plane VCN1516can include a control plane DMZ tier1520(e.g., the control plane DMZ tier1220ofFIG.12) that can include LB subnet(s)1522(e.g., LB subnet(s)1222ofFIG.12), a control plane app tier1524(e.g., the control plane app tier1224ofFIG.12) that can include app subnet(s)1526(e.g., app subnet(s)1226ofFIG.12), a control plane data tier1528(e.g., the control plane data tier1228ofFIG.12) that can include DB subnet(s)1530(e.g., DB subnet(s)1430ofFIG.14). The LB subnet(s)1522contained in the control plane DMZ tier1520can be communicatively coupled to the app subnet(s)1526contained in the control plane app tier1524and to an Internet gateway1534(e.g., the Internet gateway1234ofFIG.12) that can be contained in the control plane VCN1516, and the app subnet(s)1526can be communicatively coupled to the DB subnet(s)1530contained in the control plane data tier1528and to a service gateway1536(e.g., the service gateway ofFIG.12) and a network address translation (NAT) gateway1538(e.g., the NAT gateway1238ofFIG.12). The control plane VCN1516can include the service gateway1536and the NAT gateway1538.

The data plane VCN1518can include a data plane app tier1546(e.g., the data plane app tier1246ofFIG.12), a data plane DMZ tier1548(e.g., the data plane DMZ tier1248ofFIG.12), and a data plane data tier1550(e.g., the data plane data tier1250ofFIG.12). The data plane DMZ tier1548can include LB subnet(s)1522that can be communicatively coupled to trusted app subnet(s)1560(e.g., trusted app subnet(s)1460ofFIG.14) and untrusted app subnet(s)1562(e.g., untrusted app subnet(s)1462ofFIG.14) of the data plane app tier1546and the Internet gateway1534contained in the data plane VCN1518. The trusted app subnet(s)1560can be communicatively coupled to the service gateway1536contained in the data plane VCN1518, the NAT gateway1538contained in the data plane VCN1518, and DB subnet(s)1530contained in the data plane data tier1550. The untrusted app subnet(s)1562can be communicatively coupled to the service gateway1536contained in the data plane VCN1518and DB subnet(s)1530contained in the data plane data tier1550. The data plane data tier1550can include DB subnet(s)1530that can be communicatively coupled to the service gateway1536contained in the data plane VCN1518.

The untrusted app subnet(s)1562can include primary VNICs1564(1)-(N) that can be communicatively coupled to tenant virtual machines (VMs)1566(1)-(N) residing within the untrusted app subnet(s)1562. Each tenant VM1566(1)-(N) can run code in a respective container1567(1)-(N), and be communicatively coupled to an app subnet1526that can be contained in a data plane app tier1546that can be contained in a container egress VCN1568. Respective secondary VNICs1572(1)-(N) can facilitate communication between the untrusted app subnet(s)1562contained in the data plane VCN1518and the app subnet contained in the container egress VCN1568. The container egress VCN can include a NAT gateway1538that can be communicatively coupled to public Internet1554(e.g., public Internet1254ofFIG.12).

The Internet gateway1534contained in the control plane VCN1516and contained in the data plane VCN1518can be communicatively coupled to a metadata management service1552(e.g., the metadata management system1252ofFIG.12) that can be communicatively coupled to public Internet1554. Public Internet1554can be communicatively coupled to the NAT gateway1538contained in the control plane VCN1516and contained in the data plane VCN1518. The service gateway1536contained in the control plane VCN1516and contained in the data plane VCN1518can be communicatively couple to cloud services1556.

In some examples, the pattern illustrated by the architecture of block diagram1500ofFIG.15may be considered an exception to the pattern illustrated by the architecture of block diagram1400ofFIG.14and may be desirable for a customer of the IaaS provider if the IaaS provider cannot directly communicate with the customer (e.g., a disconnected region). The respective containers1567(1)-(N) that are contained in the VMs1566(1)-(N) for each customer can be accessed in real-time by the customer. The containers1567(1)-(N) may be configured to make calls to respective secondary VNICs1572(1)-(N) contained in app subnet(s)1526of the data plane app tier1546that can be contained in the container egress VCN1568. The secondary VNICs1572(1)-(N) can transmit the calls to the NAT gateway1538that may transmit the calls to public Internet1554. In this example, the containers1567(1)-(N) that can be accessed in real-time by the customer can be isolated from the control plane VCN1516and can be isolated from other entities contained in the data plane VCN1518. The containers1567(1)-(N) may also be isolated from resources from other customers.

In other examples, the customer can use the containers1567(1)-(N) to call cloud services1556. In this example, the customer may run code in the containers1567(1)-(N) that requests a service from cloud services1556. The containers1567(1)-(N) can transmit this request to the secondary VNICs1572(1)-(N) that can transmit the request to the NAT gateway that can transmit the request to public Internet1554. Public Internet1554can transmit the request to LB subnet(s)1522contained in the control plane VCN1516via the Internet gateway1534. In response to determining the request is valid, the LB subnet(s) can transmit the request to app subnet(s)1526that can transmit the request to cloud services1556via the service gateway1536.

FIG.16illustrates an example computer system1600, in which various embodiments may be implemented. The system1600may be used to implement any of the computer systems described above. As shown in the figure, computer system1600includes a processing unit1604that communicates with a number of peripheral subsystems via a bus subsystem1602. These peripheral subsystems may include a processing acceleration unit1606, an I/O subsystem1608, a storage subsystem1618and a communications subsystem1624. Storage subsystem1618includes tangible computer-readable storage media1622and a system memory1610.

Processing unit1604, which can be implemented as one or more integrated circuits (e.g., a conventional microprocessor or microcontroller), controls the operation of computer system1600. One or more processors may be included in processing unit1604. These processors may include single core or multicore processors. In certain embodiments, processing unit1604may be implemented as one or more independent processing units1632and/or1634with single or multicore processors included in each processing unit. In other embodiments, processing unit1604may also be implemented as a quad-core processing unit formed by integrating two dual-core processors into a single chip.

In various embodiments, processing unit1604can execute a variety of programs in response to program code and can maintain multiple concurrently executing programs or processes. At any given time, some or all of the program code to be executed can be resident in processor(s)1604and/or in storage subsystem1618. Through suitable programming, processor(s)1604can provide various functionalities described above. Computer system1600may additionally include a processing acceleration unit1606, which can include a digital signal processor (DSP), a special-purpose processor, and/or the like.

Computer system1600may comprise a storage subsystem1618that provides a tangible non-transitory computer-readable storage medium for storing software and data constructs that provide the functionality of the embodiments described in this disclosure. The software can include programs, code, instructions, scripts, etc., that when executed by one or more cores or processors of processing unit1604provide the functionality described above. Storage subsystem1618may also provide a repository for storing data used in accordance with the present disclosure.

As depicted in the example inFIG.16, storage subsystem1618can include various components including a system memory1610, computer-readable storage media1622, and a computer readable storage media reader1620. System memory1610may store program instructions that are loadable and executable by processing unit1604. System memory1610may also store data that is used during the execution of the instructions and/or data that is generated during the execution of the program instructions. Various different kinds of programs may be loaded into system memory1610including but not limited to client applications, Web browsers, mid-tier applications, relational database management systems (RDBMS), virtual machines, containers, etc.

System memory1610may also store an operating system1616. Examples of operating system1616may include various versions of Microsoft Windows®, Apple Macintosh®, and/or Linux operating systems, a variety of commercially-available UNIX® or UNIX-like operating systems (including without limitation the variety of GNU/Linux operating systems, the Google Chrome® OS, and the like) and/or mobile operating systems such as iOS, Windows® Phone, Android® OS, BlackBerry® OS, and Palm® OS operating systems. In certain implementations where computer system1600executes one or more virtual machines, the virtual machines along with their guest operating systems (GOSs) may be loaded into system memory1610and executed by one or more processors or cores of processing unit1604.

System memory1610can come in different configurations depending upon the type of computer system1600. For example, system memory1610may be volatile memory (such as random access memory (RAM)) and/or non-volatile memory (such as read-only memory (ROM), flash memory, etc.). Different types of RAM configurations may be provided including a static random access memory (SRAM), a dynamic random access memory (DRAM), and others. In some implementations, system memory1610may include a basic input/output system (BIOS) containing basic routines that help to transfer information between elements within computer system1600, such as during start-up.

Computer-readable storage media1622may represent remote, local, fixed, and/or removable storage devices plus storage media for temporarily and/or more permanently containing, storing, computer-readable information for use by computer system1600including instructions executable by processing unit1604of computer system1600.

Computer-readable storage media1622can include any appropriate media known or used in the art, including storage media and communication media, such as but not limited to, volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information. This can include tangible computer-readable storage media such as RAM, ROM, electronically erasable programmable ROM (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disk (DVD), or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other tangible computer readable media.

Machine-readable instructions executable by one or more processors or cores of processing unit1604may be stored on a non-transitory computer-readable storage medium. A non-transitory computer-readable storage medium can include physically tangible memory or storage devices that include volatile memory storage devices and/or non-volatile storage devices. Examples of non-transitory computer-readable storage medium include magnetic storage media (e.g., disk or tapes), optical storage media (e.g., DVDs, CDs), various types of RAM, ROM, or flash memory, hard drives, floppy drives, detachable memory drives (e.g., USB drives), or other type of storage device.

Communications subsystem1624provides an interface to other computer systems and networks. Communications subsystem1624serves as an interface for receiving data from and transmitting data to other systems from computer system1600. For example, communications subsystem1624may enable computer system1600to connect to one or more devices via the Internet. In some embodiments communications subsystem1624can include radio frequency (RF) transceiver components for accessing wireless voice and/or data networks (e.g., using cellular telephone technology, advanced data network technology, 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 communications subsystem1624can provide wired network connectivity (e.g., Ethernet) in addition to or instead of a wireless interface.

In some embodiments, communications subsystem1624may also receive input communication in the form of structured and/or unstructured data feeds1626, event streams1628, event updates1630, and the like on behalf of one or more users who may use computer system1600.

Communications subsystem1624may also be configured to output the structured and/or unstructured data feeds1626, event streams1628, event updates1630, and the like to one or more databases that may be in communication with one or more streaming data source computers coupled to computer system1600.