As I read in some articles multi-tenancy support in JEE will probably be postponed from JEE7 to JEE8. It’s a pity. From my perspective, multi-tenancy support is an important feature for application development, especially if developing for the cloud. Let me start with a short introduction for those who aren’t familiar with multi-tenancy. The basic idea of multi-tenancy is to share an application or service with many users. The application appears to each user as if he/she is the sole user. This allows Software as a Service (SaaS) providers to exploit economies of scale by offering the same instance of an application to multiple users with near zero incremental costs.
But how can multi-tenancy be achieved? This question reminds me of a paper on multi-tenancy patterns that was written during my time at the University of Stuttgart. In “Combining Different Multi-Tenancy Patterns in Service-Oriented Applications” Ralph Retter, Frank Leymann, Robert Titze and I explore how services in a service-oriented SaaS application can be deployed using different multi-tenancy patterns. We present three basic multi-tenancy patterns: single instance, single configurable instance, and multiple instances. Subsequently we show how the patterns influence customizability, multi-tenant awareness and scalability applications.
When reflecting on the patterns, I recognize, that they can be observed in many systems providing multi-tenancy support today. For example they can be observed in the middleware stack of our partner WSO2 that is shipped with multi-tenancy support out of the box. Don’t get me wrong, the patterns aren’t a replacement for native multi-tenancy support, but I hope they help a little bit to dive into the space of multi-tenancy.
Ralph Mietzner, Tobias Unger, Robert Titze, Frank Leymann: Combining Different Multi-tenancy Patterns in Service-Oriented Applications. EDOC 2009: 131-140.