This cluster of closely related terms frequently causes buyer confusion. However, for buyers looking at the better-known Infrastructure-as-a-Service (IaaS) and Platform-as-a-Service (PaaS) categories, it is worth understanding how all four of these categories are similar, and how they differ.
The fundamental differences between these related concepts are best understood in terms of increasing abstraction. Abstraction is a term borrowed from object-oriented programming and, in this context, has to do with how different platforms handle complexity and control.
This is a helpful way of thinking about the technology stack from the most fundamental bottom layer, with increasing abstraction and agility, as you move up the stack to the top layer. The price for this increasing agility is a loss of control and configurability.
Developers generally prefer to take advantage of higher levels of abstraction. This allows them to focus on application development and avoid distracting (but necessary) overhead work, such as server maintenance and capacity planning.
This continuum of increasing abstraction means that PaaS buyers may want to include emerging adjacent technologies like Container-as-a-Service (CaaS) and Functions-as-a-Service (Faas) as part of their consideration set. The following diagram illustrates how PaaS relates to other adjacent “as-a-Service” platforms, and sheds some light on the increasing popularity of emerging FaaS technology. Moving from left to right, from low abstraction to high abstraction, agility increases and configurability decreases.
IaaS (Infrastructure-as-a-Service) platforms provide IT professionals with a robust computing infrastructure, but IT staff must select, configure and monitor the platform components that they want to use. There is considerable overhead to getting started with an IaaS, but these systems are highly configurable, providing administrators with granular control over servers, storage, and networking services.
Examples of IaaS platforms:
When to choose IaaS
An IaaS environment is an alternative to running a private data center. Modern businesses increasingly do not want to invest in and manage servers, storage, and networking for private data centers for several reasons, notably, cost. Building a private data center is extremely expensive. However, renting the infrastructure from a major cloud service provider reduces logistical and financial barriers to entering new markets without being constrained by IT resources. If your organization’s IT resources are provided by an on-premise data center, switching to an IaaS replaces high costs for equipment and personnel with an easy-to-manage and much more affordable cloud services model.
CaaS (Container-as-a-Service) is one step up the abstraction ladder. Where IaaS platforms use virtual machines or bare metal hardware as fundamental resources, CaaS platforms package up applications and all their dependencies into containers more lightweight than virtual machines. For this reason, it’s possible to host more containers on a single host than fully-fledged virtual machines. CaaS is a suitable platform for developers who want more control over container orchestration. Using a CaaS allows developers to deploy applications on containers without worrying about the limitations on container orchestration provided by the typical PaaS.
Examples of container orchestration tools:
When to choose a CaaS
Both CaaS and PaaS help developers deploy and run applications more efficiently. A CaaS is a good option for development teams when they prefer to have more granular control over containerization tasks. Your team may need greater control than a PaaS can provide for things like language support or multi-cloud hosting. In cases like this, a strong infrastructure team used to dealing with networking and operations issues may prefer a CaaS over a PaaS. A CaaS is typically less opinionated and more configurable than a PaaS.
PaaS (Platform-as-a-Service) is still further up the abstraction ladder and therefore favors agility over configurability. As we have seen, PaaS is an integrated application development and deployment solution that releases application developers from much of the complexity of provisioning, configuring, and managing hardware resources. Developers benefit from far more automation at the expense of less granular control.
Examples of PaaS platforms:
When to choose PaaS
A PaaS is a good choice when many developers are working on a complex single application. It provides for the simultaneous use of a single source code and the ability to automate testing and deployment. Acquiring a PaaS will allow an in-house development team to develop a new application much faster than otherwise possible.
FaaS (Function-as-a-Service) is a category of cloud computing services that is disrupting the way applications and systems have been built for decades. FaaS is a relatively new development that has emerged out of PaaS. It is frequently thought of as part of PaaS, although it is a distinct technology that is often referred to as Serverless. The term Serverless gives a clue about the level of abstraction. Like PaaS, FaaS is a cloud computing model that abstracts server management and low-level infrastructure decisions away from developers, but it goes much further than PaaS. All allocation of resources is managed by the platform, allowing applications to be developed without any thought of implementation, load balancing, or scaling. It allows developers to execute small snippets of code in response to events without having to build complex infrastructure.
The advantages of a FaaS are primarily that developers can focus on writing code rather than thinking about infrastructure management. Another major advantage is that developers are only charged for the time it takes to execute the code. If the code is only executed a few times a day, the total charge per day might be for just a few seconds.
Examples of FaaS platforms:
When to choose FaaS
FaaS is a good choice when developers want to release and iterate new applications very quickly and easily without having to worry about infrastructure issues like scaling. For tight budgets, FaaS is also attractive because users are only charged when the code executes. FaaS is a particularly good option for processes like ETL or time-based batch processing where expensive tools can be replaced by using function “runs” to only execute and pay for each run instance.
Reading use cases in reviews can be a good way to figure out which product is most appropriate to your particular need. On TrustRadius, CaaS and FaaS have not been broken out as separate categories but are considered as part of PaaS. IaaS, of course, has its own separate category.