In choosing the hosting service, I came across a list of PaaS/SaaS (Platform/Service as a service) provider, including Amazon Web Services (AWS), Google Cloud Platform, Microsoft Azure, RedHat OpenShift, VMware, Docker, Digital Ocean. After some extensive comparison and testing, I choose my beloved RedHat OpenShift. It is by far the most generous and most flexible in my experience. I am familiar with it as I have multiple websites (including this one) hosted by it already. The platform itself is open-source while the hosting has a very good reliability. Being open-source is particularly important as I can install a local copy for development purpose. It also gives me the choice of hosting my own OpenShift platform in the future as I see fit. Lastly, it is very important that OpenShift is customization with (relatively) few constraints compare to other PaaS. Being able to install a custom copy of PHP, apache, and SQL is critically essential, as many open-source software have dependencies requirement difficult or impossible to fulfill by other means.
Initially, I attempted to build a web app from scratch using Google App Engine (GAE), which must be hosted on the Google Cloud platform. Very soon, I feel not comfortable my project being bounded to a single commercial platform, so I search for an alternative. I then realize Google made GAE open sourced, a fork designed for RedHat OpenShift is called CapeDwarf. So I began spending a lot of time trying to install CapeDwarf on OpenShift. Despite being successful in the installation, the system is very unstable and buggy. The pre-configured OpenShift cartridge is outdated too. At the end I gave up on GAE and yet another attempt to search for alternative.
To make the story short, I came across the API approach to develop web app. It is actually the most standard and widely applied method. The API act as an interface to backend services likes push notification and database. This approach is neat and secure. More importantly, it reduced tremendous amount of redundancy in coding from scratch. After all, all "login with Google+" uses the identical protocol. Why build it from scratch? In my view, programming for the infinity expanding set of new platforms and technologies is getting ridiculously out of reach of even the most knowledge programmer. I can see an up rising trend of a new era of programming. I will discuss this vision in a separate article.
So, the API approach to web app is very promising.