Software engineering for multi-tenancy computing challenges and implications.
Abstract
Keywords Multi-tenancy is a cloud computing phenomenon. Multiple instances of an application occupy and share resources from a large pool, allowing different users to have their own version of the same application running and coexisting on the same hardware but in isolated virtual spaces. In this position paper we survey the current landscape of multi-tenancy, laying out the challenges and complexity of software engineering where multi-tenancy issues are involved. Multitenancy allows cloud service providers to better utilise computing resources, supporting the development of more flexible services to customers based on economy of scale, reducing overheads and infrastructural costs. Nevertheless, there are major challenges in migration from single tenant applications to multi-tenancy. These have not been fully explored in research or practice to date. In particular, the reengineering effort of multi-tenancy in Software-as-a-Service cloud applications requires many complex and important aspects that should be taken into consideration, such as security, scalability, scheduling, data isolation, etc. Our study emphasizes scheduling policies and cloud provisioning and deployment with regards to multi-tenancy issues. We employ CloudSim and MapReduce in our experiments to simulate and analyse multi-tenancy models, scenarios, performance, scalability, scheduling and reliability on cloud platforms. Multi-tenancy, Scheduling policies, Cloud computing, Resource allocation, Software development, SaaS 1. INTRODUCTION Cloud computing is a new software system technology that enables dynamic and elastic resource allocation on consolidated physical computing resources using a combination of techniques from parallel computing, distributed computing, and platform virtualization technologies [30] [31]. Software engineering for cloud-based systems is a very new domain of research and practice requiring careful consideration of its characteristics with respect to traditional software development paradigms [30]. Cloud computing enables resource sharing but different kinds of resources reflect different levels of dynamic behaviour and a diversity of user demands. This makes resourc