| By Rahul Kumar Gupta | Article Rating: |
|
| March 30, 2008 02:45 AM EDT | Reads: |
6,260 |
The answer is yes, it's true and this is the only way we can really come up with a pure SaaS application. Now imagine that we have to develop software that can handle 'n' number of customers and each customer has 'n' number of end users and complies with all the requirements mentioned. Some of the things that have to be done at each layer of architecture so we can achieve the desired results are:
- UI Layer: The UI layer should be highly
customizable in terms of look and feel and should support I18N. If the
application supports this then the application's UI can be easily
configured or customized according to customer requirements. This can
be achieved by following some of the approaches below:
a) Rendering the entire UI using CSS/XSL and allowing customers to define their own CSS/XSL.
b) Providing the ability for customers to do extensions or add their own scripting files/methods. c) Providing flexibility so the UI can be changed or display additional information like promotions based on external factors such as information provided through URL parameters.
d) Loosely coupling the data rendering logic from the business processing logic so the customer or provider can change the placement of the forms/data rendered on UI. Easypage is a good example.
e) Using an XSLT approach can add further value in providing disparate client support.
f) Furthermore it would be good if the application provides the flexibility to map the UI by locales, branding, etc.
g) Personalization support (both implicit and explicit).
h) Search Engine Optimization should be supported if possible.
i) Provide a rich UI. - Integration Layer: The
integration layer in SaaS should be such that it allows a system to
integrate with third-party systems easily in a standardized way. This
can be achieved by:
a) Following an interface-based API, JCA approach.
b) Allowing support for a messaging system and Web Services.
c) Using business orchestration tools and standard integration tools like SeeBeyond and webMethods.For data exchange it's always advisable to follow standard formats like industry standard XML structures or EDI instead of proprietary ones.
- Data Access Layer: A pure SaaS
application is designed in such a way that it is easy to support
different data sources, for example, databases or files or third-party
systems based on requirements. Keeping this in mind:
a) It's advisable to use OR mapping techniques like Hibernate and JDO.
b) Create middleware components that allow us to make system data source-independent system.As we know the database is the most important part of any application and we should spend a good amount of time defining and analyzing the database architecture. To manage multi-tenant data we have three approaches:(See Figure 6)
c) Isolated Database for each customer - This way we create a new database for each customer; it is the easiest, most secure, and costliest approach. In this case maintenance overhead (for example, backup and recovery) is low, reliable, and easy to enhance the database to customer-specific requirements.
d) Shared Database and Isolated Schemas - In this approach multiple tenants share the same database, but each customer would have a separate schema. This approach is also easy and provides a facility to make customer-specific changes in the database but it is less secure and not very reliable compared with the isolated database .In this approach maintenance overhead (again backup and recovery, for instance) is high.
e) Shared Database and Shared Schemas - This is the cheapest solution in terms of deployment and maintenance. All the customers share the same database and schema, maintaining data for all the tenants in the same set of tables. We have to put extra development effort in to make it secure so that data isn't shared by tenants by mistake.
An SaaS application database should support I18N and design should be extensible enough to provide enhancements easily or change the database to meet customer requirements. Based on the clarity of the requirements, an understanding of the domain requirements now and in the future can achieved by providing additional non-mandatory columns of a generic type in the tables or following a name-value pair approach to define the database structure. Security plays a key part in an SaaS application and one must provide an adequate security mechanism to avoid any unauthorized access to customer data. SaaS applications should provide support for standard SSO and security techniques (like digital signatures, ACL, message encryption, etc.).
On the technology front an SaaS application should be loosely coupled, highly cohesive, and designed to avoid use of proprietary databases and middleware. It should use open source and follow industry standards like XHTML, 508 compliance, XML, AJAX, RSS/ATOM, etc. When defining an SaaS application we should keep Web Services in mind and, if possible, follow a SOA architecture.
The key to developing a good SaaS-based application is the design of the application framework. We have to make sure that the base application framework should be flexible, open-ended, and robust enough so new features can be added to an application easily. This way we can create a customer community that will contribute developed features to our SaaS applications. This has two major benefits:
- Our SaaS application becomes feature-rich and these new features can be offered to other customers based on a license or terms & conditions of the customers who had it developed.
- It attracts more new customer to use our application that results in improved revenue figures.
Published March 30, 2008 Reads 6,260
Copyright © 2008 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Rahul Kumar Gupta
Rahul Kumar Gupta is a postgraduate in Computer Applications, graduate in Business Management and 10 certifications including PMP, SCEJA and JCP. He has 10 years IT industry experience and works as Sr. Technical Manager with Indian IT giant HCL Technologies, NOIDA (INDIA). He was also a co-technical reviewer for Professional Java Ecommerce, Professional EJB and Professional JSP Site Design books for Wrox. You can catch him at rahgup@mailcity.com. He blogs at http://rahgup.blogspot.com/.
- Kindle 2 vs Nook
- Confessions of a Ulitzer Addict
- IBM Hardware Chief, Intel VC Exec Arrested in Insider Trading Scam
- Tactical Cloud Computing Panel at 1st Annual GovIT Expo
- Ulitzer.com Named Exclusive "New Media" Sponsor of Cloud Computing Conference & Expo
- Infrastructure-as-a-Service Will Mature in 2010: Microsoft's David Chou
- Windows 7 – Microsoft’s First Step to the Cloud
- Cloud Expo and the End of Tech Recession
- Jill Tummler Singer, Deputy CIO of CIA, Keynotes at GovIT Expo
- Reality Check at the Cloud Computing Expo
- Visual Studio 2010 Is Cloud Friendly
- Fired SCO CEO Fires Back
- Kindle 2 vs Nook
- The Difference Between Web Hosting and Cloud Computing
- Ajax in RichFaces 3.3, JSF 2 and RichFaces 4
- Confessions of a Ulitzer Addict
- Wave on Ulitzer: Confessions of a Google Wave Fanboy
- IBM Hardware Chief, Intel VC Exec Arrested in Insider Trading Scam
- Cloud Computing Best Practices
- Tactical Cloud Computing Panel at 1st Annual GovIT Expo
- Ulitzer.com Named Exclusive "New Media" Sponsor of Cloud Computing Conference & Expo
- Infrastructure-as-a-Service Will Mature in 2010: Microsoft's David Chou
- Eval JavaScript in a Global Context
- Windows 7 – Microsoft’s First Step to the Cloud
- Google Maps and ASP.NET
- Crystal Reports XI & How It Has Changed
- Converting VB6 to VB.NET, Part I
- Creating Controls for.NET Compact Framework in Visual Studio 2005
- Where Are RIA Technologies Headed in 2008?
- How to Write High-Performance C# Code
- AJAX World RIA Conference & Expo Kicks Off in New York City
- Implementing Tab Navigation with ASP.NET 2.0
- i-Technology Photo Exclusive: Bill Gates & Steve Jobs In "Nerds"
- .NET Archives: Getting Reacquainted with the Father of C#
- i-Technology Viewpoint: "SOA Sucks"
- Programmatically Posting Data to ASP .NET Web Applications


























