How did Cloud pick up an age-old term such as “economy of scale”? Well, it fits perfectly to the scenario Cloud service providers are trying to achieve. Achieving economy of scale is all about doing super optimized deployment where addition of users/organizations causes minimal or zero incremental cost to the SaaS provider. This blog of the SaaS Developer Guide blog series, introduces a list technologies that are available to realize economy of scale for SaaS.
Why is "economy of scale" so important?
Lets start small. As a Cloud Learner SaaS provider, imagine the initial deployment is done. What if it can only support one lecturer/institute? That is not going to be useful. What if a single deployment of 1000 nodes are put in-place to support everybody? That is not very useful either. The deployment should elastically scale during peak hours of use and we should be able to support maximum number of users with minimal amount of hardware resources. That is how we achieve economy of scale.
There is a list of technologies that are available for SaaS providers, to do a deployment to serve thousands of users based on different levels resource sharing. This is a quotation from IBM developerWorks that explains resource sharing and isolation.
Why is "economy of scale" so important?
Lets start small. As a Cloud Learner SaaS provider, imagine the initial deployment is done. What if it can only support one lecturer/institute? That is not going to be useful. What if a single deployment of 1000 nodes are put in-place to support everybody? That is not very useful either. The deployment should elastically scale during peak hours of use and we should be able to support maximum number of users with minimal amount of hardware resources. That is how we achieve economy of scale.
There is a list of technologies that are available for SaaS providers, to do a deployment to serve thousands of users based on different levels resource sharing. This is a quotation from IBM developerWorks that explains resource sharing and isolation.
"The more resources that are shared, the higher the density. Higher density lowers the provider's costs. At the same time, increased sharing reduces the level of isolation between tenants — the individual systems or services that are being delivered. Isolation is the degree to which one tenant can affect the activity and data of other tenants."[1]
This blog will concentrate on two of the most popular resource resource sharing mechanisms.
Containers
Multi-tenancy
This blog will concentrate on two of the most popular resource resource sharing mechanisms.
Containers
What
is the difference between VM and containers? VMs work on virtualized
hardware while containers share the operating system? During the recent
years, virtualization technologies have evolved massively.
Containerizing is such a technology that took a leap during the past
couple of years. Containers work sharing the operating system as opposed
to VMs that emulate hardware, making it possible
to run five-to-six times more servers with containers as opposed to
VMs. In container based SaaS deployment, each subscriber gets a single
instance of the SaaS application, running in a container. This ensures
SLA to the end user as we guarantee the CPU for each running instance.
Docker is one such technology. Docker is the leading light weight
container technology today due to the following reasons.
- Easy to use compared to other container technologies
- Docker’s libcontainer is the de-facto standard for Linux containers. It is open source.
- Supported by Google and Redhat
- Docker can be used to pack and ship software
Multi-tenancy
The highest form of density would be using multi-tenancy. When it comes to multi-tenancy, the same application instance will be used by several tenants. In this mode, isolation is minimal and activity of one tenant will affect others. This is a good option for SaaS, if the user activity on the application is predictable and does not need to heavy processing. There are tenant models.
Cloud Learner
- Each tenant has it's own database
- Each tenant has a scheme in the database
- Each tenant is distinguished by an Id in the schema
Cloud Learner
Applications can support both multi-tenancy and container based deployment. The Cloud Learner application is implemented in the hybrid approach. This allows the application to be deployed in different modes depending on other aspects such as subsription layers. For example the Platinum subscription layer can have an instance of Cloud Learner application for itself deployed on containers while the demo mode will share the same running instance.
In a future post we'll look at how the dockerized Cloud Learner application is deployed in GCloud.
[1] http://www.ibm.com/developerworks/library/j-multitenant-java/
[2] https://msdn.microsoft.com/en-us/library/aa479086.aspx
[2] https://msdn.microsoft.com/en-us/library/aa479086.aspx