There’s little doubt the many benefits of cloud computing such as greater business agility, reduced operational cost, on-demand scalability (aka elasticity), rapid deployment and enhanced security are driving businesses in their migration to the cloud.
Gartner forecasts worldwide public cloud revenue will grow by 21.4% in 2018 as “hyperscale cloud providers increase their market dominance.”
With more and more organizations turning to the cloud to reduce their digital footprint and avail themselves of its many benefits, the functionality associated with the trend seems very similar at first pass, yet it’s subtly different.
To avoid confusion in what has become something of an acronym maze, let’s nail down a few definitions and examples of services delivered from the cloud via the internet.
The nuts and bolts of the cloud and some cloud services
Cloud computing (the cloud)
The concept of cloud computing has been around since the early 2000’s and refers to a network of computers that deliver various services via the internet as opposed to being located locally; essentially it can be thought of as a metaphor for the internet based compute services.
Cloud is an overarching term from which we can drill down to the more specific functionality provided by various cloud services – IaaS, PaaS, FaaS, and SaaS.
IaaS (Infrastructure as a Service)
IaaS is a cloud capability that enables the consumer to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, and deployed applications; and possibly limited control of select networking components (e.g., host firewalls).
Examples of IaaS products include Amazon EC2 and OpenStack (an open standard cloud computing platform for both public and private clouds).
PaaS (Platform as a Service)
Platform as a Service is the next logical link in the chain that provides a platform allowing customers to develop, run, and manage applications without the complexity of building and maintaining the infrastructure typically associated with developing and launching an app.
Notable PaaS products include Mulesoft (more on that later), Heroku, Google App Engine and Openshift.
FaaS (Function as a Service)
Function as a Service goes one step further and provides an environment where users can develop, run and manage application code, specifically functions without having to worry about provisioning or managing servers or worry about scaling the infrastructure. And importantly, the consumer only pays for the compute time consumed – there is no charge when code is not running.
Function as a service (FaaS) is typically used when building microservices and Internet-of-Things (IoT) applications.
Examples of FaaS providers are AWS Lambda (Amazon), Azure Functions, Google Cloud Functions, and IBM OpenWhisk.
SaaS (Software as a Service)
Software as a Service is a software distribution model where a software provider hosts and delivers software functionality and applications to customers over the internet, and the consumer does not need to develop code to run large-scale business applications such as CRM, ERP, messaging, project management, and much more.
Some well-known examples of SaaS are Salesforce CRM, Microsoft Dynamics 365, Dropbox, Gmail, HubSpot, and many more.
Serverless Computing
In a nutshell, serverless computing is a cloud platform that allows developers to write and deploy code without having to concern themselves with the infrastructure needed to run their code in a shared environment. The term is something of a misnomer because there ARE servers involved, they’re just managed by someone else. Serverless provides a model that is very similar to how we consume electricity – we only pay for it when we run our electric appliances and lighting, and with Serverless, we only pay for compute resources when we run our code.
Serverless is typically used as a synonym for Function as a Service, and while you don’t run servers when dealing with a PaaS or a SaaS, there are subtle differences between them. The rest of this article deals with the similarities and the differences between these three models of cloud computing – FaaS, PaaS and SaaS.
PaaS vs FaaS
With some basic definitions in place, let’s now get perspective on some of the similarities and differences between two closely related and sometimes confused services – PaaS and FaaS. We’ll start with the most obvious:
- Hardware and software requirements – both FaaS and PaaS preclude the need to install, maintain and manage compute infrastructure and software. This leaves customers free to develop, deploy and manage the application code specific to their business needs.
- Scalability – both FaaS and PaaS provide scalability options with the cloud provider handling this for you.
- High availability – both models deliver high availability from remote infrastructure managed automatically and at scale.
- Vendor lock-in – both FaaS and PaaS typically result in your application being heavily tied-in to the vendor’s tooling and services, making it more difficult to migrate your application from one cloud provider to another.
And, a few subtle yet important differences between FaaS and PaaS
- Operational – the majority of PaaS applications are not designed to bring entire applications up and down for individual requests, which is exactly what a FaaS does (see comment on latency later). [source: infoq.com]
- Scaling – PaaS can offer many advantages over in-house or remote data center deployment of physical hardware, however, you still need to think about how you construct and scale the platform – how many dynos you need, for example with Heroku. FaaS removes this kind of decision making from the equation and therefore scales easily and automatically as required when required.
- Pricing – with FaaS you pay per function invocation, and if your function is not invoked, then you pay absolutely nothing. With PaaS, you have differing pricing models depending on the PaaS provider, but they all inherently tie to compute, storage and network resource costs. Some PaaS providers like Force.com, follow a per-user subscription pricing model. In general, FaaS offers a cost advantage over PaaS though this may not be as relevant if the PaaS simplifies your application code (see iPaaS below).
Given that FaaS and PaaS largely share their benefits, but with FaaS offering additional benefits over PaaS, it is hard to choose PaaS over FaaS for generic application use cases.
PaaS makes sense for use cases where you do or can leverage tooling provided by the PaaS or some specific capabilities provided by the PaaS. For example, an integration PaaS (iPaaS) such as Mulesoft Cloudhub or Boomi provides a suite of cloud services enabling development, execution and governance of integration flows connecting any combination of on-premises and cloud-based processes, services, applications and data without installing or managing any hardware or middleware. Using an iPaaS simplifies your integration strategy and is the right choice for many enterprises, especially those that can leverage the out-of-the-box connectors provided by an iPaaS for many popular SaaS products, without the headache of deploying, managing and maintaining an on-premise deployment of an integration platform.
SaaS is a little different
As defined previously, SaaS is a software distribution model that delivers a finished, usable application with no development input required. Therefore, while it’s a serverless, cloud product it differs from our PaaS and FaaS.
However, SaaS still meets many of the main qualifiers of a serverless application such as zero-hardware requirement to deploy, zero server processes to manage, inherent scalability, and high availability.
Where it differs significantly is pricing. SaaS is always priced using a user-based subscription model, though sometimes you may pay for each user, and in some cases, you may get some number of users per pricing tier. Often times, SaaS offerings can have different pricing on an annual basis versus monthly basis, which incentivizes customers to choose annual pricing, but this typically reduces your flexibility to scale up and then down.
Challenges associated with serverless
Although FaaS might seem to be something of a technical panacea, it’s not without its challenges from an IT operations standpoint. Here are some challenges to consider:
- Monitoring and security occur at the application level which implies a certain amount of trust being placed in your developers to keep their house in order.
- Serverless functions can also present challenges with latency. Serverless doesn’t always have copies of your application functions running warm on standby. This means when a user calls a function it’s a cold call and your code must be started each time, possibly leading to latency issues. This issue is more relevant with Java and C# code.
- Careful consideration needs to be given to downstream resources as serverless has the potential to overwhelm their capacity if badly planned.
- Vendor “lock-in” is a concern and there’s much discussion about the dangers of going all in with a single supplier.
- Future cost changes are something to bear in mind when dealing with the serverless ecosystem. Right now serverless offers substantial savings over more traditional routes, and long may that continue.
FaaS and how Amazon broke the mold
AWS Lambda was released towards the end of 2014 and is described by Amazon’s Chief Technology Officer, Werner Vogels as “an event-driven computing service for dynamic applications”. AWS Lambda needs to be triggered and runs code in response to events, bringing entire applications up and down as discussed above.
Amazon’s pay per use model for AWS Lambda broke the mold in that it charged only for requests served and the compute time needed to run code in increments of 100 milliseconds, making it very cost effective and automatically scalable.
The serverless landscape today and in the future
Organizations embracing serverless are deriving substantial operational, management and cost benefits, and most importantly becoming agile enterprises. It’s clear the serverless model (using this term loosely) in general, and PaaS, FaaS and SaaS in particular, have a significant role to play in the IT landscape going forward.
The extent to which these technologies are deployed in any given business will depend on the factors discussed in this article, and a thorough analysis of the suitability of the technology for individual needs; serverless is not a “one-size-fits-all” solution.
With that said, the future for serverless looks bright and the cause is being championed widely with an increasing number of organizations going all in.
It’s fair to say that serverless is here to stay.
Conclusion – same, similar or not even close?
Finally, to come back to our original question as to whether these technologies (FaaS, PaaS, and SaaS) are the same, similar or not even close – XTIVIA views them as similar with major overlaps and certain differences.
They are, in our view, neither the same nor dramatically different. However, all three can help on your journey to becoming a Serverless Enterprise.