Yesterday, on the Digital Nibbles Podcast, host and fellow Cloud pundit Reuven Cohen asked me why do we need PaaS when one can achieve automated scaling on IaaS services like Amazon Web Services. I thought I will do a short post answering this question as it seems to be a common question in the industry. I may have spoken about this in many other blog posts in the past but I thought having one exclusively for this question will make it easy for me to respond in the future.
Before I address the question, let me define what PaaS is in a succinct way possible:
It is PaaS when the infrastructure layer scales seamlessly with the platform layer which, in turn, scales seamlessly with the application.
When I say seamless, the scaling happens automagically without any need to get the hands dirty. When we build out a platform using various orchestration and configuration management tools, one or more of the following is required:
- Even though infrastructure scaling is automatic, platform components like runtime, data store, etc. needs to be scaled separately. This introduces additional layer of complexity and additional overhead in terms of labor. Even though some people might want to use their existing investments on infrastructure tools with PaaS, it is definitely additional overhead while building up from a basic IaaS.
- In addition to Ops overhead, it may require applications to programmatically handle operations which, in turn, implies requirement of newer types of knowledge in the realm of DevOps
- Inside the Silicon Valley bubble, a version of DevOps, where developers have operations knowledge and Ops people code, is taking everyone by storm. Startups in the valley could easily find this talent to build their platform infrastructure on their own using an underlying IaaS offering. But such talent is not easily available elsewhere and, even when they are available, it is expensive
- There is definitely a complexity overhead with IaaS+ approach to platform abstraction but there is also a significant cost overhead
If move to cloud is about optimization and efficiency, I simply cannot understand why anyone will want to use a more inefficient approach to platform abstraction. Let me make it clear here. There are some workloads that require IaaS+ approach and I am not dismissing them outright. But majority of the workloads can work very well on a right Platform as a Service offering without any need to add additional layers of complexity and cost. When you can have both infrastructure and platform scale automagically with applications, why build layers by hand to achieve the same result. The cloud transformation is about doing IT in a smart way. Last I checked the definition, adding additional complexity intentionally is not a definition of smart.