Skip main navigation

IaaS and PaaS in Azure


Previously we looked at the evolution of Azure from ASM to ARM. We established that Azure is much bigger than IaaS. In this step, we’ll distinguish between IaaS and PaaS.

Infrastructure As a Service


Infrastructure as a service (IaaS) refers to machines that are generally hosted for you, such as in the cloud. In IaaS, although the infrastructure is hosted for you, you’re responsible for managing the underlying infrastructure.

As a consumer, you not only need to focus on the application but also on managing scaling requirements for your application and the underlying operating system, such as updates.

Usually, when you think of using Infrastructure as Code (IaC) tools such as Puppet or Chef, you’ll initially think of using IaaS environments because you can specify the number of machines to set up and configure. There is more focus on the infrastructure itself in IaaS than in platform as a service (PaaS).

It is the application architecture and the underlying dependencies that help determine whether the hosting platform should be IaaS, PaaS, or container. When migrating a brownfield application, it is easy to perform a lift and shift (move an application from an on-premises virtual machine to the hosted virtual machine).

Although this might be the fastest way to get your application into the cloud, it might not be the most optimal from a cost or scale point of view.

Applications also become entangled with the OS. This can make the task of migrating applications between OS versions very risky without fully testing them on the new OS version.

One way to identify using IaC and IaaS environments is by considering scaling machines. If you need to add machines by scaling to x, then you should use IaC with IaaS environments. Tools such as Puppet and Chef are designed with machines in mind.

Platform As a Service


You can think of the PaaS as a managed infrastructure service where you don’t need to worry about administrating the underlying infrastructure. The most common and frequently used PaaS services are web applications and database services. In PaaS, the focus is more on the applications than on the infrastructure compared with IaaS, and that’s one of the primary differentiators.

Typically, if the application is written in more recent code, isn’t dependent on the configuration in the virtual machine, or is a web application, then PaaS is a more feasible option.

As for databases, depending on how the databases are set up on-premises, PaaS may be possible as well. For some applications, however, you might still have to perform rework so that the application works with the PaaS solutions (such as storage or caching). PaaS makes it feasible to scale out to multiple machines, which gives it an advantage over IaaS.

One way to identify the relative benefits of using IaC and PaaS environments is to consider scaling. If you need to scale on-demand and the number of machines isn’t a key consideration, you probably will want to use PaaS environments.

PaaS vs IaaS


The e-book The Developer’s Guide to Microsoft Azure uses a car analogy to differentiate a developer platform from an infrastructure platform.

If you own a car, you must go through the purchase process, buy insurance, maintain and service the vehicle over a long period of time, and provide parking or garaging. If you are renting a car, you get the benefit of a car at your disposal for a time without any of the overheads of ownership. And of course, using a ride-hailing service or a taxi is likely to be the most affordable option but can have limited flexibility. You might have to wait five minutes, or maybe stand out in the rain waiting for a ride.

Similarly, you can get more from your scarce developer time by using an application platform that removes complexity and maintenance responsibility. There might be some trade-off considerations around flexibility, but overall, you can get more done faster and with a lower total cost of ownership by building on the platform as a service (PaaS).

Join the discussion

Now that you have a better understanding of IaaS and PaaS, share your thoughts on which service you’d use to manage your virtual machines. Explain your choice.

Use the Discussion section below and let us know your thoughts. Try to respond to at least one other post and once you’re happy with your contribution, click the Mark as complete button to move on to the next step.

This article is from the free online

Microsoft Future Ready: DevOps Development, Implementation and Azure Automation

Created by
FutureLearn - Learning For Life

Reach your personal and professional goals

Unlock access to hundreds of expert online courses and degrees from top universities and educators to gain accredited qualifications and professional CV-building certificates.

Join over 18 million learners to launch, switch or build upon your career, all at your own pace, across a wide range of topic areas.

Start Learning now