• 沒有找到結果。

Cloud computing [1] has become the most promising next-generation computing platform recently. Some cloud computing service providers have begun to provide commercial services, such as Amazon EC2 [10], Google App Engine [11] and Microsoft Azure [12]. Users only pay for the amount of computing resources they actually used.

Nowadays, cloud services have been used widely in many application domains; for example, e-commerce, social networking, web game, and etc. [2] [3] [4] [5]. Cloud computing is usually divided into three layers of services [6]: Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS), where users can apply these services through web browsers and Internet. The concept of SaaS [7] has caused a revolution in our way of using software. One typical example is the SaaS CRM provided by Salesforce.com [13]. In addition, Service-Oriented Architecture (SOA) [7] provides an effective and flexible way to rapidly develop new SaaS applications based on existing services. Software development and deployment based on the new models of SaaS and SOA are expected to bring a lot of benefits for both software developers and users.

A SaaS provider might offer several SaaS applications at the same time. Based on the SOA development methodology, these SaaS applications are composed of a set of existing or newly developed services and different applications might share some common services.

These services usually are distributed over a set of (virtual) machines based on some service deployment strategies, due to the resource limit of each single machine or some load sharing and QoS considerations. For SaaS providers who rent virtual machines from IaaS providers, the work of service deployment has to be done by themselves. On the other hand, if SaaS providers develop their applications on a PaaS platform, the PaaS provider has to take care of

service deployment for supporting all SaaS applications from different providers. Service deployment becomes a crucial issue since it affects the execution performance and other QoS aspects of SaaS applications greatly. This thesis studies the service deployment problem, where a set of SaaS applications, a collections of services, and a number of homogeneous (virtual) machines on a cloud platform are given and an appropriate service deployment arrangement, determining which service should be deployed on which resource, is desired for efficient execution of those SaaS applications on the cloud platform.

Several QoS aspects might be considered when conducting service deployment, such as reliability, cost, security, response time, etc. In this thesis, we focus on the response time of SaaS applications when dealing with the service deployment problem. A SaaS application developed based on the SOA methodology can usually be viewed as a directed graph in structure, which are similar to traditional parallel task graphs, or called workflows, in the literature. The nodes in the graph represent the services to invoke and the directed edges indicate the execution and data dependency. Weights can be annotated to nodes and edges, representing the corresponding estimated service execution time and data communication costs, respectively. In our work, we first identified two important factors which affect the execution performance of SaaS applications: communication costs and parallelism. Within a SaaS application, if two related services are deployed onto the same (virtual) machine, the communication costs between them can be minimized. On the other hand, for two independent services, deploying them onto different (virtual) machines can increase the potential parallelism and thus improve the execution performance. Therefore, we treat service deployment as a dual objective optimization problem for reducing communication costs and increasing parallelism simultaneously.

To solve the dual objective service deployment problem, we first developed two kinds of graphs to represent different types of relationships among services. The first one is called a Service Dependency Graph (SDG) describing the interdependence relationship among the set of services, which can be extracted from the set of SaaS applications given. Each service on the platform will have a corresponding node in SDG and each edge in SDG indicates a direct interdependence relationship between two services, which appears in at least one SaaS applications. The second one is Service Concurrence Graph (SCG) where an edge between two nodes indicates that there is no direct or indirect interdependence relationship between the two corresponding services in any SaaS applications on the platform. Therefore, two connected services in SCG can potentially run concurrently since there is no path between them in any SaaS applications.

Based on SDG, for the objective of reducing communication costs through deploying interrelated services onto the same (virtual) machine, the service deployment problem was transformed into the typical minimum k-cut problem [8] for SDG where k is the number of (virtual) machines to host the services. For the objective of increasing parallelism, conceptually the service deployment problem can be transformed into the graph coloring problem [9] for SCG where the number of colors represents the amount of available (virtual) machines.

To solve the complete dual-objective service deployment problem, we integrate SDG and SCG into a single graph, called Service Relationship Graph (SRG), and then solve the problem by transforming it into the minimum k-cut problem [8] for SRG. Since SDG and SCG share the same set of nodes, the services on the cloud platform, SRG can be easily constructed based on SDG by duplicating all the edges of SCG into SDG where the duplicated edges are given negative weights. Therefore, connected services with negative

weights on the edges would tend to be cut into different (virtual) machines for deployment, resulting in increasing parallelism. On the other hands, connected services with large positive weights on the edges, representing communication costs, would more likely be deployed onto the same (virtual) machine, keeping the overall communication costs minimal. The proposed approach thus solves the dual-objective service deployment problem effectively.

To evaluate the proposed approach, we conducted a series of simulation experiments based on CloudSim [14][15] for two types of scenarios representing single composite SaaS application and online multiple composite SaaS applications, respectively. Our approach was compared to several existing deployment methods, GA[16], MC-BT [17], and FFD (First Fit Decreasing) [18] in terms of average response time of service requests. The experimental results indicate that our approach significantly outperform existing methods, achieving up to 40.6% performance improvement.

The reminder of this thesis is organized as follows. Chapter 2 discusses related works on service deployment. We present our dual-objective service deployment strategies in chapter 3.

Chapter 4 describes our simulation environment based on the CloudSim toolkit. Chapter 5 evaluates the proposed approach and compares it with existing methods. Chapter 6 concludes this thesis.

相關文件