BACKGROUND

Service providers, such as telecommunications service providers (TSPs), application service providers (ASPs), storage service providers (SSPs), and internet service providers (ISPs) may provide services in the form of application services to clients. One criteria by which a service provider is judged is the speed of delivery of their service. One factor which adversely effects application performance arises when the resources that are allocated to an application service by a service provider become overloaded.

Service providers typically allocate dedicated resources to application services in a manner that ensures that application servicing is not delayed due to resource bottlenecks. However, the demand for application services may vary over time, undergoing periods of high and low resource utilization. In an ideal world a service provider would secure resources sufficient to handle any peak demand, but such a solution is expensive and wasteful.

To overcome these drawbacks, enterprises may scale their resources in accordance with current application service traffic volume, increasing resources as needed and removing resources when peak demand has ebbed. However, typical scaling methods may require a significant amount of time to provision and boot new resources before a new resource can support application traffic. These delays with bringing resources online may cause delays and errors in application processes. As a result, service providers may over-allocate resources to an application. While increasing application servicing expense, such overallocation may be insufficient to address rogue spikes in application demand.

SUMMARY

According to one aspect, a resource management system includes a plurality of resources and an application server to manage requests to an application supported by a service provider. The resource management system includes a pool of servers comprising a virtual server generated by the application server to support requests to access the application. The virtual server may be mapped to a subset of the plurality of resources of the resource management system and booted to an initialized application state. A storage device is included for storing a custom machine image of the initialized application state of the virtual server. The system includes load balancing logic, configured to distribute requests for the application to the pool of servers and to monitor a metric data of the pool of servers to detect a performance issue. The resource management system includes a serverless instance interface operable in response to detection of the performance issue to forward a serverless instance request including the custom machine image of the initialized application server state. The serverless instance interface may be configured to receive a serverless instance in response to the serverless instance request for addition to the pool of servers, the serverless instance comprising a copy of the custom machine image.

According to a further aspect, a method for managing application performance includes the steps of launching an application including generating a pool of servers configured to support the application, the pool of servers comprising one or more virtual servers mapped to one or more resources of a service provider. The method may include initializing the one or more virtual servers using application-specific program code to provide a custom machine image corresponding to an initialized state of at least one virtual server configured to support the application and storing the custom machine image. The method includes collecting a performance metric related to an execution of the application using the pool of servers, monitoring the performance metric to detect a performance issue for the pool of servers and, in response to detecting the performance issue, generating a serverless instance using the custom machine image. The method further comprises the steps of updating the pool of servers by adding the serverless instance to the pool of servers and forwarding access requests for the application to the pool of servers to balance a distribution of access requests between the one or more virtual servers and the serverless instance.

According to a further aspect, an application management system of a service provider includes a plurality of resources for supporting an application service of the service provider including storage resources, processing resources, program code and data. The system may include a scaling controller for generating a pool of servers to support the application service of the service provider, the scaling controller configured to generate a virtual server specific to the application service by provisioning a subset of resources of the plurality of resources to the application service and executing application specific boot code using the subset of resources to provide the virtual server in an initialized state, the scaling control being configured to the initialized state of the virtual server as a custom machine image. The system includes a memory to store the custom machine image, monitoring logic coupled to each pool of servers to collect performance information related to the application service and scaling logic, coupled to the monitoring logic and configured to selectively scale a size of at least one pool of virtual servers in response to the performance information to add a serverless instance to the pool of servers, the serverless instance comprising a copy of the custom machine image. The system may include load balancing logic configured to balance application access requests among the virtual server and the serverless instance.

With such an arrangement, applications service support may be quickly scaled up or down in accordance with network traffic load, incurring minimal delay during the generation and deployment of the serverless instance. Because the serverless instances use shared resources whose cost is generally determined according to actual use, service providers may more closely tailor the cost of application service support to application load. As a result, the need to purchase and maintain shadow resources to handle rogue spikes in application requests to maximize performance may be reduced and/or eliminated. The systems and methods disclosed herein may be practically applied by service providers to provide increased application performance at reduced cost.

