In September, at JavaOne 2013, one of the panelist on the PaaS Faceoff panel talked about scaling in a way I found troubling. It was a panel with OpenShift, CloudBees, ActiveState and Pivotal CloudFoundry. While talking about the platform features, one of the panelists claimed ''application scaling'' as one of the features but then began talking about scaling nodes (infrastructure scaling). I thought this was misleading and wanted to do a short blog post on the topic because it is important for end users of PaaS to understand ''scaling'' and what they are getting when choosing a particular PaaS.
Infrastructure Scaling or Application Scaling
In the past, I have objected to IBM and rPath’s marketing messages calling their offerings a PaaS. When people ask me what criteria I use 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 equal scaling the underlying nodes? My answer is no. Althought the infrastructure may require scaling based on virtual machine or servers load as part of platform scaling, application scaling is entirely different. The platform should be able to spawn more instances of the application based on application usage. Sometimes it may require node scaling at the infrastructure level and other times it may require actual application scaling on top of a virtual machine or bare metal server.
While infrastructure node scaling can easily be done by many infrastructure management tools that are already in use, application scaling can only be done by the platform. It is the core capability of PaaS and a bit more complicated than infrastructure node scaling. Scaling applications involves scaling all the dependencies, including the data store, while also keeping data consistency and application availability. It is much easier said than done and very few platforms have done application scaling right.
Scaling in a PaaS Context
If you are an enterprise evaluating PaaS for your IT needs, it is important to evaluate both infrastructure node scaling (which you may or may not be able to do with your existing assets) and application scaling. Simply focusing on infrastructure scaling and without considering seamless application scaling misses the core value proposition of PaaS.
As an enterprise PaaS buyer, it's 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 part of a PaaS offering. You should not compromise on this.
Why would you even bother with PaaS in the first place if it doesn't do application scaling?