Cloud services can be categorised into three service models. Infrastructure-as-a-service (IaaS), Platform-as-a-Service (PaaS) and Software-as-a-Service (SaaS). Each service has the advantage of no up-front cost for buying and maintaining hardware.
An on-premises service maintains the entire technology stack.
Infrastructure as a Service
IaaS manages the most expensive part, the virtual machines, storage and networking. You pay a third party cloud provider to rent infrastructure. This is the most flexible out of the three models, allowing you control over the size of hardware and how much you want to use. Azure Virtual Machines, Azure Storage and Azure Virtual Networks are three examples of infrastructure Azure has to offer.
Platform as a Service
For PaaS, server configuration is handled for you. It is usually quicker to set up than IaaS. Azure App Services enables mobile and web apps to be deployed without having to worry about server configuration. This allows developers to focus more of their energy on business logic.
Software as a Service
SaaS solutions are the most user friendly. Office 365, Dropbox and many common apps such as Slack and Shopify. These are usually available via monthly or annual subscriptions. SaaS allows organizations to have the same application quickly and easily.
Functions as a Service
Another cloud service model that doesn't fall into the above three is serveless computing. Serverless computing is a misnomer— it still uses servers to operate; the name comes from the infrastructure being invisible to the developer. The cloud service provider provisions, scales and manages the infrastructure required to execute code. Serverless applications are event-driven, resources are used when a trigger occurs.
Serverless solutions provided by Azure can be custom code scripts via Azure Functions or a workflow based no-code tool using Azure Logic Apps.
Serverless is similar to PaaS as the infrastructure is abstracted away from the developer. However, there are notable differences between the two such as:
- Serverless application code executes only when triggered by an event
- Serverless apps scales automatically whereas a PaaS scaling parameters have to be configures
- PaaS solutions have more control over development environment— it is easier to test and debug the application.