Posts Tagged ‘saas’

The Twelve-Factor App

April 23, 2012 Leave a comment

A write-up on practices of developing / deploying a saas app –

Software as a Service and more on choosing the right multi-tenancy model

November 22, 2010 Leave a comment

I found Frederick Chong and Gianpaolo Carraro’s definition very simple and easy to understand.

"Software deployed as a hosted service and accessed over the Internet."

George Reese wrote about the key characteristics of a SaaS application from a consumer’s point of view in his book Cloud Application Architectures. Per George Reese the key characteristics are

  • Availability via web browser
  • On-demand availability
  • Payment based on usage
  • Minimal IT demands

    If we add the provider’s point of view multi-tenancy can also be considered one of the characteristics. But is multi-tenancy a required attribute of SaaS is debated in the community. Prakash has a summary of one such debates in his blog here. I’ll just quote Gianpaolo Carraro’s words here

    Multi-tenancy is a provider view of things, if you are a buyer of SaaS IT DOES NOT MATTER. It is equivalent to asking your utility company which turbine they are using to generate power, the only thing you care is getting 220V (110V in US), 10A, 99.99% of the time at a cost of  10c per kWh.

    I have written earlier about choosing the right multi-tenancy model here. I will expand on that thought in light of the understanding I gained from this debate

    Criticisms about puristic shared everything multi-tenant systems 

  • There is a cost associated in building puristic shared everything multi-tenant systems, which impacts the go to market timeline negatively.

The graph used by Carraro to explain the cost per tenant and cost per feature concepts (I could not find this image in Carraro’s blog now. Instead found it here).

Cost per tenant vs Cost per feature

  • Bugs in multi-tenant systems where the database is shared could lead to other tenants seeing your data.
  • Cost of scaling things which have state (yeah the database), ex: Licensing cost of Oracle Rack or the limitations of scale up options.
  • If the tenants are big and you have only a few of them then you can do away with Shared nothing multi-tenancy and  per-tenant customizations (bigger clients typically need customizations) can be done on a shared nothing solution.

    A couple of things have changed in today’s context and we can look at these criticisms in the light of the changes and reach a reasonable compromise in choosing a multi-tenancy model.

    One of things that’s true in today’s context is the availability of APaaS / CEAP / SEAP vendor services / products which reduce the cost associated with building multi-tenancy. As Gartner suggests Custom Multi-tenancy is not for the faint of the hearts. I also read a good discussion on Build vs Buy in Sinclair’s blog entry here:

Think of simple examples like giving your customers the ability to download data backups: is that an application specific problem or a “horizontal” problem for which a stack should be responsible? Do you want to waste effort on this or would it have been wiser to build on a PaaS that either has this functionality or that would introduce it faster than you would? I guess it wasn’t a one-time investment after all! In fact, it seems to be a massive ongoing investment with little predictability or bounds. This discussion hasn’t even touched on the maturity concept (for example, a “home built” SaaS stack will bump into security problems, bugs, etc. that get resolved in PaaS offerings much quicker because of the speed at which they scale due to aggregation, and the fact that PaaS providers focus solely on solving these problems).

So if we can spend a little money on a SEAP which enables multi-tenancy we can reduce the go to market time as well as cost than building multi-tenancy from the scratch ourselves.

The database scaling needs can be eased by using the current generation data stores which have in built support for scale-out / horizontal partitioning.

Per-Tenant customizations is a complex topic and I will write a separate post in that regard.

The Shared database security concern still holds and probably as of now Shared Processing model of multi-tenancy is a good bet. This is based on my current understanding, and I might change my mind in the future as I understand the problem better.

Cloud Computing Vendor Map

November 21, 2010 3 comments

I have created a Cloud Computing Vendor Map imposed on service models to understand the vendor offerings in the Cloud Computing space. It is primarily based on Peter Laird’s Cloud Computing Taxonomy. It is a big list, so please click on the image to see the original sized image. SaaS will be a huge list and I haven’t included all the vendors there.

Cloud Vendor Offerings

Do let me know if you want to see any additional products / services or if anything is classified wrong.

Original taxonomy from Peter Laid – Peter Laird’s Cloud Computing Taxonomy

Cloud Service Models

November 21, 2010 3 comments

Cloud Software as a Service (SaaS). 


What the consumer can do?  

ü Use the provider’s applications running on a cloud infrastructure.  

ü Limited user-specific application configuration settings

 What the consumer cannot do?  

û Manage or control the underlying cloud infrastructure like  

§ network,

§ servers,

§ storage

û Install consumer-created or acquired business applications, application servers operating systems, or other software  


Cloud Platform as a Service (PaaS). 


What the consumer can do?  

ü Install consumer-created or acquired business applications developed using provider platform

ü Limited application hosting environment configurations

 What the consumer cannot do?  

û Manage or control the underlying cloud infrastructure like  

§ network,

§ servers,  

§ storage  

û Install consumer-created or acquired application servers, operating systems, or software developed using other platforms which are not supported by the provider.


Cloud Infrastructure as a Service (IaaS). 


What the consumer can do?  

ü Install consumer-created or acquired business applications developed using any  development platform, application servers, operating systems  

ü Application hosting environment configurations  

ü Manage or control the underlying cloud infrastructure like  

§ limited control of select networking components (e.g., host firewalls),  

§ servers,  

§ storage  

What the consumer cannot do?  

û manage or control the underlying cloud infrastructure


Application Platform as a Service (APaaS) 


APaaS is flavor of PaaS. In particular if we think of PaaS as middleware services like the Application Server as Service (e.g. Web Role / Worker Role of Microsoft) APaaS is an Higher level of abstraction, Yefim Natis of Gartner calls it as the Extended Application Server.

In particular it is like using Business Application Framework instead of the plain PaaS offering. In the Enterprise development space it’s like using vanilla .NET Framework for developing Business Applications vs. using xRM (CRM as a Platform to develop LOB Applications) or SharePoint as a Development platform.

APaaS is the same Application Platform / Business Application Framework concept extended to the cloud. If the Application Platform is available as a Service it is called APaaS whereas if it licensed as Product for use in Public / Private clouds it is called a Cloud Enabled Application Platform (CEAP) / SaaS Enabled Application Platform (SEAP). Jothy Rosenberg and Arthur Mateos call this Framework as a Service instead in ‘The Cloud at your Service’

Examples of APaaS include, LongJump, Examples of CEAP/SEAP include expanzPlatform, Apprenda SaaSGrid

Further Application Platforms can be classified based on who is the target audience, the Biz User or the Developer.

Cloud Stack

Information summarized from:

The Cloud at your Service

A Brief QA on PaaS / APaaS

NIST Definition of Cloud Computing v15

Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS)

Choosing the right multi-tenancy model

October 28, 2010 2 comments

There are various approaches to implement multi-tenancy in a SaaS application. We will use Gartner’s vocabulary defined here for this discussion – Reference Architecture for Multitenancy: Enterprise Computing "in the Cloud". For a really short and sweet discussion of these models please refer this blog post – If IT isn’t shared, it isn’t cloud…

Model Hardware / VM Instance Application Instance / Process Database
Shared Nothing No No No
Shared Hardware Hardware (Each tenant gets a VM instance) No No
Shared Database VM Instance No Yes
Shared Processing VM Instance Yes No
Shared Everything VM Instance Yes Yes

Custom multi-tenancy Hand rolled by the application not provided by an application platform

Lets say we are building a SaaS offering on Windows Azure. Windows Azure itself can be categorized as a Shared Hardware Multi-Tenant Platform. It is easy to build a SaaS application in shared hardware model using Windows Azure where each client gets their own compute roles (web and worker roles) and an Sql Azure database. The problem with this approach is that it will work only if each tenant is large enough to warrant a separate compute instance (or a set of load balanced instances).

If each of your tenants is small, lets say you are building an accounting software as a service which will be used by independent accountants 1 tenant = 1 user in this case or small firms with less than 10 accountants. Spinning up compute instances for each tenant may not be economical. It will be wise to use the ‘Shared Processing’ model in this scenario.

Or in other words choosing a multi-tenancy model is not a pure technical decision, it is driven by the market too. If we examine why we are tempted to choose the ‘Shared Hardware’ here is because that’s what is offered out of the box by Windows Azure. Application Platforms which enable ‘Shared Processing’ or the puristical ‘Shared Everything’ are rare?/non existent today in Windows Azure space. Custom multi-tenancy is hard and is not for everyone to build.