Yesterday, at JavaOne 2013, one of the panelist in the PaaS Faceoff panel was talking about scaling which I found troubling. It was a panel with OpenShift (Disclosure: I am a Red Hat employee), CloudBees, ActiveState and Pivotal CloudFoundry. While talking about the platform features, one of the panelists claimed application scaling as one of the features but started talking about scaling nodes. I thought it was misleading and do a short blog post on the topic because it is important for end users of PaaS to understand scaling in PaaS context.
In the past I have objected to IBM and rPath’s marketing messages calling their offerings as PaaS. So when people ask me about the criteria to define PaaS, I always answer that applications should seamlessly scale with the platform without any manual tinkering. This brings into focus the scalability of applications. Does scaling applications means scaling the underlying nodes? My answer is no. Even though scaling the infrastructure based on load on the virtual machines or servers is part of platform scaling, application scaling is entirely different. The platform should be able to spawn more instances of the application based on the application usage. Sometimes it might require node scaling at the infrastructure level but other times it may just be scaling the application containers within a virtual machine or bare metal server. While infrastructure node scaling can easily be done by many infrastructure management tools that are plugged into enterprise IT already, the application scaling can only be done by the platform. It is the core capability of PaaS and bit more complicated than infrastructure node scaling. Scaling applications involve scaling all the dependencies including data store while also keeping data consistency and application availability. It is much easier said than done and only few platforms have got application scaling right.
If you are an enterprise evaluating PaaS for your IT needs, it is important for you to evaluate both infrastructure node scaling (which you may or may not be able to do with your existing assets) and application scaling. Just focussing on infrastructure scaling and not considering seamless application scaling misses the core value proposition of PaaS. So, as an enterprise PaaS buyer, it is absolutely critical that the PaaS offering you are considering supports seamless application scaling. You may or may not want an integrated infrastructure scaling feature (depending on your existing assets) but you definitely need application scaling as a part of the PaaS offering and you cannot compromise on this. Otherwise, why would you even consider PaaS in the first place?