Method and System for Auto-scaling of Cloud Services using Causal Ordering and an Application Lifecycle
Publication Date: 2015-Dec-24
The IP.com Prior Art Database
A method and system is disclosed for auto-scaling of cloud services using causal ordering and an application lifecycle.
Page 01 of 4
Method and System for Auto - -scaling of Cloud Services using Causal Ordering and an
scaling of Cloud Services using Causal Ordering and an
In cloud services, scalability and elasticity is a key feature. However, auto-scaling an application hosted on the cloud is a challenge. Currently, scaling services may not be able to dynamically determine resource needs of an application . Using a static policy and static resource quantification mechanisms for scaling may lead to extra costs .
Disclosed is a method and system for auto-scaling of cloud services using causal ordering and an application lifecycle. Fig. 1 illustrates a flow diagram of a method for auto-scaling of cloud services using casual ordering and an application lifecycle .
As illustrated in Fig. 1, the method enables scaling of a cloud service based on one or more of, but not limited to, a dynamic state with respect to resource allocation/de-allocation, events, a point of execution in the application lifecycle, and billing constraints. For auto-scaling, an application lifecycle profiler is used which includes a static application lifecycle profiler and a dynamic application lifecycle profiler .
The static application lifecycle profiler includes a static code analyzer . The static code analyzer, from start to end of a program, builds a control flow graph, determines
Page 02 of 4
resource allocation, usage, and de-allocation events, determine order (partial or total) among different events, associate events to each method or library, and merges all events to a temporal order. Each recorded event includes a relative point of execution from start of the program, size of resource allocated/de-allocated/used, and local or remote resource. The resources include one or more of, but not limited to, memory, disk, Central Processing Unit (CPU), network Input/Output (I/O), database connections, and locks.
For C/C++ (programs with explicit constructs to allocate/de-allocate memory), the static code analyzer determines the point of execution and order between memory allocation events. Thereafter, the amount of memory allocated/de-allocated is determined. For Java/Python (programs that do not have explicit constructs to de-allocate memory), the static code analyzer determines if there are explicit calls to garbage collectors . If yes, then that is recorded as an event. Thereafter, size of memory allocated/de-allocated is determined. The static code analyzer also determines disk I/O calls (remote/local), file...