In the Google consumer survey that we conducted recently, one of the questions that we had asked was about the pain points that users felt in regards to using different PaaS products. Below are the results of answers to this question.
The top two pain points for users seem to be Inability to test locally and difficult to learn different PaaSes. It is not hard to imagine why these two might be the top choices.
Developing an application to be deployed through PaaS requires that the application be designed to use PaaS-specific details in the application. For instance, when using Amazon Elastic Beanstalk to build and deploy an application that needs a MySQL service, the application code needs to be written to read the MySQL connection parameters through Amazon specific environment variables (RDS_HOSTNAME, RDS_DB_NAME, RDS_USERNAME, RDS_PASSWORD, RDS_PORT). When such platform-specific details have to be specified within the application itself, for local testing such environment variables need to be defined locally. Keeping such things in mind when developing and testing cloud applications locally can become tedious. It also causes the application to become tied to that particular cloud.
As far as learning different clouds are concerned, the basic abstractions and concepts of different clouds are different. For instance, when using Google App Engine, one needs to understand the concept of a project. An application can be created within a project. On the other hand, for deploying an application to Amazon Elastic Beanstalk one needs to understand the concepts of application, environment, and artifacts. An application can have one or more environments in which application’s code is deployed in the form of application artifacts.
Application developers should carefully consider and evaluate different PaaSes for ease of local development and testing and ease of understanding of different cloud abstractions before deciding on a particular PaaS for their cloud application deployment needs.