My research focuses on the resource provisioning mechanism of the hosting platform for delivering service-oriented web applications. Today, large IT companies, such as Microsoft, Google and Amazon etc., develop their own application-specific hosting systems to provide services (such as email, search engine and e-commerce) to end users. However, ISVs (Independent Software Vendors) or start ups are seeking the public and application-independent hosting platform to deliver various applications to end users over the Internet with SLA(Service Level Agreement) requirements. On-demand performance and scalability are the key factors impacting the success of the delivered services. Thus, how to construct a "smart" and "agile" resource provisioning system for public hosting platform to support those applications with SLA target is a problem:
"Smart": the hosted web applications commonly consists of service components, which may be heterogeneous in performance features and placements. Furthermore, the applications act as black boxes to the underlying platform and deal with various kinds of workloads. The platform should be able to allocate resources for each service component with efficient resource usage.
"Agile": SLA violations of the hosted applications indicate profit loss to the service providers. It requires the platform to react to the resource reconfiguration on demand.
Basically, the resource provisioning mechanism should address: i) how many resources should be allocated? ii) when to allocate resources? In particular, I'm investigating the mechanism to determine the resource demand for applications consisting of various service components, which may be distributed across different servers and even different data centers. Currently, I'm using the queue theory to model the common server components (application server, database server etc.) such that they can determine the performance gain/loss due to resource re-configuration, and extending the peer-to-peer model to enable servers to communicate with each other to negotiate the better resource configuration for the whole aplication.