
The
cloud has had a transformational impact on businesses of all sizes -
from small and midsized businesses (SMBs) to large enterprises - and
it's showing no signs of slowing down.
According to analyst house
Gartner, the use of cloud computing is still growing and will become the
bulk of new IT spend by 2016, a year that the company predicts will see
hybrid cloud overtake private cloud, with nearly half of large
enterprises having deployments by the end of 2017.
Despite its
high uptake, the most suitable route into the cloud is not always so
clear cut for many organisations moving on from the tried and tested
client-server model.
To shed light on the advantages and
disadvantages of cloud computing's three main service delivery models -
software-as-a-service (SaaS), platform-as-a-service (PaaS) and
infrastructure-as-a-service (IaaS) - we spoke to Mike Kavis, VP and
Principal Architect for Cloud Technology Partners and author of
'Architecting the cloud'.
TechRadar Pro: Can you summarise the different cloud service delivery models available?
MK: There
are three cloud service models: Infrastructure as a Service (IaaS),
Platform as a Service (PaaS), and Software as a Service (SaaS).
With
each cloud service model, certain responsibilities are shifted to the
cloud service provider allowing consumers of cloud services to focus
more on their own business requirements and less on the underlying
technologies.
IaaS abstracts the underlying infrastructure and
data center capabilities so that consumers no longer have to rack and
stack hardware, power and cool data centers, and procure hardware.
Computer resources can be provisioned on demand as a utility, much like
how we consume water and electricity today.
PaaS takes us one
level higher in the stack and abstracts that operating system, database,
application server, and programming language.
Consumers using
PaaS can focus on building software on top of the platform and no longer
have to worry about installing, managing, and patching LAMP stacks or
Windows operating systems. PaaS also takes care of scaling, failover,
and many other technical design considerations so that developers can
focus on business applications and less on the underlying IT "plumbing".
SaaS
is the ultimate level of abstraction. With SaaS, the entire application
or service is delivered over the web through a browser and or via an
API. In this service model, the consumer only needs to focus on
administering users to the system.
SaaS is very common for
non-core competency type applications like customer relationship
management (CRM), human resources applications, and financial and
accounting applications.
Many companies are now going away from
the legacy model of shipping software to clients or delivering software
internally over the internal network to a SaaS model where the software
is available 24 by 7 over the internet.
In this model, software is
updated in one place and immediately available to end users as opposed
to the old ship and upgrade method of the past.
TRP: What should users consider when determining which is the right cloud service model for their business?
MK: The
proper question is what cloud service model is right for the
application. Each enterprise should expect to deploy applications and
services using all three cloud service models.
Use a hammer to
pound nails and a screw driver to turn screws. There are many factors
that determine which cloud service model to use.
The first is a
build versus buy decision. Should we right the code ourselves or pay for
a SaaS solution that provides the functionality on demand? If the
service is not a core competency, SaaS is usually a very good
alternative to building as long as the service is affordable, mature,
and meets the business requirements.
The PaaS vs. IaaS decision
typically is determined by the performance and scalability requirements
of the application. PaaS solutions have limitations on their ability to
achieve very high scale due to the fact that these platforms must
provide auto scaling and failover capabilities for all tenants of the
platform.
With IaaS, it is up to the consumer to architect for
scale and failover. PaaS solutions have upper bound limitations by
client that limit how much compute resources a consumer can request
making PaaS less desirable for very high scaling and performing
solutions.
The beauty of PaaS is that it abstracts away the
infrastructure and application stack so that developers only need to
focus on building business functionality. PaaS promises increased speed
to market but is the least mature of the three cloud service models.
Some companies do not trust PaaS yet and will simply default to IaaS.
IaaS
should be used when high scale and performance requirements are
important. It is also a desirable option for companies who want more
control over the application stack whether it be for performance,
security, or control reasons.
TRP: What are the pros and cons of each service model?
MK: With cloud service models, there is a tradeoff between control and agility.
The
more responsibility you shift to the cloud service provider the less
control you have over security, business requirements, etc. but the
faster you can get to market. On the flip side, the more you control the
more work you have to do and the longer it takes to get to market.
With
SaaS, the consumer has very little control over the application other
than who has access. The consumer can alter various configurations but
often has no say in SLAs, maintenance windows, underlying architecture,
etc.
The advantage is that the consumer can quickly be up and
running using the SaaS solution and does not have to manage and maintain
the application freeing up precious IT resources to work on other
priorities.
Another advantage is that the SaaS provider keeps up
with changes in technology so that the consumer does not have to. For
example, as more devices and tablets hit the market, the service
provider makes the necessary changes to ensure the SaaS solution can
support these devices.
With PaaS, the consumer does not have to
manage hardware, operating systems, database systems, programming
stacks, etc. Instead they focus on building software on top of these
robust platforms.
The downside is that the developers must work
within the constraints of the platform which may not be optimal for high
performing architectures. Another disadvantage is that the consumer is
highly reliable on the SLAs of the PaaS providers. Some of these PaaS
providers like Heroku run on top of Amazon Web Services (AWS), an IaaS
provider. When AWS has issues the developers are at the mercy of PaaS
providers like Heroku to stay highly available.
When the PaaS service goes down the developers are mostly helpless and must wait until the PaaS provider restores services.
With
IaaS, consumers have the absolute most control over all three cloud
service models. The advantage of IaaS is that the infrastructure is
abstracted and made available as a collection of APIs.
The IaaS
providers provide seemingly infinite cloud resources available in
minutes on demand without the long procurement cycles of the past.
Application can be built to scale on demand as workloads increase and
decrease consumption of compute resources as workloads decrease, thus
optimizing the infrastructure spend. No longer do companies need to by
two or three times the capacity to sit idle in the case of a peak
workload.
The downside is the consumer is constrained to a subset
of virtual cloud servers. Some applications require very specific
hardware requirements which may not be available from the cloud service
provider.
Another disadvantage is that some companies are not
willing to place sensitive data outside of their firewalls and in a
public cloud. For these companies they often chose to build their own
clouds (private clouds).
By doing so they do not get the benefits
of public clouds such as nearly infinite on-demand resource (they must
procure their own hardware), rapid elasticity (they can only scale based
on how much physical hardware they have), and metered price consumption
(they no longer pay for what they use since they now have to buy
physical machines).
TechRadar Pro: If you had one piece of
advice for those responsible making a decision about their
corporation's cloud service model, what would it be?
MK: Spend
some time up front understanding the business requirements before
selecting a cloud service model. Too often companies pick a cloud
service model before addressing the needs of the applications.
A
prime example is many .Net shops immediately default to Windows Azure
which is a PaaS. Not all workloads are good candidates for PaaS yet
companies forge ahead and force square pegs into round circles.
Would
these same decision makers buy all the materials for a house before you
know what the plans for the house were? Don't settle on favorite
vendors without doing some upfront analysis. Expect to leverage all
three service models in some form or fashion. Choose the right tools for
the job.
Architecting the Cloud: Design Decisions for Cloud Computing Service Models (SaaS, PaaS, IaaS).