What are cloud service models and what are the pros & cons of each model?
What are cloud services and how can you use them to accelerate delivery whilst reducing total cost of ownership (TCO) for your organisation? “As-a-service” is a phrase used in the NIST Definition of Cloud Computing to describe the 3 “service models” of cloud computing:
The familiar “virtual machine” model where you deploy virtual machines you manage onto the cloud virtualisation layer that the cloud provider manages
Where the cloud vendor provides a run-time environment for particularly software languages e.g. Java, C#, Ruby. This abstracts away the complexity of managing this run-time environment away from the customer – all you need to deploy is your code & data. The vendor takes care of the rest.
This is where the cloud vendor is providing application functionality e.g. a customer relationship management (CRM) system like HubSpot or an accounting system like Xero. All the customer needs to do is create an account and login to access the services they need. Note that business-to-consumer services like Facebook, Instagram, Twitter are all SaaS services too.
Increasingly when people talk about “cloud services” they tend to be talking about the latter two services – PaaS and SaaS – as “higher value” cloud services compared to the relatively mature and undifferentiated IaaS market. Comparing features across cloud vendors for IaaS “virtual machine” services is a (relatively) level playing field – a Windows or Linux VM on one cloud vendor is pretty much identical to another cloud vendor – and competition in the IaaS area is mostly focused on price and VM performance. Cloud vendors are trying to differentiate themselves much more in their PaaS and SaaS offerings so let’s take a deeper look at these types of cloud services.
The first type of PaaS cloud service is application hosting. This is typified by services such as AWS Elastic Beanstalk and Azure App Service. Both of these enable you to upload your code (or connect to a SaaS code repository services like GitHub to deploy your code into the Paas service). That code is then executed in a fully-managed run-time environment managed by the cloud vendor.
These PaaS services tend to be very scalable and quite cost-effective for organisations that are experimenting with new services and want a quick & easy way to get them up and running. Increasingly we are seeing PaaS services around containers such as Azure Container Instances or AWS Elastic Container Service where the code and dependencies you need to deploy into the PaaS service is packaged into a container as a convenient deployment mechanism.
A subset of application hosting PaaS services are what is now called “serverless” or “functions-as-a-service” (FaaS). Examples of these include Azure Functions and AWS Lambda. These types of services are perfect for event-driven use cases such as Application Programming Interfaces (APIs) e.g. a call to the API is an event which triggers the execution of the application code function. Again, serverless solutions tend to be highly scalable and highly cost effective, for the right use cases.
The next most common PaaS service we see are data hosting platforms. These often take the form of “database-as-a-service” models like Amazon RDS or Microsoft’s Azure SQL Database that provide drop in replacements for traditional on-premise database servers.
The other emerging data platform services are in the “Big Data & Analytics” space where the cloud vendors offer data warehouse, data lake, data analysis and real-time stream analytics services as hybrid PaaS/SaaS offerings. Both AWS and Microsoft Azure have extensive offerings in this space.
The major cloud vendors either offer their own first party SaaS offerings e.g. Microsoft Dynamics or enable the discovery and purchasing of 3rd party SaaS services via their Marketplace services. For example both the AWS and Azure marketplace support vendors offering SaaS services.
In theory, SaaS cloud services are designed to shift all operational IT concerns from the customer to the vendor – all the customer needs to do is use the functionality that the service provides without worrying about servers, security, scalability etc.
In reality, even with SaaS services there is still administration around the customisation of the configuration settings for the application, as well as integration with other on-premise or cloud hosted systems. For example a common integration is integrating the login systems of the SaaS application with an existing authentication provider e.g. Active Directory. This demand for “single sign on” is a typical Enterprise integration need.
Other common integration points are between line-of-business application needs e.g integrating the marketing automation platform with the CRM solution, or the sales ordering system with the finance system. Increasingly SaaS vendors are anticipating these needs and offering “out of the box” integration solutions but these still can be non-trivial to implement depending on the size and complexity of the customer’s systems.