IaaS, CaaS, PaaS, FaaS and SaaS are all different categories of cloud computing services. Cloud computing services help you offload/outsource management of your networking, storage, HVAC, Virtualization, Runtimes, Container tech etc. You can thus reduce your CapEx costs considerably while relatively increasing your OpEx costs. This helps you reduce your IT costs in the long run while increasing your agility, developer velocity and improving your Time-to-Market.
In the following sections, we will go through the different categories while providing their respective use cases, examples and payment structures.
IaaS — Infrastructure-as-a-Service
There are multiple ways to look at and explain IaaS. Here we will look at the two most prominent ones: business model and online services.
As a Business model
IaaS is a business model that contrary to the classic buying of computer infrastructure (“My server is in my basement”), makes it possible to rent it when required (on demand). The IaaS Provider takes care of networking, storage, servers and virtualization whereas you, as customer, are responsible for the actual application, its data, the runtime, container technology (if required) and the Operating system.
The most important features of using this approach are:
- Peak loads are absorbed.
- Sudden growth is possible without problems (scalability).
- Unused capacities can be released again immediately.
- There is no need to maintain extra infrastructure for applications that are rarely executed.
- The virtualization technology required for this enables simple software testing on a wide variety of platforms.
As Online Services
You can also view IaaS as onlines services that use certain cloud orchestration technologies to manage creation of virtual machines, selecting hypervisor, allocating storage volume, providing usage information for billing purposes etc. The cloud orchestration technology used by the most public clouds are proprietary but there are multiple open-source solutions (OpenStack, Apache CloudStack etc.) available as well for native clouds.
It should be noted here that VM is not the only infrastructure available as a managed service. There are other resources available as well such as a raw block storage, file or object storage, firewalls, load balancers, IP addresses, virtual local area networks (VLANs) etc.
Primary use cases — single tenancy, confidential computing, more configurability required (specific kernels etc.)
Examples — EC2, S3, Google Compute Engine, GCP Global/Regional Load Balancer, Azure Load Balancer, Azure VM, Azure Storage etc.
Payment structure — Most of the clouds offer pay-per-second option. Furthermore there are discounts available in case you want to reserve VM instances for 1- or 3-year period. There is also the possibility of cost saving through usage of so-called spot / pre-emptible instances. These instances are available at a highly-discounted price for workloads which are interruptible, since such instances can be claimed back by the IaaS vendor at any time causing your workload to be .
CaaS — Container-as-a-Service
What are containers?
Containers are an alternative to hypervisors and use a number of concepts from the Unix world (Control groups, Union Filesystem, Namespaces and Processes) to run your applications securely. Containers run in isolated partitions of a single Linux kernel running directly on the physical hardware. Linux cgroups (Control Groups) and namespaces are the underlying Linux kernel technologies used to isolate, secure and manage the containers. Containerisation offers higher performance than virtualization/hypervisors, because there is no hypervisor overhead. Also, container capacity auto-scales dynamically with computing load, which eliminates the problem of over-provisioning and enables usage-based billing.
What is CaaS?
CaaS lets users deploy and manage containerized applications by offering specific products that either provide a simple way to run your single-container deployments, especially for running your simple microservices or provide a managed container orchestration platform like Kubernetes for running more complex multi-container deployments. The container orchestration platforms provide services like service discovery, container scheduling, container networking, monitoring etc. In either case, the container runtime and other container related services are provided by the CaaS provider.
Primary use case — Containerized applications
Examples — Elastic Kubernetes Service, Google Kubernetes Engine, Azure Kubernetes Service, Azure Container Instance, Cloud Run, AWS Fargate, ECS etc.
Payment structure — The products that offer container orchestration features (Elastic Kubernetes Service, Google Kubernetes Engine etc.) usually charge for the resources used for building the container cluster (for e.g. VMs, load balancers, block storage etc.). Although some of them also charge for cluster management, for example Google Kubernetes Engine charges $0.10/hour per cluster. On the other hand, the products that don’t offer any orchestration features usually charge for memory and vCPU used.
PaaS — Platform-as-a-Service
PaaS allows you to write applications using specific programming languages, libraries, frameworks etc. that are supported by the PaaS provider. The PaaS vendor manages the network, servers, operating systems, storage, language runtimes, libraries, frameworks etc so you can concentrate on the business logic of your application.
Most of the these platforms have the following features:
- Autoscaling — you can scale your application instances to maximum number of instances configured by you or even scale the application to zero in case there are no requests to serve.
- Connections to various other PaaS, SaaS (Software-as-a-Service) and DBaaS (Database-as-a-Service).
- In-built integration with DevOps Services.
Primary use case — Web Applications, Microservices
Examples — Azure App Service, Google App Engine, Elastic Beanstalk
Payment structure — Most PaaS vendors have specific instance types and each of these instance types are charged hourly. Furthermore there is also the possibility of free quota.
FaaS — Function-as-a-Service
FaaS quite similarly to PaaS allow you to concentrate primarily on the business logic, however have a rather different use-case. FaaS allow you to write a function in one of the supported programming languages / frameworks and these functions are then invoked upon a certain event getting fired or an HTTP call. The important features of FaaS applications include:
- The customer only implements the business logic in the functions.
- Applications implemented with FaaS are stateless.
- No need to worry about capacity planning, parallelization and scalability — FaaS vendor takes care of it.
- Event-driven and reactive: With FaaS there is no running server process. Instead, there is a function call as soon as a trigger event has been triggered, for example an HTTP call.
- For persistence, an external database server or network file system must be used (because of the stateless nature of the application!).
- FaaS enables simple scalability - since the stateless functions can be horizontally scaled trivially.
- Since you pay per function call (memory & vCPU allocated for the function), if the function doesn’t ever get called, you are charged nothing.
- FaaS products can be used to integrate different
Primary use case — Event-Driven Architecture, Reactive Programming, Serverless, ETL Jobs, Stateless applications
Examples — Azure Functions, Cloud Functions, AWS Lambda
Payment structure — FaaS products are mostly charged based on the amount of memory (mostly calculated in GB) and vCPU used. The granularity that the clouds charge is different though — AWS charges per 1 ms, Google Cloud charges per 100 ms whereas Azure charges per second. AWS also offers Provisioned Concurrency for greater control over the performance.
Some clouds also charge for function invocation after you cross a free invocations limit. For example Google Cloud charges $0.40 per million invocations after a free invocations limit of two million, whereas Azure charges $0.20 per million executions after a free invocations limit of one million.
SaaS — Software-as-a-Service
SaaS is a business model of no longer selling software to a user but simply making it available as a service. It is a software licensing and delivery model in which software is licensed on a subscription basis and is centrally hosted by the SaaS vendor. The vast majority of SaaS solutions are based on a multi-tenant architecture. With this model, a single version of the application, with a single configuration (hardware, network, operating system), is used for all customers (“tenants”).
SaaS gives a business the potential to reduce IT operational costs by outsourcing hardware and software maintenance and support to the SaaS provider. SaaS applications are often updated more frequently than traditional software, in many cases on a weekly or monthly basis. This is enabled by several factors:
- The application is hosted centrally, so an update is decided and executed by the provider, not by customers.
- The application only has a single configuration, making development testing faster.
- The application vendor does not have to expend resources updating and maintaining backdated versions of the software, because there is only a single version.
- The application vendor has access to all customer data, expediting design and regression testing.
- The solution provider has access to user behavior within the application (usually via web analytics), making it easier to identify areas worthy of improvement.
Examples — Google Workspaces, Office 365
Payment structure — The pricing model for SaaS applications is typically a monthly or yearly flat fee/user, so prices become scalable and adjustable if users are added or removed at any point. It may also be free.