When applications are designed (On-Premise or On-Demand), they are typically
architected based on the number of users they are intended to serve as
the architecture vastly varies based on the type/size of deployment.
The architecture of a Cloud application like Gmail for example is
majorly different from the architecture of an on-premise application
like Exchange.
Applications like Gmail are designed to handle millions of users by default. These
applications are certainly not architected to run in a single server
(you cannot install them in a single server as they are optimized for
multiple servers – in some cases tens of servers are need to run all
the pieces of these apps). This is not the case with Exchange for
example which is designed to run even in a single server.
The
needs of these apps are different and they are architected accordingly.
On-premise applications are typically designed to meet the needs of the
organizations. An on-premise app designed for small businesses doesn’t
typically worry about scaling it to tens of thousands of users. Apps
targeting enterprises don’t worry about scaling it to million of users
as there is no million user company (well, there is Indian Railways with 1.5 Million Employees,
but that is just one).
If we have an
application (like an on-premise app) that can handle up to 10K users, to
scale it to 100K users, you end up deploying 10 instances of the same
app to stretch it to fit your needs. This introduces additional
licensing/management costs. On the other hand, Cloud apps are typically
designed to handle millions of users – this means they can easily
handle the load of the largest companies in the world and can be
managed centrally as they are designed for this. But then, enterprises
have their own challenges and requirements and most of them are not yet
comfortable using applications from the cloud. So that introduces
a new model – Cloud applications deployed on-premise for enterprises.
While
SaaS vendors are famously known to host your entire data in their
secure cloud, some vendors also do on-site deployment of their apps. We
may not hear much about it publicly, but it is certainly happening
behind the scenes.
SaaS applications with
multi-tenant architecture, is like living in an apartment with your own
private space. If you have enough money to buy your own house, you can
do that. Enterprises have money and they are able to buy these cloud
apps for in-house deployments inside the company’s firewall. This
on-site deployment is typically done with larger companies with atleast
tens of thousands of users. Larger companies are starting to do this
for several reasons. Some of them include…
- Integrating these apps with their existing internal systems
- Cost savings and productivity gains in using Cloud Apps
- They already have the IT expertise to manage the infrastructure internally
- Ease of management as they are designed to scale
- Controlling the data for compliance purposes etc
Most
of the enterprises have several disparate systems from multiple vendors
and they spend lot of time and effort integrating these systems. When a
new system is introduced, it needs integration with several other
systems internally and some companies need to have the application
locally deployed. When a Cloud application is deployed locally, it
comes with several benefits apart from bringing the cost down. Here are
some benefits…
- You don’t have
multiple instances of the same app. You just have a single instance,
designed to withstand failure and backup reducing maintenance headaches - Most of the cloud systems use open source stack. This reduces the licensing costs of Operating Systems, Databases etc.
- SaaS
Apps are designed to be centrally managed. This means you don’t have to
worry about upgrading each and every instance with patches etc. Most of
these are centrally managed and automated in most cases - As these apps are delivered through the browser, you don’t need to worry about client-side configurations for every desktop.
There are some fundamental differences in architecture for on-premise and on-demand apps. For a vendor, it is not easy to move form one model to another
as it often requires some fundamental changes. It’ll be interesting to
see how Microsoft will start addressing both markets as these are two
different beasts and trying to addresses both markets simultaneously is
going to be one hell of a challenge.
Coming
back to the original point, the architecture of cloud apps better suits
enterprises. It’ll be interesting to see how the deployment model
evolves. Will they start trusting cloud vendors to deliver some of
these apps or will they go the appliance model (just that instead of a
single appliance, it’ll instead be racks with multiple servers)
deployment of cloud apps into the enterprise? This is yet to be seen.