By Alan Earls
Infrastructure as a services (IaaS) and platform as a services (PaaS) are both potential deployment paths for microservices. But there are big differences, and picking the right path for your project or organization involves a range of tradeoffs.
The problem with PaaS is that it might typically come with a specific set of components that aren’t always the ones developers want. As a result, developers started to move to a form of infrastructure as a service IaaS often called containers as a service (CaaS), such as AWS Elastic Container Service.
You can containerize an app, but that isn’t easy if it’s a legacy app. You still need all the deployment scripts and binaries and all the environmental variables, including storage. With PaaS, that gets even more complicated. PaaS is challenging for legacy applications, but even for ‘cloud-new’ apps, developers complain that they can’t use the latest and greatest technology.
But a PaaS could potentially speed up certain aspects of development and deployment, especially with microservices. The real issue, however, is that microservices deployment requires a more efficient application protocol for microservices communication.
IaaS is usually bare bones storage, network and compute with no software. However, companies like Netflix, Yelp, and Shopify have all built what is essentially their own PaaS, specifically for their needs.
So when it comes to deploying microservices, you basically have two choices: infrastructure you run or infrastructure someone else runs. The tradeoffs are basically the same as any other infrastructure, because you may offload to an IaaS or PaaS provider, but it comes down to cost, capability, capacity and compliance. It comes down to deploying to an infrastructure that provides the needed capabilities with sufficient capacity at the right cost in a compliant manner.
Also, you can’t rule out the fact that serverless technologies play a major role in microservices management, development and deployment. For example, there are serverless AWS step functions used for coordination and workflow management that bring together microservices implemented using serverless Lambda or compute resources such as Amazon EC2 and Amazon ECS.
Whatever path you take, it has to match not just your business but your operational needs. Ask what you can you realistically manage in the different environments and select the right one. We often think of microservices in terms of decomposing applications, but nowadays when we decompose an application it may only result in three to five tiers. Therefore you may have to gravitate toward IaaS just because that will provide more flexibility.