ABSTRACT
Software-as-a-Service (SaaS) applications are multi-tenant software applications that are delivered as highly configurable web services to individual customers, which are called tenants in this context. For reasons of complexity management and to lower maintenance cost, SaaS providers maintain and deploy a single version of the application code for all tenants. As a result, however, custom-made extensions for individual tenants cannot be efficiently integrated and managed. In this paper we show that by using a context-oriented programming model, cross-tier tenant-specific software variations can be easily integrated into the single-version application code base. Moreover, the selection of which variations to execute can be configured on a per tenant basis. Concretely, we provide a technical case study based on Google App Engine (GAE), a cloud platform for building multi-tenant web applications. We contribute by showing: (a) how ContextJ, a context-oriented programming (COP) language, can be used with GAE, (b) the increase in flexibility and customizability of tenant-specific software variations using ContextJ as compared to Google's dependency injection framework Guice, and (c) that the performance of using ContextJ is comparable to Guice. Based on these observations, we come to the conclusion that COP can be helpful for providing software variations in SaaS.
- I. Aracic, V. Gasiunas, M. Mezini, and K. Ostermann. An overview of CaesarJ. Transactions on Aspect-Oriented Software Development I, pages 135--173, 2006. Google ScholarDigital Library
- A. Azeez, S. Perera, D. Gamage, R. Linton, P. Siriwardana, D. Leelaratne, S. Weerawarana, and P. Fremantle. Multi-tenant SOA middleware for cloud computing. In IEEE International Conference on Cloud Computing, pages 458--465, Los Alamitos, CA, USA, 2010. IEEE Computer Society. Google ScholarDigital Library
- J. Baker, C. Bond, J. C. Corbett, J. J. Furman, A. Khorlin, J. Larson, J. M. Léon, Y. Li, A. Lloyd, and V. Yushprakh. Megastore: Providing scalable, highly available storage for interactive services. In CIDR '11: Proceedings on Conference on Innovative Data Systems Research, 2011.Google Scholar
- A. Bergel, S. Ducasse, and R. Wuyts. Classboxes: A minimal module model supporting local rebinding. Modular Programming Languages, pages 122--131, 2003.Google ScholarCross Ref
- F. Chong and G. Carraro. Architecture strategies for catching the long tail. Microsoft Corporation, http://msdn.microsoft.com/en-us/library/aa479069.aspx, April 2006.Google Scholar
- L. DeMichiel. JSR 317: Java#8482; Persistence 2.0. http://www.jcp.org/en/jsr/detail?id=317, 2009. {Last visited at June 23th 2011}.Google Scholar
- L. DeMichiel and B. Shannon. JSR 342: Java#8482; Platform, Enterprise Edition 7 (Java EE 7) Specification. http://www.jcp.org/en/jsr/detail?id=342, 2011. Last visited at May 26th 2011.Google Scholar
- B. Desmet, J. Vallejos, and P. Costanza. Introducing mixin layers to support the development of context-aware systems. In 3rd European Workshop on Aspects in Software (EWAS 2006), August 2006.Google Scholar
- T. Elrad, R. E. Filman, and A. Bader. Aspect-oriented programming: Introduction. Commun. ACM, 44: 29--32, October 2001. Google ScholarDigital Library
- M. Fowler. Inversion of control containers and the dependency injection pattern. http://martinfowler.com/articles/injection.html, January 2004.Google Scholar
- S. González, K. Mens, and A. Cádiz. Context-oriented programming with the ambient object system. Journal of Universal Computer Science, 14(20): 3307--3332, 2008.Google Scholar
- Google, Inc. Google App Engine. http://code.google.com/appengine/.Google Scholar
- Google Inc. Guice. http://code.google.com/p/google-guice/.Google Scholar
- Google Inc. Implementing multitenancy using namespaces. http://code.google.com/appengine/docs/java/multitenancy/multitenancy.html.Google Scholar
- Google Inc. Injecting providers. http://code.google.com/p/google-guice/wiki/InjectingProviders.Google Scholar
- Google Inc. The Memcache Java API. http://code.google.com/appengine/docs/java/memcache/.Google Scholar
- C. J. Guo, W. Sun, Y. Huang, Z. H. Wang, and B. Gao. A framework for native multi-tenancy application development and management. In CEC/EEE '07: The 9th IEEE International Conference on E-Commerce Technology and the 4th IEEE International Conference on Enterprise Computing, E-Commerce, and E-Services, pages 551--558, July 2007.Google ScholarCross Ref
- R. Hirschfeld, P. Costanza, and O. Nierstrasz. Context-oriented programming. Journal of Object Technology, 7(3): 125--151, 2008.Google ScholarCross Ref
- G. HPI Software Architecture Group. The Context-oriented Programming project. http://www.hpi.uni-potsdam.de/hirschfeld/projects/cop/, 2006--2011.Google Scholar
- J. Kramer and J. Magee. The evolving philosophers problem: Dynamic change management. IEEE Trans. Softw. Eng., 16(11), 1990. Google ScholarDigital Library
- C. Osipov, G. Goldszmidt, M. Taylor, and I. Poddar. Develop and deploy multi-tenant web-delivered solutions using ibm middleware: Part 2: Approaches for enabling multi-tenancy. http://www.ibm.com/developerworks/webservices/library/ws-multitenantpart2/index.html, May 2009.Google Scholar
- SpringSource. Dependency injection and inversion of control. http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/overview.html#overview-dependency-injection.Google Scholar
- W. Sun, X. Zhang, C. J. Guo, P. Sun, and H. Su. Software as a Service: Configuration and customization perspectives. In SERVICES-2 '08: IEEE Congress on Services Part II, pages 18--25, Sept. 2008. Google ScholarDigital Library
- L. Tao. Shifting paradigms with the application service provider model. Computer, 34(10): 32--39, Oct 2001. Google ScholarDigital Library
- E. Truyen, B. Vanhaute, B. N. Jørgensen, W. Joosen, and P. Verbaeten. Dynamic and selective combination of extensions in component-based applications. In ICSE '01: Proceedings of the 23rd International Conference on Software Engineering, pages 233--242, Washington, DC, USA, 2001. IEEE Computer Society. Google ScholarDigital Library
- C.-H. Tsai, Y. Ruan, S. Sahu, A. Shaikh, and K. G. Shin. Virtualization-based techniques for enabling multi-tenant management tools. In A. Clemm, L. Z. Granville, and R. Stadler, editors, DSOM, volume 4785 of Lecture Notes in Computer Science, pages 171--182. Springer, 2007. Google ScholarDigital Library
- S. Walraven, E. Truyen, and W. Joosen. A middleware layer for flexible and cost-efficient multi-tenant applications. In ACM/IFIP/USENIX 12th International Middleware Conference, volume 7049 of Lecture Notes in Computer Science, pages 370--389. IFIP/Springer, December 2011. Google ScholarDigital Library
Index Terms
- Context-oriented programming for customizable SaaS applications
Recommendations
Using microservices for non-intrusive customization of multi-tenant SaaS
ESEC/FSE 2019: Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software EngineeringEnterprise software vendors often need to support their customer companies to customize the enterprise software products deployed on-premises of customers. But when software vendors are migrating their products to cloud-based Software-as-a-Service (SaaS)...
Deep customization of multi-tenant SaaS using intrusive microservices
ICSE-NIER '18: Proceedings of the 40th International Conference on Software Engineering: New Ideas and Emerging ResultsEnterprise software needs to be customizable, and the customization needs from a customer are often beyond what the software vendor can predict in advance. In the on-premises era, customers do deep customizations beyond vendor's prediction by directly ...
Migrating monoliths to cloud-native microservices for customizable SaaS
Abstract Context:It was common that software vendors sell licenses to their clients to use software products, such as Enterprise Resource Planning, which are deployed as a monolithic entity on clients’ premises. Moreover, many ...
Highlights- Our approach can guide monoliths to become customizable multi-tenant Software-as-a-Service (SaaS).
Comments