How do I build multi-tenant SaaS solutions?

10 May

Software as a Service (SaaS) is, simply put, software deployed as a hosted service and accessed over the Internet.  As an ISV, providing your software as a service to your customers has a great number of benefits for both you and your customers. 

One important benefit of SaaS comes from the potential to increase your addressable market by lowering the cost of providing your software per customer (“catching the long tail”).  Line-of-business software tends to be custom-tailored to meet individual customers’ needs—potentially including on-site installation and service visits from vendor service teams—and often requires dedicated server hardware, and support staff to manage it. The cost of providing this kind of dedicated attention contributes to the minimum price at which you can afford to sell the software. But for every large enterprise that purchases a line-of-business solution, there are dozens of smaller and medium-sized businesses that could benefit from such a solution, but that cannot afford the expense.  By providing your software as a service, the total cost of providing your software to your customers can be lowered significantly.

Cost of providing software per customerIncrease your addressable market

For a more detailed overview of architecture strategies to catch the long tail, there is a great MSDN article here (it dates from 2006 but is still very valid).

Of course, when thinking about software as a service, the concept of cloud computing comes to mind: being able to allocate compute and storage resources flexibly, in a matter of minutes, and paying only for the resources that you need.  To maximize the newly addressable market, you are looking at lowering the cost per customer.  One way to achieve this is to build a multi-tenant solution.

But wait, haven’t always been told that building multi-tenant applications is a really difficult thing to do?  On top of all the application business logic complexity, you have to invest in automated provisioning and scaling of the infrastructure, tenant metering and billing, identity federation, etcetera.  This is where the Windows Azure platform and the Cloud Ninja & Cloud Samurai projects can accelerate building multi-tenant cloud-based SaaS solutions.

CloudNinja - Windows Azure Multi-tenant Sample 

The Cloud Ninja Project is a Windows Azure multi-tenant sample application demonstrating metering and automated scaling concepts, as well as some common multi-tenant features such as automated provisioning and federated identity.  Key features of this project are: metering and metering charts, automated scaling, and federated identity.

Cloud Ninja architecture

To further assist you with the metering of tenant resource usage in a multi-tenant solution on the Windows Azure platform, there is now the Cloud Ninja Metering Block.  The need to meter and monitor resource usage at the tenant level is a common requirement for multi-tenant solutions. This metering data is commonly used to enforce quotas, set pricing, understand solution cost breakdown by tenant, generate alerts, or identify tenants which may be abusing the solution.  The metering block ships as a hostable runtime component that can be deployed and hosted in an on-premise windows services, console application; or to Windows Azure either in it’s own role or as part of another role for an existing solution. The metering block comes with a number of providers for collecting metering data from existing logs, and can be extended with custom providers for collecting metering data from other sources, such as custom logs, views, etc…

 

Cloud SamuraiWhen looking at the Cloud Ninja sample application, you may think: “I already have an application, do I really have to redesign my entire application? Isn’t there an easier way for existing applications?”.  Enter the Cloud Samurai project!  This complete code sample demonstrates a hosted multi-tenant approach on Windows Azure for existing web applications that leverages the IIS Application Request Routing (ARR) extension.

Cloud Samurai architecture

Did I already mention that the Windows Azure platform embraces not only .NET developers but is an open platform?  For ISVs or developers that are building Java-based applications and want to leverage the power of the Windows Azure platform, the people at Persistent Systems have developed multi-tenant sample application, called CloudNinja for Java, written in Java which would help the Java community to develop Java applications for Windows Azure. The CloudNinja for Java application will empower Java developers to implement best practices and design patterns required for Java multi-tenant applications on Windows Azure.

 

Are you already providing your software as a service on the Windows Azure platform? Get started now.

1. Setup an Account:

Set up an account and obtain a free subscription for accessing the online portals for Windows Azure an SQL Azure. You can sign up and get the free trial from http://www.windowsazure.com/en-us/pricing/free-trial/.

2. Create your First application and Deploy it on the Windows Azure Platform:

Download the tools and learn how to create an application using .NET, JAVA, Node.js or PHP and deploy it on Windows Azure at http://www.windowsazure.com/en-us/develop/overview/

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: