Although you aren't required to use a PaaS or IaaS to take a DevOps approach to software delivery, teams frequently use one of these services as part of their DevOps strategy. PaaS and IaaS can both serve as the foundation for continuous deployment pipelines and the automation of key DevOps tasks.
Keep reading for an explanation of why you might want to use a PaaS or IaaS for DevOps, along with tips on deciding which of these two platforms best serves your needs.
What are the benefits of PaaS for DevOps?
A PaaS is a cloud-based environment that provides both development tools and application hosting infrastructure. In other words, a PaaS gives DevOps teams everything they need to build, deliver and host software, in a single package.
Some PaaSes, such as Azure App Service, are tied to specific public clouds. Others, such as Red Hat OpenShift, can run in any public cloud, as well as in a self-managed private cloud.
The main reason why you might want to use a PaaS as part of your DevOps strategy is that PaaSes save time and effort. When you use a PaaS, you don't have to set up development tools and provision infrastructure resources on your own. The PaaS provides a ready-to-go environment. You might need to make some configuration tweaks to tailor the environment to your requirements, but the heavy lifting has already been done for you by the PaaS provider.
What are the benefits of IaaS for DevOps?
IaaS is a category of cloud service that provides access to infrastructure resources, such as data storage, VMs or containers. When you use IaaS, you can quickly and easily deploy the infrastructure you need to host applications or store data in the cloud.
Unlike a PaaS, however, IaaS doesn't include development tools. You can install and run your development tools yourself on top of IaaS if you want, but they are not integrated into the platform as they are with a PaaS.
For a DevOps team, the key benefit of IaaS is that it eliminates the need to acquire and manage physical infrastructure for delivering and hosting applications. IaaS still requires some management effort on the part of users; you must monitor IaaS-based VMs or containers for performance issues, for instance, and make sure to configure proper access controls for data you store in an IaaS service. But overall, IaaS is a simpler and faster way to acquire the infrastructure necessary to host a continuous delivery pipeline.
A secondary advantage of IaaS for DevOps teams is that IaaS services from major cloud service providers tend to be more reliable than infrastructure that engineers set up on premises. Public cloud companies spend a lot of money building redundancy and high availability into their data centers -- to a degree that most other companies, whose main focus isn't on cloud computing, can't afford. For similar reasons, physical security is also usually better for IaaS than for infrastructure that a team manages on its own.
How to choose between PaaS and IaaS for DevOps
From the perspective of DevOps, PaaS and IaaS both have advantages and drawbacks. When choosing which type of service to use -- if either -- consider the following key factors:
- Simplicity. How simple do you want it to be to build and manage the environment that hosts your DevOps delivery pipeline and applications? A PaaS provides the simplest experience.
- Portability. It's not impossible to migrate from one PaaS to another, but it's often a lot of work because you need to adapt to new tools and new services. In contrast, moving from one IaaS offering to another is often quite simple, especially if they are equivalent service types. or instance, moving data from an IaaS storage service on Azure, such as Blob Storage, to a different storage service in the AWS cloud, such as S3, requires no major reconfiguration.
- Control. Although most PaaSes provide a variety of configuration options, they ultimately offer DevOps engineers less control than an IaaS. With PaaS, you're limited to the tool and service configurations that the PaaS supports, whereas with IaaS, you're free to deploy and run virtually anything, and configure it however you like.
In addition, you might want to assess the following secondary factors when comparing PaaS and IaaS:
- Support. Many PaaS offerings include professional support services that teams can use to help troubleshoot problems with DevOps tools that are integrated into the PaaS. IaaS providers support their infrastructure services, but they don't provide support for DevOps tools you run on them. It's on you to manage those tools if you use IaaS.
- Integrations. PaaS platforms tend to offer a variety of integrations that make it easy to connect your DevOps pipeline to external tools or resources that address needs such as security and access control. With IaaS, you must implement most integrations yourself.
- Cost. If saving money is a priority, choose IaaS. In general, PaaS costs more than IaaS because with PaaS, you pay for DevOps tools, the infrastructure that hosts those tools and any applications you run on the infrastructure.
DevOps without a PaaS or IaaS
There's nothing stopping a DevOps team from building a continuous delivery and deployment pipeline without using either a PaaS or IaaS. You can set up DevOps tools on your own infrastructure, integrate them yourself and then manage it all yourself. The result would be a DevOps environment that runs on premises and that you manage on your own.
The obvious downside of this approach is that it requires more effort than using a PaaS or IaaS. Your team also must have the skills necessary to build a complex DevOps environment from scratch.
The tradeoff for the extra work is that you have maximum control over how your DevOps environment is configured and managed. It might also be easier to secure a self-managed, on-premises environment in some respects, especially because you can disconnect the environment from the internet if you wish. Securing cloud DevOps is more challenging in the sense that IaaS and PaaS services run on shared infrastructure and are constantly connected to the internet, so there's more potential security exposure.
Best practices for incorporating a DevOps strategy with PaaS or IaaS
If you choose to use a PaaS or IaaS as part of your DevOps strategy, you can get the most value by adhering to a few basic tips.
- Plan for the long term. Although migrating from one PaaS or IaaS to another is possible, it takes time and effort. To avoid this hassle and the associated delays, choose a PaaS or IaaS platform that will remain scalable and cost-effective for you over the long term.
- Evaluate costs. PaaS and IaaS offerings tend to have complex pricing models. Be sure to evaluate your total cost carefully and determine whether your platform will deliver the best cost benefit over the long term.
- Prioritize flexibility. It's likely that your DevOps practices will evolve over time. Whether you use a PaaS or IaaS, configure it in such a way that you can modify it as you need. Make sure you can swap out one tool for another, for instance, or migrate from VMs to containers, if you choose to do so.
- Plan for failure. Although PaaS and IaaS offerings tend to offer high degrees of reliability, they can fail. Have a backup plan in place -- such as spinning up a fallback DevOps environment in a different cloud -- so you can restore operations quickly if your resources go down.
PaaS and IaaS can both save DevOps teams time and effort, but they do so in different ways. When considering whether to use a PaaS, IaaS or neither as part of your DevOps strategy, consider factors such as what level of control you need, how portable you want your environment to be and how simple you'd like to make your overall DevOps experience.