TechHui

Hawaiʻi's Technology Community

These days, web developers are faced with a lot of difficult choices. One of them is which technology to pick for the next app, another is which hosting to use. It takes time and experience to make winning choices, especially when dealing with time sensitive deliverables. Back in the days developers had to do it all: configure a server, set up database access, get a static ip, etc... Configuring and supporting such a system could probably be a full time job in itself. Hence another (more attractive) alternative was to have a 'hosting' company do it for you. The question was, which hosting do you pick? Which one provides more configuration options? Which supports the right set of technologies? Which is more stable? Which one is more robust/responsive? Does it provide easy deployment? Monitoring? Logging? Versioning? Collaboration? Since web applications are evolving, so do hosting companies. Using a local hosting company usually provides higher accessibility to your app, which is important for a number of reasons, even if it supports a lesser variety of features than a more global one. Recently big players started entering hosting arena with their all-in-one solutions. One of these players is
Google App Engine (GAE), which I'd like to talk about in this post. If you are in tune with other Google technologies, Google App Engine is a great edition to the Google web app family. Currently it supports two languages,
Python and
Java. At this moment, Python support is probably a bit more mature, especially when it comes to managing data. Java is a recent addition, but does support enough features to kick-start your next app, and is evolving quickly.
It is possible to mix both technologies together using different app versions, which comes in handy when trying to accomplish different aspects of functionality. Python is great for getting a site up and running quickly, streamlined by support for
Django framework. One can have a basic content management site up in no time with minimal configuration. Uploading your app is a breeze, as well as setting up local development environment. With a
free version, Gae comes with enough goodies to get one started. It supports sending email, lots of bandwidth and CPU time, over 1 million request per day and up to 1GB of stored data. It also comes with certain limitations, not necessarily being a bad thing, since most of them shield one's web-app from improper usage. (see
Restrictions)
On the Java side, Gae supports a number of commonly used features. It tightly integrates with
Eclipse to create, compile and deploy projects quickly. Gae Java comes with native support for
GWT, which gives ability to build robust and highly interactive RIA AJAX web applications. Data aware objects are decorated with either JDO or JPA annotations. It supports JSP pages and Servlets, with standard war directory structure, web.xml configurations, logging, etc.. (One can even write in Groovy, here is an article that explains
how) Out of the box you get Caching API, URL Fetch services, email support, server-side image manipulation, and integration with Google Accounts. Time wise, an experienced developer could probably have a simple GWT app (from scratch) with an RPC call and DB access deployed to Gae within 1-2 hours. Eclipse plugin project creator tool handles all necessary dependencies. Deployment is as easy as pressing 'Deploy' button. A word about Gae datastore.
Gae uses a schemaless object datastore, with a query engine and atomic transactions. It is designed with web applications in mind, having an emphasis on read and query performance. All queries are pre-indexed, capable of handling results over very large data sets. Datastore supports transactional updates, using entity groupings defined by the application as the unit of transactionality in the distributed data network. (see
Datastore Overview) On the admin side, developers have access to a feature-rich dashboard (see bellow). Here one can monitor app's health/performance using various views. GAE Admin supports usage charts, detailed breakdown of quota details, log viewer, data viewer, app version manager, billing, etc.. Like most Google apps, admin site is simple and responsive, packed with enough functionality to get a good handle on what your app is doing on daily basis. You can get started with your very own GAE account
here. (It gives ability to have up to 10 apps and share your apps with other developers)

Thank you for reading and good luck on choosing the right hosting for your web application needs! Ikayzo - Design • Build • Localize | Web • Desktop • Mobile

Views: 149

Comment

You need to be a member of TechHui to add comments!

Join TechHui

Comment by Doug Wood on May 24, 2011 at 11:43am
Another great resource for GAE, and specifically datastore stuff, are the Google IO videos on App engine.There are ways around the limitations using the new files API that was just released, as well as by using the blobstore instead of the datastore.
Comment by Konstantin A Lukin on August 25, 2009 at 10:49am
Thanks. Just tried going through SimpleDB sign-up wizard, interestingly it asks for payment information in advance. With GAE, there is no such thing, one only has to pay if using more than 'allowed' sandbox.

On the technical side, surely there are skeptics to this new non-conventional approach. Here is an article that goes into detail why to avoid SimpleDB all together. It also touches upon similarities with other Internet based engines, such as Google Datastore. From my understanding so far, there are some limitations as to what a datastore can do. However, given Google's experience with managing data, I am willing to invest my time exploring this option further. Personally I think Google has an advantage over other hosting vendors just because they are a leading Internet technology company. Amazon, on the other hand, is more consumer oriented.

Here is a excerpt taken from GAE datastore docs:
The App Engine datastore stores and performs queries over data objects, known as entities. An entity has one or more properties, named values of one of several supported data types. A property can be a reference to another entity.

The datastore can execute multiple operations in a single transaction, and roll back the entire transaction if any of the operations fail. This is especially useful for distributed web applications, where multiple users may be accessing or manipulating the same data object at the same time.

Unlike traditional databases, the datastore uses a distributed architecture to manage scaling to very large data sets. An App Engine application can optimize how data is distributed by describing relationships between data objects, and by defining indexes for queries.

The App Engine datastore is strongly consistent, but it's not a relational database. While the datastore interface has many of the same features of traditional databases, the datastore's unique characteristics imply a different way of designing and managing data to take advantage of the ability to scale automatically.
Comment by Daniel Leuck on August 25, 2009 at 9:47am
Great post! I expect we will be seeing a lot of GWT on GAE applications in the near future.

It will be interesting to see which types of apps lend themselves to Google's datastore, which obviously takes a very different approach than a traditional RDBMS / ORM approach (ex. MySQL + Hibernate.) The Erlang based SimpleDB from Amazon is also very interesting.

Sponsors

web design, web development, localization

© 2024   Created by Daniel Leuck.   Powered by

Badges  |  Report an Issue  |  Terms of Service