Cloud Service Types
Cloud offerings are typically classified in terms of the low-level resources they abstract away from.
Infrastructure as a Service (IaaS): An IaaS offering abstracts away from the hardware (blades, racks, storage devices and so on) but it typically leaves operating system installation and further software-related concerns to the customer.
Platform as a Service (PaaS): A PaaS offering typically involves an application server (or runtime environment) so that the customer is only responsible for providing high-level software artefacts such as JAR files in Java or DLL assemblies in .NET. It is appropriate for monoglot teams targeting one of the PaaS’ supported languages who write functionally-rich rather than performance-tuned code; this is because compiling custom kernels or tuning the underlying runtime environment (e.g. JVM heap settings) is typically beyond the intended level of abstraction conceived under the paradigm.
Function as a Service (FaaS): FaaS is a more extreme take on the PaaS paradigm since it not only assumes a given programming language but it also abstracts away from the program’s entry point. For example, in a regular PaaS, the programmer has to provide the embedded HTTP server for a microservice, whereas in a FaaS platform, the HTTP is implemented by the platform.
Software as a Service (SaaS): SaaS typically refers to third-party services that can only be used in a cloud fashion, such as SalesForce or Expensify, or that offer a choice between SaaS and custom installation (be it on-premise or in the cloud) such as Atlassian Confluence. In this sense, SaaS is a model for third-party vendors for offering one’s software to customers rather than a workload abstraction level such as IaaS, Paas, and FaaS.
Ernesto Garbarino