I provide an implementation of my research ideas in a prototype entitled PUMA, short for Product-Line Utilities for Multi-Tenant Applications. The utilities enable the automatic configuration of multi-tenant SaaS-applications in a product-line fashion.
The acronym SaaS stands for Software-as-a-Service. This is a business model in cloud computing. A software is not deployed in-house at the customer's company, but hosted by a provider and rented to the customer. Therefore, a customer is called tenant in this context. To save costs, those applications are often deployed as single-instance multi-tenant aware applications. This means, that resources like hardware, database and software assets are shared by multiple tenants. In a single-instance application data security and performance are essential. A tenant does not directly use the application, but re-sell it to its own users.
A common delivery method is "One-Size-Fits-All". That means, that all tenants have the same application functionality. But various tenants have often different functional and non-functional requirements, and the need to tailor the application to tenant needs arises. As multiple tenant configurations are integrated into one application instance, various aspects of variability must be considered. First of all, there is the need for an architecture, that is multi-tenant aware and able to reconfigure if new tenant configurations are added or a tenant need to be decommissioned.
Multi-Tenant Aware Application Architecture
To configure SaaS-applications according to multiple stakeholder needs, an apropriate architecture is needed. This architecture must be capable of handling variability at runtime and reconfiguration, if new tenant configurations are deployed into the running application. We decided to use the MQuAT (multi-quality auto-tuning) architecture as its intention is auto-tuning an application according to multiple qualities and identify the optimal application configuration.
Configuration Management using Feature Models
To tailor an application to tenant needs, a way to handle the variability among functional and non-functional requirements of tenant contracts on an abstract level is needed. By using techniques from software product line (SPL) engineering, one can benefit from already developed and well-researched methods. To represent tenant-configurable functionaliy of the application, using feature models are promising.
For more information and reference implementations of feature-based configuration management tools refer to the following github repository.
Multi-Perspectives on Feature Models
Multi-perspectives are a flexible approach to tailor the variant space, but prevers feature model semantics, i.e., in a perspective a sub set of valid variants from the domain feature model is derivable.
An application of multi-perspectives is to build variable price-models for selling features in packages. Deriving a perspective tailors the variant space in a pre-configuration step prior the staged configuration of a concrete variant.
By introducing multi-perspectives on feature models, it is possible to express tenant customization on feature model level in the problem space. Therefore, if the tenant changes his configuration, those customizations are still taken into account.
The github project site provides further information on multi-perspectives and according source code.