Add Thesis

Cost-effectiveness of tenant-based allocation model in SaaS applications running in a public Cloud

Written by Wojciech Stolarz

Paper category

Master Thesis

Subject

Computer Science

Year

2012

Abstract

Thesis: Cloud computing Cloud computing has received more and more attention recently. It refers to the technology that realizes the virtualization of resources such as storage, processing, and network bandwidth. It also describes on-demand Internet applications that run as services on this infrastructure. These applications are usually pay-per-use [3]. Every respected IT company has begun to consider providing services in the cloud [12]. The main reason for this is economic: running applications on a flexible, scalable cloud allows us to pay only for the resources we currently use. We don’t have to pay for configuration like in traditional hosting services [3]. The cloud is often viewed as a three-layer stack (Figure 1). It consists of infrastructure as a service (IaaS), platform as a service (PaaS) is built on this foundation, and software as a service (SaaS) is built on this foundation. SaaS refers to the software delivery paradigm, which will be described in more detail in the next section (2.2). IaaS stands for hardware virtualization, and PaaS stands for tools and APIs to build applications on top of. Cloud computing is not a new technology. It is a hybrid of pre-existing technologies, such as grid computing, utility computing, virtualization or autonomous computing [27]. Figure 2 illustrates this idea. Cloud computing computes distributed resources like grid computing, but it is more advanced and flexible. It provides dynamic configuration and sharing at the hardware and software layers. Cloud computing also adopts a utility computing business model with on-demand resources and utility-based pricing. The cloud utilizes the virtualization of resources to achieve a high level of abstraction, and uses virtual machines (VM) to perform tasks. Finally, we can observe autonomous behavior in the cloud in auto-scaling, but overall it is still not completely autonomous. Many events still require human intervention. 2.2 Software as a Service Software as a Service (SaaS) is a software delivery model in which the entire application (software and data) is hosted in one place (usually in the cloud) [24]. SaaS applications are usually accessed by users through a web browser. It is the top layer of the cloud computing stack. SaaS evolved from SOA (Service Oriented Architecture) to manage applications running in the cloud. It is also regarded as a model for extending the concept of Application Service Provider (ASP) [23]. ASP is the main centralized computing model in the 1990s. The characteristics of the SaaS platform are: service provider development, Internet accessibility, remote hosting, and pay-as-you-go pricing [9]. The SaaS platform supports hosting by many application providers. In contrast to the ASP model, SaaS provides fine-grained usage monitoring and metrics [16]. It allows tenants to pay based on cloud resource usage. 2.4 Cloud Economy Although we can automatically receive on-demand resources in the cloud, we still encountered the problem of inappropriate resource pools at that time. These overuse and underuse are due to the incomplete flexibility of the pay-per-use model used today [21]. After receiving additional resources (in response to peak loads), we will keep them even if they are no longer needed. Therefore, we will be affected by underutilization. Undersupply (saturation) means that the required service level cannot be provided due to insufficient performance. This is also called overuse. It leads to loss of customers and loss of revenue [3]. For example, the Amazon Elastic Cloud Computing (EC2) service charges users for every hour they reserve for each EC2 node. Payment server time is common among cloud providers. This is why it is very important to make full use of established resources to actually pay for what we use. 2.5 Multi-tenancy We are still in the early stages of cloud computing development. After deploying SaaS applications to the cloud, we cannot count on its cost-effective pay-per-use model. In addition, automatic cloud scalability will not work effectively in this way [26]. In order to achieve the required scalability, we need to take this into consideration when designing SaaS applications. In order to do this, the application must know how it is used [15]. We can use a multi-tenant architecture to manage application behavior. It allows many users to use a single instance of the program. It works like a singleton class in an object programming language, and can supervise the creation and life cycle of objects derived from this class. Supporting multiple users is a very important design step for SaaS applications [6]. We distinguish between two multi-tenant models: multi-instance (each tenant has its own instance running on shared resources) and native multi-tenant (a single instance runs on distributed resources) [2, 6]. The first mode is suitable for a small number of users, but if there are more than hundreds of users, it is best to use the second mode. The author in 2.6 Related Work [6] proposed an extended profile method in the cloud. They try to use best practices and their knowledge to create scalable profiles. The configuration file contains information that helps characterize the server according to its capabilities. When the zoom activity is triggered, it will consider the profile information. In [11], the author proposed a toolkit that uses Java mechanisms to support multi-tenancy. They use context elements to track applications running on the Java virtual machine. This in turn allows each tenant to be distinguished. This information can be used later to estimate the resource usage of a given tenant. The tenant context can also be used to charge for each tenant's activities. In [7], the author considered smart resource mapping and efficient VM management. Read Less