IaaS, PaaS or SaaS: Which Platform Is the Correct Solution for Our Workload?
Microsoft Azure is the Microsoft cloud platform. The Azure cloud is made up of three different platforms which can be used by the companies that use the Azure platform. Those platforms are the Infrastructure as a Service (IaaS) platform, the Platform as a Service (PaaS) platform and the Software as a Service (SaaS) platform. These platforms each have different uses and allow for different levels of responsibility to be given to Microsoft depending on which platform is used. Figure 1 shows a selection of those offerings.
Infrastructure as a Service
The Infrastructure as a Service (IaaS) platform is the easiest for people that are new to putting services in the cloud to understand. That is because IaaS at its core is just virtual machines; it is just like running virtual machines on Microsoft Hyper-V or VMware vSphere. The big differences between running virtual machines on your own hardware and running virtual machines in the Azure cloud is that Microsoft owns the hardware, and it offers an immense amount of automation that Microsoft has developed to deploy virtual machines and other services, as well as recover from failures.
Along with running virtual machines in Azure there are also load balancing options to allow for scale out and high availability a well as DNS services so that the company’s public DNS services can be moved from their existing DNS solution to the Microsoft Azure DNS service. This gives your public DNS infrastructure access to the global DNS infrastructure that Microsoft has built to host their DNS service. By using the Microsoft Azure DNS service your DNS requests are served by DNS servers that are hosted all around the world.
Because of the IaaS platform’s ability to look very similar to an on-premises infrastructure, many companies will use IaaS as their first step into the cloud. Many of these companies later choose to move some or all their workloads from IaaS to Platform as a Service (PaaS) in order to reduce management overhead while managing the systems, to reduce cost, and simplify deployments of software. However, moving from IaaS to PaaS will typically require application rewrites, which prevents companies from moving directly from on-premises machines to PaaS.
Platform as a Service
The Platform as a Service offerings from Microsoft encompass a large number of services. These include App Services, Azure Firewall, Azure SQL Database, Azure Database for MySQL, Azure Database for PostgreSQL, DDoS protection, as well as dozens of other services. While IaaS supports running virtual machines, PaaS are a very different platform. With the IaaS platform, you can connect to your virtual machines using either Remote Desktop for Windows virtual machines or SSH for Linux virtual machines. An advantage with PaaS is you don’t have access to the virtual machines that run the PaaS platform. Instead, you connect to the service itself.
When using the App Service feature of Microsoft Azure, which is effectively a website hosting platform, you upload the files for the website to the App Service via FTP, or integration with a CI/CD pipeline platform. Users can then access the App Service via the HTTP / HTTPS protocols that they normally use to access websites running on web servers. To the end user, the websites look the same as websites that were running on traditional computers.
One big advantage that PaaS services such as App Services have over IaaS virtual machines is that most of the PaaS services have automatic scaling built into them. This automatic scaling functionally allows the service to increase in size (and cost) as the usage of the service goes up. When using the App Service to host a website, you select the base size of the app service based on the number of CPU cores and memory that you want to assign to the App Service. Then as the instance of the service comes under more load, a second instance of the service is automatically added (and shows the same website) and the platform automatically balances the workload across the two instances. If more instances are needed, they are created and added as needed up to the limit which the administrator configures.
Some services such as Azure SQL Database, in addition to having the ability to automatically scale, can automatically pause and resume the service. When more users are using the Azure SQL Database, the system will automatically and seamlessly add more cores to the database keeping the percentage of CPU used on the database server at a lower level. When there are no users on the system, the database will pause itself, therefore reducing the cost of the service to where only the cost of storing the database is left. When users attempt to reconnect to the database through the application, the database will automatically restart.
These automatic scaling features offered by PaaS can greatly reduce costs compared to running virtual machines in the IaaS service. With the IaaS service you’d have to pre-scale the virtual machines (either a single virtual machine with a large size or multiple smaller virtual machines) as virtual machines don’t have the ability to automatically scale themselves (excluding the Scale Sets feature of virtual machines which doesn’t work for all workloads). The biggest downside to choosing to run several virtual machines is the cost that goes with running all the virtual machines. Since your company would always be running those virtual machines, they have a monthly cost that applies to them. If your company uses a PaaS approach instead of IaaS, as more instances are created, or the instance size is increased, the cost of the service increases. But when load demand decreases then the instance size is reduced, or the number of instances decreases, so the cost decreases as well. In the case of services like Azure SQL Database, the cost of the service decreases to zero (except for storage, which is a fraction of the cost of running the service).
Software as a Service
Software as a Service (SaaS) offerings in Microsoft Azure are different from IaaS and PaaS. While the IaaS and PaaS platforms are both Microsoft offerings, the SaaS offerings are options that are available from Microsoft as well as Microsoft’s partners. When using SaaS, you decide how much of the service you need for the month, and then you use the service for whatever function they offer.
For example, if you needed to send emails through your application to users, you might choose to use the SaaS service called MailChimp. With MailChimp you tell them how many emails you need to send per month, and they provide APIs that can be used to send those emails and an API so that they can ensure that the emails are sent via your account.
There are hundreds of SaaS applications written by third parties that are available in Microsoft Azure. These include SaaS applications for sending emails, SMS text messages, calendaring services, customer relationship management (CRM) platforms, document management systems, even Power BI, and Microsoft 365.
What Platform Should You Choose?
Which platform should be selected depends on a variety of factors, but I’ll focus on functionality, cost, deployment ease, and general management.
One of the biggest factors when selecting IaaS, PaaS or SaaS is going to include functionality. SaaS offerings, which are available in Microsoft Azure, are very different from the IaaS and PaaS platforms. With SaaS offerings, the software being used is some other vendor’s service that your application consumes whereas the IaaS platform hosts virtual machines, and the PaaS offerings are Microsoft-provided platforms for hosting different services.
Another big factor for companies is the cost. Running virtual machines (IaaS) with the same levels of redundancy as the corresponding PaaS services will typically end up costing the company more money over time.
Another factor to consider is deployment options. With PaaS, the deployment options for CI/CD integration are typically built into the service, whereas with virtual machines (IaaS) the deployment options must be manually configured and managed using third-party tools.
Consider the management overhead of virtual machines and their needs for patch management and the general maintenance and management of operating systems on the virtual machines. On the other hand, there is a learning curve to moving services into PaaS applications which is intimidating for people who are new to Microsoft Azure, and the rapid release cadence of every six weeks which Microsoft maintains for many of the features doesn’t make that easier. Additionally, the PaaS offerings require knowledge of their networking options, scale options, etc.
You might have noticed that I didn’t make a specific recommendation on which platform to use in this article. That’s because every situation at every company is different. While it would be great to be able to move every application and service to a PaaS platform, there are some which simply can’t for any number of reasons. This includes vendor requirements, application complexity, or even agreement from your development team; so, when moving to Microsoft Azure many companies end up with a combination of IaaS, PaaS, and SaaS offerings as that is the best use case for the specific needs of the company.