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).