Accelerating and maintaining large-scale cloud deployment

A deployment specification for implementing a requested cloud service is received by a server. A resource pool is queried by the server for available resources required by the deployment specifications. The resource pool includes a plurality of pre-configured resources for implementing one or more cloud services. A first resource required by the deployment specification is determined to be available within the resource pool. First resource metadata associated with the first resource is requested from a database. The resource metadata includes a resource identifier and a resource type of the first resource. The resource metadata associated with the first resource is received from the database. The first resource is deployed from the resource pool according to the deployment specification to implement the requested cloud service.

TECHNICAL FIELD

The present invention relates generally to a system, and computer program product for cloud deployment. More particularly, the present invention relates to a system, and computer program product to accelerate and maintain a large-scale cloud deployment.

BACKGROUND

Cloud computing enables access to shared configurable system resources that can be provisioned over a network, such as the Internet, to provide computing services to users. The computing resources may include physical or virtual components within a computer system that are used to provide a computing service such as central processing units (CPUs), random access memory and virtual memory, storage devices, subsystems, clusters, virtual machines, and network throughput. Some forms of cloud computing include infrastructure as a service (IaaS), software as a service (SaaS), and platform as a service (PaaS). In IaaS, a cloud provider hosts infrastructure components traditionally present in an on-premises data processing center such as servers, storage and networking hardware, to provide computing services. In PaaS, a cloud provider offers, in addition to the underlying infrastructure components, operating systems and middleware to provide computing services. In SaaS, a cloud provider offers the cloud computing infrastructure as well as applications for users. In order for a cloud provider to offer computing services to a user, resources of the cloud provider must be configured and deployed according to the cloud computing specifications of the user.

SUMMARY

The illustrative embodiments provide a system, and computer program product. An embodiment includes receiving, by a server, a deployment specification for implementing a requested cloud service. The embodiment further includes querying, by the server, a resource pool for available resources required by the deployment specifications, the resource pool including a plurality of pre-configured resources for implementing one or more cloud services. The embodiment further includes determining that a first resource required by the deployment specification is available within the resource pool. The embodiment further includes requesting first resource metadata associated with the first resource from a database, the resource metadata including a resource identifier and a resource type of the first resource. The embodiment still further includes receiving the resource metadata associated with the first resource from the database, and deploying the first resource from the resource pool according to the deployment specification to implement the requested cloud service.

An embodiment further includes determining that the first resource required by the deployment specification is not available within the resource pool, and creating a second resource second resource required by the deployment specification within the resource pool. An embodiment still further includes adding second resource metadata associated with the second resource to the database. An embodiment still further includes deploying the second resource from the resource pool according to the deployment specification to implement the requested cloud service.

An embodiment further includes creating a plurality of resources within the resource pool, pre-assembling and pre-configuring the plurality of resources, and registering metadata corresponding to the plurality of resources in the database.

An embodiment further includes receiving performance data associated with utilization of the pre-configured resources within the resource pool over a predetermined time period, and adjusting a size of the resource pool based upon the performance data. In an embodiment, the performance data includes real-time data.

In an embodiment, the database includes a resource registry. In another embodiment, the server includes a command line interface (CLI). In another embodiment, the deployment specifications are received from a deployment director component.

DETAILED DESCRIPTION

Various illustrative embodiment provide for a method, system, and computer program product to accelerate and maintain large-scale cloud deployment. Deployment and maintenance of a large-scale cloud environment can be a time-consuming, difficult, and resource-wasting process for businesses as well as individuals. Traditionally, a new deployment will first provision dozens of virtual machines (VMs) from an infrastructure as well as install operating system (OS) components and applications to all of the individual nodes. Some installations and configurations which have dependencies need to be performed synchronously. Synchronous installation and configuration may result in a slow down of the deployment process and increase the risk of failure of the deployment. If an OS or an application needs to be updated, separate operations are often required to upgrade the specific nodes in the whole cloud environment.

Various errors may occur during deployment and upgrade of a cloud environment and these errors are often difficult to debug and reinstall. In addition, such errors may lead to unpredictable situations, and even bring down the whole cloud platform resulting in a significant impact to a production environment. Also, environmental upgrades of a cloud deployment often cause long-term service outages. Such factors all make deploying and maintaining a large-scale cloud deployment a pain point both for business, and individuals.

The illustrative embodiments recognize that the presently available tools or solutions do not address these needs or provide adequate solutions for these needs. The illustrative embodiments used to describe the invention generally address and solve the above-described problems and other problems related to large-scale cloud deployment.

Various embodiments provide a system and method to improve efficiency, eliminate errors, and provide a cognitive thought process during deploying and maintaining of a large-scale cloud deployment. In an embodiment, cloud resources are deploying from a resource pool having preassembled and preconfigured components subsystems, clusters and single nodes based on cloud requirements. In one or more embodiment, resources in the resource pool perform self-upgrading when a particular resource is idle. In one or more embodiments, when the cloud environment needs to be migrated, the cloud deployment switches to the latest resource. In one or more embodiments, resource pool management uses a cognitive process to dynamically allocate resources within the resource pool by computing a reverse calculation based on real-time data of the cloud. In particular embodiments, sizes of the resource pool, a subsystem, and a cluster in the resource pool, are adjusted dynamically.

Typically, during deployment of a large-scale cloud, a cloud platform may contain more than one hundred VMs and may take several hours or more to complete. Usually, a large deployment manifest file is used to specify detail information about releases, applications, VM specifications, and other configuration aspects of the cloud. If the cloud deployment is interrupted, it is difficult to debug the root cause of the interruption and redeploy the cloud environment after the root cause is debugged.

In accordance with one or more embodiments, the most frustrating part of cloud deployment, installation and configuration, is separated from the deployment process. Instead of deploying with fresh VMs, various embodiments fetch preassembled and pre-configured subsystems, clusters and nodes and complete any remaining configurations. At the same time, in one or more embodiments the deployment manifest file is simplified such that it only specifies which subsystem or cluster is to be included and omits the specific deployment details regarding each subsystem or cluster. In one or more embodiments, each subsystem and cluster in the resource pool has an associated manifest file for detailed specifications of the particular subsystem or cluster. In this way, errors may be exposed and diagnosed before the formal deployment. Accordingly, when the deployment begins, the deployment will be far more efficient and smooth.

In one or more embodiments, a pool resource server application recognizes subsystems and clusters within a cloud deployment. For example, a particular cloud application platform may include a scheduler to implement application scheduling and management responsibility in which the scheduler includes a cloud controller, and a cloud controller database (CCDB) in a high-availability (HA) cluster in the cloud platform. In the example, one node of the cloud cluster may be a master and two or more nodes may be a slave. In accordance with one or more embodiments, the components in the scheduler and CCDB cluster are pre-installed and pre-configured in a resource pool based and a manifest is associated with each components. In one or more embodiments, the pool resource server application prepares other single nodes for deployment. In an embodiment, when deployment begins, the pool resource server application finds a desired resource available in the resource pool and completes any remaining configurations within the resource. In an embodiment, pool resource server application marks the resource as being in use.

In an embodiment, when OS components or applications need to be updated, the resource pool receives a notification form a release management server, and available resources are upgraded to a specified version. When the deployment needs migration, pool resource server application finds a new corresponding resource, switches the deployment to the new resource, and releases the old resource. In the embodiment, the old resource is released back to the resource pool for reuse.

In an embodiment, at an initial state, a pool size of the resource pool is set based on a current scale of the cloud and the largest number of resources that need to be updated synchronously. In consideration of cost and resource utilization, after the cloud is successfully deployed, the resource pool server application adjusts the pool size cognitively based on rules set by reverse calculation on real-time data of performance metrics of the cloud such as a number of application requests, an amount of memory required, a number of CPUs required, on each application and calculates background cells which manage and maintain task and long-running processes (LRPs) within the cloud. In the embodiment, the resource pool server application determines whether to increase or reduce the number of cells. According to the trends of changes in resources needed within the cloud, the resources within the resource pool may be maintained at a reasonable size.

In one or more embodiments, a resource pool server component functions as controller of the resource pool, provides an application programing interface (API) to a deployment a director, and interacts with an Infrastructure as a Service (IaaS) API. IaaS is a form of cloud computing that provides virtualized computing services over a network. In IaaS a cloud provider hosts infrastructure components used to implement a particular cloud service deployment. In an embodiment, the resource pool server component contains interfaces such as a “create_resource” interface, an “update_resource” interface, and a “get_resources_by_deployments” interface.

In one or more embodiments, a pool server command line interface (CLI) functions as an interface to interact with the resource pool server component. In one or more embodiments, the pool server CLI creates, verifies, and manages resources such as subsystems, clusters, and VMs based on cloud deployment requirements.

In one or more embodiments, a resource finder component determines whether a resource in the resource pool matches requirements of a particular deployment request. In a particular embodiment, the resource finder includes customized resource matching rules to determine whether a resource in the resource pool matches the requirements. In an example, a resource matching rule finds a resource according to a specific resource requirement such as memory usage, CPU utilization, and a number of applications a subsystem can support. In one or more embodiments, a resource registry stores metadata for resources within the resource pool and provides getter/setter functionalities that manage the resource's metadata.

In one or more embodiments, a create_resource interface provides resource creating functions during deployment. When a new deployment is kicked-off, the director calls the resource pool server to obtain the resource metadata from the resource registry matching a deployment specification. Instead of creating and configuring an environment from a base OS, the resource pool server fetches a pre-assembled and pre-configured resource from the resource pool that matches the deployment specification. If a matching resource is not found, the create_resource interface creates a resource in the IaaS and registers the metadata of the new resource in the resource registry.

In one or more embodiments, an update_resource interface provides for resource upgrade functions within the cloud deployment. In accordance with one or more embodiments, before upgrade of a deployed cloud service idle resources in the resource pool perform a self-upgrading procedure and update resource metadata in the resource repository to reflect the upgraded resource. When an upgrade of the deployed cloud service begins, the resource pool server retrieves the updated resource metadata from the resource registry. Instead of upgrading each individual node and causing potentially hours of service outage, the resource pool server switches to the resource with the latest version that has been verified as previously updated.

Accordingly, one or more advantages that may be provided by one or more embodiments described herein includes improving the user experience of individuals and businesses, improving the efficiency of large-scale cloud deployment, and simplifying and decoupling the deployment process, releasing human resources, and balancing cost of deployment in a cognitive manner. An embodiment may provide an advantage of highly improved deployment stability and efficiency as resources are pre-assembled and pre-configured. Another embodiment may provide an advantage of reducing service outages and lowering risk during upgrade of a cloud service due to the switching to existing and verified resources in a matter of minutes. Another embodiment may provide one or more advantages of exposing issues of deployment and upgrade, if any, as early as possible, and simplified debugging of deployment issues due to problems within the deployment being decoupled to smaller problems.

An embodiment can be implemented as a software application. The application implementing an embodiment can be configured as a modification of an existing cloud platform system, as a separate application that operates in conjunction with an existing cloud platform system, a standalone application, or some combination thereof.

The illustrative embodiments are described with respect to certain types of resources, services, transmissions, resource deployment procedures and algorithms, GUIs, devices, data processing systems, environments, components, and applications only as examples. Any specific manifestations of these and other similar artifacts are not intended to be limiting to the invention. Any suitable manifestation of these and other similar artifacts can be selected within the scope of the illustrative embodiments.

Pool server CLI105of resource pool server104implements an embodiment described herein. Server106includes a deployment director application107configured to receive a request for cloud deployment from a user and send the cloud deployment request to pool server CLI105. In other embodiments, application105may be configured to receive deployment requests directly. Resource registry109, including metadata associated with resources in a resource pool120, may be stored in storage unit108as shown or supplied by another source (not shown). Resource pool120includes one or more pre-assembled and/or pre-configured resources for implementing a cloud service deployment as further described herein. In particular embodiments, the resources include one or more subsystems, clusters, or components for implementing a cloud service.

Servers104and106, storage unit108, and clients110,112, and114, and device132may couple to network102using wired connections, wireless communication protocols, or other suitable data connectivity. Clients110,112, and114may be, for example, personal computers or network computers.

With reference toFIG. 3, this figure depicts a block diagram of an example configuration300for traditional large scale-cloud deployment. Configuration300includes a cloud application platform302and a scheduler304. Cloud application platform302includes a routing component306, a cloud controller API (CAPI) component308, and a loggregator component310. Routing component306includes a routing table, a router component, and a router-emitter component configured to route traffic to different components within the cloud. CAPI component308includes an API and cloud controller bridge configured to perform application staging and running functions. Loggregator component310includes a log API and log gatherer component configured to collect logs from applications and metrics data from component within the cloud platform.

Scheduler304includes a database component, access component, a number of computing components, and a control component. Scheduler304is configured to schedule and runs tasks and long-running processes (LRPs) within the cloud platform. A computing component includes a rep component configured to manage container allocations against resource constraints in the computing component, a RUNC component configured to provide a platform-independent server and client to manage containers, and a forwarder configured to forward application logs to loggerator310. The control component includes a scheduler component to schedule tasks and LRP instances and distribute work using a scheduling algorithm. The database component maintains a real-time representation of the state of scheduler304including all desired LRPs, running LRP instances, and tasks.

Cloud application platform302is in further communication with an IaaS312including a number of VMs and servers. A large manifest file314is used to specify detail information about releases, applications, VM specifications, and other configuration aspects of the cloud. In the example ofFIG. 3, manifest file314includes release details, job details, and other information about the components of the cloud platform. In the example ofFIG. 3, if the cloud deployment is interrupted, it is difficult to debug the root cause of the interruption and redeploy the cloud environment after the root cause is debugged.

With reference toFIG. 4, this figure depicts a block diagram of an example configuration400for accelerating and maintaining a large-scale cloud deployment in accordance with an illustrative embodiment. Configuration400includes cloud application platform302, scheduler304, and IaaS312described with respect toFIG. 3. Configuration400further includes resource pool120as described herein with respect to various embodiments. In at least one embodiment, resource pool120includes pre-assembled and/or pre-configured resources such as subsystems, cluster or components, of the cloud platform. In the particular embodiment illustrated inFIG. 4, resource pool120includes a scheduler, a CCDB cluster, a router, and other components. Configuration400includes a number of manifest files including a first manifest file including detailed specifications of components of cloud application platform302and a second manifest file including detailed specifications of components of scheduler304. In an embodiment, each resource within resource pool120has an associated manifest file406for detailed specifications of the particular resource.

In accordance with one or more embodiments, the components in the scheduler and CCDB cluster are pre-installed and pre-configured in a resource pool based and a manifest is associated with each components. In one or more embodiments, the pool resource server application prepares other single nodes for deployment. In an embodiment, when deployment begins, the pool resource server application finds a desired resource available in the resource pool and completes any remaining configurations within the resource. In an embodiment, pool resource server application marks the resource as being in use.

With reference toFIG. 5, this figure depicts a block diagram of a process flow500for creating and validating resources within resource pool120by pool server104. In502, pool server CLI105initiates a create_resource process for creation of resources within resource pool120by pool server104. In504, the create_resource process of pool server120pre-assembles and pre-configures resources within IaaS112. In506, IaaS112registers resource metadata associated with the resources in resource registry109. In508, deployment director107sends a request to the create_resource process of pool server104to kick off deployment of a cloud service. In at least one embodiment, deployment director107sends deployment specifications to pool server104including the specifications of the requested cloud service. In510, pool server104uses a resource finder to look up resources in resource pool120to satisfy the deployment specifications and determines whether one or more resources are available within resource pool120that satisfy the deployment specifications.

If a particular resource is available, in512, pool server104fetches resource metadata associated with the resource from resource registry109. In516, resource registry109returns the resource metadata to pool server104. If the particular resource is not available within resource pool120, in514, pool server104creates a virtual machine (VM) in IaaS112configured to implement the requirements of the resource. In518, the resource finder returns the resource metadata to the create_resource process of pool server104. Process flow500then ends.

With reference toFIG. 6, this figure depicts a block diagram of a signaling flow600for creating and validating resources within resource pool120by pool server104. In602, pool server CLI105sends a request to initiate creation of resources within resource pool120. In604, pool server120pre-assembles and pre-configures resources within IaaS112. In606, IaaS112adds resource metadata associated with the resources in resource registry109. In608, deployment director107sends a request to pool server104to kick off deployment of a cloud service satisfying deployment specifications including the specifications of the requested cloud service. In610, pool server104determines whether one or more resources within resource registry109satisfying the deployment specifications and fetches resource metadata associated with the resource from resource registry109. In612, resource registry109returns the resource metadata to pool server104.

Alternately, if the particular resource does not exist within resource pool120, in614, pool server104creates one or more VMs in IaaS112configured to implement the requirements of the resource. In616, IaaS112adds the resource metadata associated with the new resource to resource registry109. Signaling flow500then ends.

With reference toFIG. 7, this figure depicts an example resource registry database (DB) schema700in accordance with an illustrative embodiment. Resource registry109has a number of associated representational state transfer (REST) services702to facilitate maintenance of resource registry109by pool server104.

In the particular example ofFIG. 7, the REST services include an initialize_registry service to initialize resource registry109, a get_metadata service to retrieve resource metadata from resource registry109, an insert_metadata service to store new resource metadata within resource registry109, and a delete_metadata service to delete resource metadata from resource registry109.FIG. 7further illustrates an example database schema704of resource registry109for storing resource metadata including a resource identifier (ID) entry identifying a particular resource, a resource type entry identifying a type of the particular resource such as a component, subsystem, cluster, etc., an IP entry identifying a virtual IP (VIP) address or an IP address of the resource, and a version entry identifying a resource version of the resource.

With reference toFIGS. 8A-8B, these figures depict example real-time data collected from a cloud deployment for resource pool management within the resource pool in accordance with an illustrated embodiment.FIG. 8Aillustrates real-time data showing the amount of applications800utilized within resource pool during a particular time period, such as the month of November.FIG. 8Billustrates real-time data showing an amount of cells802within resource pool120utilized during the predetermined time period. In an embodiment, pool server104uses a cognitive process to dynamically allocate resources within the resource pool by computing a reverse calculation based on real-time data including the amount of applications800and amount of cells802utilized from resource pool120during the predetermined time period. In particular embodiments, sizes of the resource pool, a subsystem, and a cluster in the resource pool, are adjusted dynamically according to the reverse calculation upon the real-time data. In one or more embodiments, pool server104receives performance data associated with utilization of resources within the resource pool over a predetermined time period and adjusts a size of the resource pool based upon the performance data. In a particular embodiment, the performance data includes real-time data.

With reference toFIG. 9, this figure depicts a flowchart of an example process900for large-scale cloud deployment in accordance with an illustrative embodiment. In902, an application, such as pool server CLI105, of pool server104creates cloud resources for resource pool120. In904, the application pre-assembles the resources of resource pool120. In906, the application pre-configures the resources of resource pool120. In908, the application registers resource metadata for the resources in resource pool120in resource registry109.

In910, the application receives deployment specifications for implementing a requested cloud service from deployment director component107. In912, the application initiates deployment of cloud resources from resource pool120to deploy the requested cloud service according to the deployment specifications. In914, the application queries resource pool120for available resources required by the deployment specifications. In916, the application determines whether a first resource required by the deployment specifications exists within resource pool120.

If the first resource exists within resource registry109, in918the application requests first resource metadata for the first resource from resource registry109. In920, the application receives the first resource metadata from resource registry109and the process proceeds to926.

If the first resource does not exist within resource registry109, in922the application creates a second resource, such as one or more VMs, required by the deployment specifications within resource pool120. In924, the application adds second resource metadata associated with the second resource to resource registry109and the process proceeds to926.

In926, the application deploys one of the first resource and the second resource from resource pool120according to the deployment specifications to implement the requested cloud service. The procedure900then ends.

Thus, a system or apparatus, and computer program product are provided in the illustrative embodiments for accelerating and maintain a large-scale cloud deployment and other related features, functions, or operations. Where an embodiment or a portion thereof is described with respect to a type of device, the system or apparatus, the computer program product, or a portion thereof, are adapted or configured for use with a suitable and comparable manifestation of that type of device.