As cloud computing infrastructures are growing, in terms of usage, its requirements about software design, management and deployment are increasing as well. Software-as-a-Service (SaaS) platforms play a key role within this cloud environment. SaaS, as a part of the cloud offer, allows to the software providers to deploy and manage their own applications in the clouds in a subscription basis. The problem with the current SaaS offers is the lack of openness of in their platforms and the need for learning a whole new paradigm when trying to initiate in the SaaS market. Big players, such as: Amazon, Google or Microsoft, offer their proprietary SaaS solutions. Another consideration is the amount of current Web applications that need to be re-engineered into this cloud paradigm. This research work aims to reduce the effort required to enter into the SaaS market by presenting an architecture based on open source components for developing, deploying and managing SaaS applications.
Open Architecture for Developing Multitenant Software-as-a-Service Applications
1. Open Architecture for Developing Multitenant Software-as-a-Service Applications
Javier Espadas
David Concha
David Romero
Arturo Molina The First International Conference on Cloud Computing, GRIDs, and Virtualization
2. Open Architecture for Developing Multitenant Software-as-a-Service Applications
Lisbon, Portugal, Nov 2010SaaS
SaaS is the delivery of software applications over a hosted platform accessed through the Internet using a web browser and typically priced on a pay-as-you- go basis.
3. Open Architecture for Developing Multitenant Software-as-a-Service Applications
Lisbon, Portugal, Nov 2010Background
Software-as-a-Service (SaaS) has become the new buzz-word around software industry.
A wide range of online applications, including e-mail, human resources, business analytics, customer relationship and enterprise planning, are available.
Unfortunately, several SaaS providers offer their own architecture and their own implementation requirements.
Salesforce.com, for example, provides the Force.com development platform and it uses a proprietary development model for building SaaS applications.
4. Open Architecture for Developing Multitenant Software-as-a-Service Applications
Lisbon, Portugal, Nov 2010
Traditional premise
Current ASPs define a single static revenue models. ASPs are not able to change their revenue models in a cost-effective way.
The current implementation of ASP only supports the notion of one service provider.
ASP services are designed, developed and deployed as Web applications. They are managed through a Web container.
This research work addresses these issues, by proposing an architecture for achieving an implementation capable of deploying applications over the Internet on the service premise.
5. Open Architecture for Developing Multitenant Software-as-a-Service Applications
Lisbon, Portugal, Nov 2010
Multitenant. Architecture should support for multiple tenant client.
Single version. Applications offered as services are shared for all clients
Logical data separation. Each application has a domain data but in the same scheme.
Multi-supplier. Multiple SaaS vendors can deploy their application.
Domain container. Conceptual form to evolve applications’ supplier within the platform. The proposal is a customizable portal as access point.
Application integration. Application should be able to communicate with each other.
SaaS requirements
6. Open Architecture for Developing Multitenant Software-as-a-Service Applications
Lisbon, Portugal, Nov 2010SaaS platform architectureSaaSPlatformSubscription ServiceMetering ServiceCommunications Service(Mail, SMS) Integrations Service(Google Apps) SaaSApplicationSaaSApplicationSaaS SDKSaaS TagLibsJava LibrariesXML Configuration FilesMulti-tentantSaaSDB SaaS Core Web App SaaSApplication Deployment Manager Infrastructure ManagementSOAAuth, Log, Account
7. Open Architecture for Developing Multitenant Software-as-a-Service Applications
Lisbon, Portugal, Nov 2010
SaaS Platform technologies
Requirement
Technology
Language Platform
J2EE (Java 1.6)
Web Container
Apache Tomcat 6
Web Framework
Struts 2
Web Services
Apache Axis2
Dependency Injection
Spring 2
Dependency Injection + Web Services integration
WSO2
Multi-tenancy Layer
JoSQL + Java Annotations
Persistence Layer
Hibernate3andJavaPersistenceAPI(JPA)
Database Management
MySQL5
8. Open Architecture for Developing Multitenant Software-as-a-Service Applications
Lisbon, Portugal, Nov 2010Business services
Metering & monitoring.SaaS platform provides automatic and non-intrusive support for metering applications and tenant-based monitoring.
Mailing.A component for sending/managing electronic mail within applications without complex configuration and programming.
Application customization.The customization component allows the subscriber to customize their own data by adding fields to their business objects (e.g., contact, lead, bill, etc.).
Each business component application implements its own Web services.
9. Open Architecture for Developing Multitenant Software-as-a-Service Applications
Lisbon, Portugal, Nov 2010SaaS application
Views.All the screens and forms that the user can interact with.
Business Logic.Code for actions, business logic and data source accesses.
Configuration files.XML or properties files.
Database.Storage for application data; logically separated for each subscriber.
service-app.war/ (root folder) -WEB-INF/ appService.xmlweb.xmlapplicationContext.xmlaxis2Config.xmlclasses-pages-images
11. Open Architecture for Developing Multitenant Software-as-a-Service Applications
Lisbon, Portugal, Nov 2010Application initializationDeployment Manager
Reads appService.xmlRetrieves information of service, such as name, version
Creates or updates application rolesAction classes are inspected for insertion or updateFunctions for each module are inspected for insertion or updateBoth modules and functions are synchronized with the platform databasewar file is deployed inTomcat
12. Open Architecture for Developing Multitenant Software-as-a-Service Applications
Lisbon, Portugal, Nov 2010SaaS Core Web Application (SWCA)
A web application with specific characteristics for managing tenant-based authentication, security and control access lists.
Once the user has been authenticated through an email and password, SCWA links the user to its subscriber ID.
SCWA forms a session cookie with all this information and stores it within the user session.
A method getAuthenticatedUser()can be called from any application and it retrieves the session cookie of the authenticated user from the SCWA context.
SaaSCore Web App Look for subscriberInternetGet subscriber (tenant) ID Set session cookieUserUserUserUser
13. Open Architecture for Developing Multitenant Software-as-a-Service Applications
Lisbon, Portugal, Nov 2010Multitenant Persistence
SaaS platform implements a Shared Database - Shared Schemasmechanism.
Each service application implements its own database, separating the multitenant information with a subscriber ID key.
The persistent layer is based on Object Relational Mapping technologies (JPA + Hibernate).
Multitenant pre-processing implementation is achieved by setting a Struts2 interceptor in the call stack.
class Data ModelContact «column» *PKid: BIGINT*subscriberId: BIGINT*FKindustryTypeId: BIGINT firstName: VARCHAR(100) lastName: VARCHAR(100) «FK» + FK_Contact_IndustryType(BIGINT) «PK» + PK_Contact(BIGINT) «unique» + UQ_Contact_id() IndustryType «column» *PKid: BIGINT name: VARCHAR(100) «PK» + PK_IndustryType(BIGINT) 0..* (industryTypeId = id) «FK»1
14. Open Architecture for Developing Multitenant Software-as-a-Service Applications
Lisbon, Portugal, Nov 2010
Struts2 interceptor for multitenancy
Object action = invocation.getProxy().getAction();
//getting the subscriber ID from the authentication context
long subscriberId= Auth.getSubscriberId();
for (Field field: clazz.getDeclaredFields() ){
if (field.isAnnotationPresent(Multitenant.class)){
Multitenant filter = (Multitenant)field.getAnnotation(Multitenant.class);
String attribute = filter.getAttribute();
String property = field.getName() ;
Object objList= BeanUtils.getProperty(action, property);String className= getClassName( objList);
Query q = new Query ();// create and perform a query over the list
q.parse("SELECT * FROM "+className+" WHERE "+attribute+" = "+subscriberId);
QueryResultsqr= q.execute(list);
List newList= qr.getResults();
//setting back the filtered list by tenant
BeanUtils.setProperty(action,property,newList);
}}
15. Open Architecture for Developing Multitenant Software-as-a-Service Applications
Lisbon, Portugal, Nov 2010
Multitenant subscriptions
Different types of subscriptions are handled by a component called Subscription Type Management.
A Resource Management Remote layer performs access to distributed resource managers from different and heterogeneous sources.
Resources can be any type of accountable and billable resources such as persistent rows (e.g., contacts, leads, bills, surveys, etc.) or hardware (e.g., CPU cycles, bandwidth, storage, etc.).
SubscriptionSubscription 1234Subscription TypeContact Premium1000 yearContact 10030 monthContact Basic2 monthApplication ServiceContact Manager ServiceSubscriberCompany ACompany BclientproviderRestriction TypePackageRestrictionActive Contacts http://companyb.com/activeContacts?wsdlTime
16. Open Architecture for Developing Multitenant Software-as-a-Service Applications
Lisbon, Portugal, Nov 2010Conclusion
A Software-as-a-Service (SaaS) platform has been described and its implementation on open source technologies.
This platform implements a set of business services and components to deploy Web applications and manage them as SaaS applications.
These SaaS applications use shared database schema in order to implement multi-tenancy mechanisms by logically separating their data for each subscriber.
This platform and its business services are currentlyused for deploying industry-class SaaS solutions in real production environments.