Google App Engine: Is it the Right Choice?
Google App Engine is a Platform as a Service (PaaS) play from Google. It is not a virtual machine like EC2 from Amazon. Rather, it is a platform to run web applications developed specifically for the App Engine. You cannot drop a web app running elsewhere into the App Engine platform and expect it to work. Conversely, a web application written specifically to run for the App Engine platform can only run within the Google platform and is not portable. So vendor lock-in is one of the biggest drawbacks of this platform.
Google App Engine offers many advantages, the main being the ability to scale, but let us dwell on the drawbacks first. There is no support for relational database. App engine comes with a datastore, which must be used for persistence. It is derived from Google's BigTable, which is a non-relational and somewhat hierarchical database. Developers used to developing for relational databases have to re-learn the App Engine datastore concepts. The datastore query language GQL is similar to SQL though. However, there are many restrictions in place on what type of queries you can write. For example, you cannot have multiple inequality operators for different properties. Aggregate functions like count and sum are not supported. Some of these restrictions are to prevent any query from using too much CPU.
Even with these obvious drawbacks, App Engine has gained decent traction among developers considering that there are 80,000 apps already deployed. Many of the apps may be trivial, but there is surely a growing interest among developer community.
The main advantages of App Engine are the free quotas and scalability. Google says they are providing free quotas equivalent to 5 million page views, which is quite a lot. Compared to say Amazon EC2, there no fixed monthly charges. Only actual CPU time in excess of the free quota is billed. Thus you get a deployment environment for free without spending a penny. That is a huge saving on setup costs. Lot of startups will find this attractive.
The other big benefit of App Engine is scalability. Oddly, this is partially achieved by the query restrictions Google have in place. This forces the developer to design the application and datastore in a certain way. For example, aggregate functions in relational databases often cause scalability problems for large datasets. By removing them, Google forces the developer to store aggregates during the writes rather than computing them on the fly. Granted, this violates the database normalization principles, but when you want to achieve scalability with large datasets something has to give. The same concept is used in data warehousing applications.
Thus the App Engine is a double-edged sword. It is definitely suitable for an entire class of applications where a relational database could create scalability bottlenecks. The flip side is that you give up some features that are taken for granted in the relational world. The development time is also longer. Finding resources is difficult. You have to weigh-in all this before choosing the App Engine as your platform.
We at QBurst has leveraged the power of the App Engine for our Intranet, which consists of employee management, invoice generation and daily status updates. Our Intranet is still evolving, but we are pretty much happy with having chosen the Google platform to run it. The platform is stable and most pages load fast. There are latency issues when we access the app from India, but again it's not too bad.
If you are thinking of developing your application on the App Engine, feel free to
Contact us. We can share our experience and help you decide whether it's the right platform for your application.