skip to main content
10.1145/2245276.2245358acmconferencesArticle/Chapter ViewAbstractPublication PagessacConference Proceedingsconference-collections
research-article

Context-oriented programming for customizable SaaS applications

Authors Info & Claims
Published:26 March 2012Publication History

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle Scholar
  4. A. Bergel, S. Ducasse, and R. Wuyts. Classboxes: A minimal module model supporting local rebinding. Modular Programming Languages, pages 122--131, 2003.Google ScholarGoogle ScholarCross RefCross Ref
  5. 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 ScholarGoogle Scholar
  6. 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 ScholarGoogle Scholar
  7. 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 ScholarGoogle Scholar
  8. 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 ScholarGoogle Scholar
  9. T. Elrad, R. E. Filman, and A. Bader. Aspect-oriented programming: Introduction. Commun. ACM, 44: 29--32, October 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M. Fowler. Inversion of control containers and the dependency injection pattern. http://martinfowler.com/articles/injection.html, January 2004.Google ScholarGoogle Scholar
  11. 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 ScholarGoogle Scholar
  12. Google, Inc. Google App Engine. http://code.google.com/appengine/.Google ScholarGoogle Scholar
  13. Google Inc. Guice. http://code.google.com/p/google-guice/.Google ScholarGoogle Scholar
  14. Google Inc. Implementing multitenancy using namespaces. http://code.google.com/appengine/docs/java/multitenancy/multitenancy.html.Google ScholarGoogle Scholar
  15. Google Inc. Injecting providers. http://code.google.com/p/google-guice/wiki/InjectingProviders.Google ScholarGoogle Scholar
  16. Google Inc. The Memcache Java API. http://code.google.com/appengine/docs/java/memcache/.Google ScholarGoogle Scholar
  17. 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 ScholarGoogle ScholarCross RefCross Ref
  18. R. Hirschfeld, P. Costanza, and O. Nierstrasz. Context-oriented programming. Journal of Object Technology, 7(3): 125--151, 2008.Google ScholarGoogle ScholarCross RefCross Ref
  19. G. HPI Software Architecture Group. The Context-oriented Programming project. http://www.hpi.uni-potsdam.de/hirschfeld/projects/cop/, 2006--2011.Google ScholarGoogle Scholar
  20. J. Kramer and J. Magee. The evolving philosophers problem: Dynamic change management. IEEE Trans. Softw. Eng., 16(11), 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle Scholar
  22. 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 ScholarGoogle Scholar
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. L. Tao. Shifting paradigms with the application service provider model. Computer, 34(10): 32--39, Oct 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Context-oriented programming for customizable SaaS applications

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Conferences
            SAC '12: Proceedings of the 27th Annual ACM Symposium on Applied Computing
            March 2012
            2179 pages
            ISBN:9781450308571
            DOI:10.1145/2245276
            • Conference Chairs:
            • Sascha Ossowski,
            • Paola Lecca

            Copyright © 2012 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 26 March 2012

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article

            Acceptance Rates

            SAC '12 Paper Acceptance Rate270of1,056submissions,26%Overall Acceptance Rate1,650of6,669submissions,25%

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader