I just read the InfoQ article “What is going on with PaaS?“. In a nutshell, it says that PaaS is being adopted in a very slow pace and enumerates the reasons why it is “failing” or at least losing space to IaaS vendors. The main reasons, according to the author, are: Confusing marketing message, Lack of maturity and Limitations. Although I understand his main points, I have a different point of view and I disagree with some arguments there.
First, I want to state the obvious: PaaS is a platform. Someday, I will write a post entitled “The Platform Dilemma”. Every time I see developers and/or managers dealing with platforms (and I’m not just talking about cloud platforms, but software platforms as well), it’s always the same old story: “it’s limited“, “we bought it to be more productive, but it’s working otherwise“, “it’s not flexible“, “we don’t know how to work with that!“, “it should be helping me but it’s driving me crazy!” etc. That happens when .Net developers start working with Sharepoint, PHP developers with Drupal and also when traditional computer engineers move to PaaS environments, like Google App Engine or Force.com.
The point here is: adopting a platform is always a tradeoff. You give up on some flexibility to get other benefits, most of the time productivity, time-to-market or lower costs. PaaS falls into that dilemma. You should not use it in 100% of your applications. You may even create hybrid architectures taking advantages of both worlds, together with IaaS. That said, in my opinion, PaaS will always have limitations and IaaS will – at least in the next few years – grow in a faster pace than PaaS. And it’s completely normal! It doesn’t mean that there is something wrong with PaaS. Is there anything wrong with Sharepoint or Drupal because we have many more projects using .Net or PHP than the related platforms?
Regard the “confusing marketing message”, I actually agree with that but I don’t blame PaaS for that, but the messy buzzword “cloud computing” in general. And again, I think it’s totally normal that the enterprise world gets a better understanding on what is IaaS (“a regular server in the cloud, if it works here in our datacenter, it’s going to work there”) than what is PaaS. And it also looks less risky jumping to the cloud by just moving from physical servers or traditional data centers to equivalent architectures inside AWS, for example. As I said before, there is nothing going wrong with PaaS, it takes time to shift an enterprise mindset and culture towards a more disruptive approach.
Finally, as a software architect, I see “cloud components” that can be assembled into a great architecture to build amazing things. That includes scalable runtime environments (aka PaaS), managed hadoop clusters, replicated database (SQL or No-SQL), highly scalable data warehouses and so on, everything in the cloud. The menu is open and I want to be free to choose the ingredients better suited to my challenge. It may sounds complex (and it is), but the final decision of which components I should use to tackle both functional and non-functional requirements must be made to deliver business value. Is it IaaS? Is it PaaS? Is it bla-bla-bla-aaS? Doesn’t matter! You know what? It’s probably going to be a best-of-breed of all the above.