There are many as a Service
models, more than we can fully enumerate. However, some of the most common form a kind of hierarchy,
Code you run on hardware you own that does not talk to other computers does not fit in the as a Service
model. You have all the parts, no one is serving any of it to you.
We have you run some code using a virtual machine supplied by IT personnel here at the university.
They provide the hardware. They provide a virtualization layer on top of the hardware: essentially, a program that pretends to be hardware, allowing them to run several virtual machines (VMs) on the same hardware and to change what hardware is running your VM without you noticing.
They also provide the operating system (OS), but could have provided several different OSes; at the start of the semester I ordered a specific version of Linux for each VM. As long as they provided the OS I ordered, I don’t really care how they get it: what hardware and virtualization they pick is up to them.
A container is software that provides an isolated, controlled environment for running a specific application which is independent of the OS it is running on. Docker is the most popular container runtime, though others also exist including containerd, Firecracker, gVisor, Kata Containers, Nabla, Podman, Railcar, rkt. Container management systems help manage clusters of containers; Kubernetes is the most popular of these, though others like Docker swarm also exist.
Container as a Service providers let me purchase either a specific container I want to run or access to a container-management tool like Kubernetes. They provide the operating system, virtualization, and hardware needed to run these tools.
A platform
is somewhat fuzzy in its definition, but generally suggests something like a software library or family or related operations that code you write might wish to use, such as a database engine or trained AI model.
platformlike a database or trained AI model
Some cloud providers allow me to send them a function and send back to me the results of running that function. We call this Function as a Service.
Using FaaS services is sometimes called serverless computing.
This does not suggest there are no servers involved in implementing and using FaaS; rather, it refers to the way that those providing FaaS-backed software can provide server-like operations without buying their own servers or server-like PaaS, CaaS, or IaaS instances.
Any app you run by connecting to a website or by running an installed application that defers key operational functions to a computer over the Internet is Software as a Service.