Categories
Architecture

Understanding the differences between IaaS, Paas, and SaaS

You can now subscribe to get notified of my latest posts!

In my current role as a Solutions Architect, I am regularly talking to developers and architects about IaaS, PaaS and SaaS. These terms, which are relatively new, can sometimes be confusing. In this post, I would like to give a brief description of what they are and how they differ from each other.

As shown above, IaaS, PaaS, and SaaS stand for Infrastructure, Platform and Software as a Service, respectively. These days, you can take pretty much anything and stick ‘aaS’ at the end such as DaaS (Data as a Service). It’s similar to saying ‘this company is uber for x’. In the last few years, new businesses have emerged which have started providing x, whether it be a product, application, feature or anything really, as a service to other businesses or consumers. The core idea behind ‘aaS’ is that your time is well spent focusing on building products critical to your business and letting other companies build and manage non-core products for you.

Overview: How did we get here?

Before we dive deeper into what these 3 models are, let’s take a step back and try to understand how we got here. It used to be much simpler before when all developers had to deal with were monolithic applications running on-prem. As a company, you would either have your own datacenter or rent some space at a datacenter managed by another company. Your networking and sysadmin teams will make sure all the servers were properly connected and working for your developers to use. Your developers would build robust and scalable applications (hopefully) that will be deployed to your servers. Simple, right?

Infrastructure as a Service (IaaS)

In most mid-cap to large-cap companies, this is still the case. They are still managing their own servers in their datacenters but are slowly adopting the cloud. As you know, for almost a decade, we have been going through a cloud transformation where companies are realizing that they don’t want to be in the business of managing their own infrastructure (servers/datacenters) and would rather have someone else, such as Amazon or Google, do that for them. Startups these days are going straight to the cloud which allows them to be extremely flexible and scalable amongst other things. This has led to Infrastructure as a Service (IaaS) where cloud providers such as AWS and GCP provide you with servers and manage them for you.

For example, you can easily spin up Solace’s PubSub+ broker on a linux server using an Amazon AMI in less than a minute. Compare this to having to buy a server, set it up, install it in a datacenter and then deploy software on it. Depending on the size of the company, this can take weeks, if not months.

Platform as a Service (PaaS)

As companies started adopting IaaS model and migrating to the cloud, it became apparent that it wasn’t so easy to do that. A key benefit of the cloud is elasticity. It is extremely easy to spin up servers when demand is high and shut them down when demand is low. However, developing applications for your limited servers in your own datacenter is different from developing applications on cloud where your application might be deployed to hundreds of servers on peak days like Black Friday and network might not be as stable as it is in your own private datacenter causing microservices to go down sporadically.

All of this came with a lot of overhead for developers as well as DevOps team which now had to develop and manage cloud-native applications, respectively. This led to Platform as a Service (PaaS) which allows developers to develop cloud-native applications and manage all the overhead surrounding orchestration of these applications. Popular PaaS include AWS Elastic Beanstalk, Pivotal Cloud Foundry, Kubernetes and OpenShift. Here is one of my previous posts where I showed how to deploy Solace’s PubSub+ broker in OpenShift.

Software as a Service (SaaS)

As cloud migration has picked up, it has further fueled the build vs buy debate. Every company is faced with the option to either build something themselves and hence, have complete control over it or buy it from another company which allows it to focus on its core business but yields complete control. Additionally, while you might have the resources to build the product initially, you still have to dedicate significant resources to maintain and upgrade the product going forward. As a consequence, more and more companies are realizing that they would rather buy non-core products/software from other companies and focus on their core business. For example, you can use Solace Cloud to spin up a PubSub+ broker without needing any hardware and have it managed by Solace.

So what are the differences?

The main difference between IaaS, PaaS, and SaaS is really how much they abstract away from end-users. The end product is an application that you want to use. For that to happen, you need to manage: datacenters, servers, networks, virtualization, operating systems, runtime, storage, middleware, data, applications, and monitoring.

Here is a useful table which shows which parts are being abstracted away from the end-user in each model:

As you can see, SaaS applications are completely managed by someone else. They can be easily accessed through a web browser so you don’t need to worry about installing them on an on-prem server. They are provided as managed service which takes away the overhead of regularly upgrading the underlying software.

PaaS provides you with everything you need to have your application running except for the actual application itself. You are responsible for writing the application and managing it but everything else, such as servers, runtime, and orchestration of your microservices, is provided.

IaaS is the most basic (or flexible) of them all and only provides the underlying infrastructure.

Picking the right model for your company

This beautiful art, drawn by yours truly.

With so many options, it can be a little daunting to decide which one is the best for your company. Thankfully, you don’t have to pick just one. You can go with a hybrid model where your core applications will run on-prem in your own datacenter and the rest of your in-house applications will run on a PaaS such as OpenShift. You might also decide to have some database services run on cloud such as AWS Redshift. Finally, you might want to limit all your vendor software, such as HR/payroll management software (i.e. Workday), monitoring tools (i.e. New Relic) and event brokers (i.e. Solace), to SaaS.

Picking the right model comes down to how much flexibility you want and how little you want to manage. If a product is core to your business and you need to heavily customize it then going with a SaaS model is not the right option. However, there is no need to have your own convoluted HR/payroll management system when a generic SaaS solution would suffice.

Finally, you have to consider the sensitivity of these applications and the data they manage. Some applications are too sensitive to have as SaaS.

Conclusion

As you can see, there are a lot of similarities and differences between IaaS, PaaS, and SaaS. If you are a developer, you must be familiar with all three and how they differ. As an architect, you may be responsible for deciding which model(s) is right for your company based on its size, requirements, and resources. Luckily, you can pick which model works best for you for each of your applications.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.