Archive

Posts Tagged ‘cloud’

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 Force.com, 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)

What is Cloud Computing?

November 20, 2010 Leave a comment

Cloud Computing means different things to different people. I was trying to find myself a working definition of cloud computing from J D Meier’s blog. I settled for a slightly modified version of NIST’s definition of cloud computing.

A model for enabling convenient on demand network access to shared pool of configurable computing resources such as

  • Applications
  • Development Platforms
  • Infrastructure
    • Network
    • Servers
    • Storage

that is delivered as a service and that can be rapidly provisioned and released with minimal management effort and interaction from the service provider.

— A slightly modified definition adapted from NIST’s definition of cloud computing definition.

Further from NIST’s document, the characteristics of a Cloud Service are:

  • On demand self service
  • Broad network access (Accessible via browser / open standards based web services)
  • Pooled resources
  • Rapid elasticity
  • Measured service (You pay only for what you use as you use it )

In a thousand words:

image

Further reading (read as Gleaned from):

http://www.csrc.nist.gov/groups/SNS/cloud-computing/cloud-def-v15.doc

http://blogs.msdn.com/b/jmeier/archive/2010/02/09/cloud-defined.aspx

http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-28.pdf

http://ccr.sigcomm.org/online/files/p50-v39n1l-vaqueroA.pdf

http://www.csrc.nist.gov/groups/SNS/cloud-computing/cloud-def-v15.doc

Cloud Application Architectures – Building Applications and Infrastructure in the cloud – George Reese

http://www.redmonk.com/jgovernor/2008/03/13/15-ways-to-tell-its-not-cloud-computing

Categories: Architecture Tags: ,