%0 Conference Proceedings %T A Middleware Layer for Flexible and Cost-Efficient Multi-tenant Applications %+ Catholic University of Leuven = Katholieke Universiteit Leuven (KU Leuven) %A Walraven, Stefan %A Truyen, Eddy %A Joosen, Wouter %Z Part 7: Security and Interoperability %< avec comité de lecture %( Lecture Notes in Computer Science %B 12th International Middleware Conference (MIDDLEWARE) %C Lisbon, Portugal %Y Fabio Kon %Y Anne-Marie Kermarrec %I Springer %3 Middleware 2011 %V LNCS-7049 %P 370-389 %8 2011-12-12 %D 2011 %R 10.1007/978-3-642-25821-3_19 %K Multi-tenancy %K Dependency injection %K Software-as-a-Service %K Google App Engine %Z Computer Science [cs] %Z Computer Science [cs]/Networking and Internet Architecture [cs.NI]Conference papers %X Application-level multi-tenancy is an architectural design principle for Software-as-a-Service applications to enable the hosting of multiple customers (or tenants) by a single application instance. Despite the operational cost and maintenance benefits of application-level multi-tenancy, the current middleware component models for multi-tenant application design are inflexible with respect to providing different software variations to different customers.In this paper we show that this limitation can be solved by a multi-tenancy support layer that combines dependency injection with middleware support for tenant data isolation. Dependency injection enables injecting different software variations on a per tenant basis, while dedicated middleware support facilitates the separation of data and configuration metadata between tenants. We implemented a prototype on top of Google App Engine and we evaluated by means of a case study that the improved flexibility of our approach has little impact on operational costs and upfront application engineering costs. %G English %Z TC 6 %Z WG 6.1 %2 https://inria.hal.science/hal-01597768/document %2 https://inria.hal.science/hal-01597768/file/978-3-642-25821-3_19_Chapter.pdf %L hal-01597768 %U https://inria.hal.science/hal-01597768 %~ IFIP-LNCS %~ IFIP %~ IFIP-TC %~ IFIP-WG %~ IFIP-TC6 %~ IFIP-WG6-1 %~ IFIP-MIDDLEWARE %~ IFIP-LNCS-7049