singkham - Fotolia
Traditionally, organizations have been presented with two options: infrastructures as a service and platform as a service. They differ greatly in what they offer developers, so it's important to understand the differences between these two approaches.
This article looks at the major differences between IaaS and PaaS, what they offer developers in terms of microservices development resources and why organizations shouldn't necessarily think they have to make an all-or-nothing choice when it comes to IaaS vs. PaaS.
IaaS vs. PaaS: The differences
IaaS can be referred to as the build-it-yourself approach. By working with an IaaS offering, like Amazon Web Services (AWS) or Google Compute Engine, developers and application management personnel will have access to an integrated set of tools and other resources that will help with development and app management.
"IaaS is sort of low-level; I've got all these resources available to me -- compute, storage, network -- and I assemble them together myself," explained Randy Shoup, VP of engineering at the online subscription and personal shopping service Stitch Fix, a company that has invested heavily in microservices development. "So, instead of getting the car, get the pieces of the car, and I build it myself."
IaaS provides the tools and resources needed for development, but the organization is responsible for provisioning and managing its own development platform. This means developers will need to orchestrate their own execution processes, manage their own data services and maintain the underlying OS. For some teams, this will mean more flexibility when adding unique features and tweaking apps and services for maximum performance. But this may also be a more time-consuming approach because more work will be involved for developers.
PaaS, on the other hand, provides the complete application development package for developers: tooling, support and a preconfigured development platform. PaaS can be likened to the full service gas station of application development management services. Examples of PaaS options include Red Hat's OpenShift platform, Heroku, Microsoft Azure and Google App Engine. Engine Yard, OpenStack and CA Technologies are other examples of vendors in this space. PaaS customers work on a platform and with services that are created and maintained by the PaaS provider, rather than on their own.
"PaaS is more like getting a car and just driving," Shoup explained. "So, all the pieces are already assembled for you. They work together, and it makes it easier."
This means that application execution services, data services and underlying OS functions are handled through the vendor's software. The PaaS vendor will also provide a suite of development tools, frameworks and other resources that are uniquely integrated with the platform the vendor provides. PaaS providers may be able to customize the platform for an organization's specific needs, but it may take time or require that the organization wait for a new version of the platform software.
"The only difference is really whether or not the development tools are actually built into the environment or if you're going to host them separately," explained Chris Tozzi, a TechTarget contributor and DevOps analyst.
More together than separate
While it is possible for both of these application development approaches to function independently of the other, it is often the case that organizations will run both IaaS-based and PaaS-based operations alongside the other or in conjunction.
"That's kind of where we are at Stitch Fix right now," Shoup explained. "We are in a bit of a transition period from [where] we were fully on a platform as a service, using Heroku, and now, we are halfway between that and building our own platform on lower-level infrastructure as a service, things from Amazon Web Services."
Shoup explained that an organization might employ a strategy where user-facing aspects of an application are developed using a PaaS, while back-end functions are handled using an IaaS approach.
"You can absolutely imagine, for example, that all the user-facing pieces, all the user-facing applications, use an off-the-shelf platform as a service, like Heroku, App Engine or Cloud Foundry," Shoup said. "And then, maybe the back-end services aren't served well by that thing, so we write those more in infrastructure. That's a totally legitimate strategy, and all the modern platform microservice vendors enable that."
Shoup explained that this crossover between IaaS and PaaS occurs even within a vendor's own offerings. Since the PaaS offering Heroku is built on AWS, theoretically, users will have access to those same AWS development tools in whatever other development projects they need it for, whether it is on or off the Heroku platform.
"From within Heroku, I mean, you have relatively convenient access to all the AWS services," he explained. "So, you can kind of have a foot in both worlds."
According to some experts, the lines may be blurring between what is considered IaaS and PaaS. New container orchestration offerings from large vendors, like Amazon EC2 Container Service, could be considered to "lie in the middle," between IaaS and a fully integrated development and deployment platform.
"The vendors would like you to believe that it's one or the other," explained George Lawton, an independent researcher and TechTarget contributor. "But really it's a spectrum, and they're sort of converging."
Critical factors to keep in mind when taking the PaaS development route
How to choose the right PaaS for developing cloud apps
Accelerating mobile app development with PaaS, SaaS and IaaS