Google Apps Engine: Thinking in the Cloud


Hi,

I still working on learning Google Application Engine (w/ Python) and understanding how the cloud differ from the “normal” web app.

There is no such as a server for your application, so your app will be hosted in many (virtual or physical.. not sure yet) different servers.

There is no server: It’s a cloud!

I think planning is the key for the success of an Cloud Application. Certainly you already know the speech about the importance of planning and designing your application. The fact is that the design and architecture for cloud applications is quite different from a regular applications, for example Google App have restrictions about response time for (web) requests, or the amount of data that can be fetch from the data storage per query. These practices are in favor of creating scalable applications, but they change the playground.

The tight relation between performance and price

The second aspect about the Cloud application is about the performance. Certainly developers do their best for creating well-performed applications. However, not all the applications are thought in this way, and the Cloud is going to charge you for your resource consumption. This means that if you can do all your work with less resources it might cost less in long term.

One cloud for each need: Read the fine print

Other important aspect is the “kind of cloud‘ that you are buying. For example, Amazon offers services for storage, so they might charge you for bandwidth and the storage, I think this service is S3 from AWS. ( see http://aws.amazon.com/s3/ ).  Also, Amazon offers EC2, which is based on processing, and their charge you for CPU time consumption http://aws.amazon.com/ec2/. In this quick sample both services are easy to set up, but they are oriented to different needs. If your application exceeds your quota Amazon services are able to auto upgrade your plan. It’s important to notices that Amazon is capable of charging you in two different plans, your regular plan and the the exceeded quota  in a different plan.

On the other hand, Google’s Cloud (http://code.google.com/appengine/) sets a quotas for different services based on a plan, for example a plan defines a limit for storage, CPU, etc. The Google’s could does not increase your quota automatically; If you reach your quota, then the system will deny the additional requests until the next period starts.

Just because of I’m a Microsoft Developer I’ll mention that Microsoft also has its Cloud services. Sadly, I haven’t done anything on it yet, so you can check their capabilities at http://www.microsoft.com/windowsazure/

NoSQL, and scalable databases: Think in bigger things!

This is other interesting thing about data storage in the cloud. Developers are very used to ER Databases (http://en.wikipedia.org/wiki/Entity-relationship_model), however in the Cloud you might find other kind data storage. It’s a model called NoSQL (http://en.wikipedia.org/wiki/NoSQL), and it’s used for some Clouds such as Google and Amazon clouds. These NoSQL implementations can vary among clouds. Sadly, I’m not sure if Microsoft has implemented this NoSQL model yet. (BTW, thanks to David Mora for the talks about NoSQL).

Does the cloud  speak any language?: The language of the Cloud

This might not be a critical point. It’s important to notice that depending of the cloud you would like to use, this might define a set of tools (or languages)  to be used for development in your application. For example Google application engine is currently targeting Java (www.java.com/)  and python (www.python.org/). Even though it normal to think that both languages should be equivalent, they’re not!.  So, Googlers are trying to keep both with the same capabilities, but from time to time you might be able to do things in one language easier than the other language.

While (true) {Print this.Read(CloudCollection)}

This so far represents some basic thoughts about the Cloud versus the traditional server-hosted applications. My best advice is to check the capabilities of each platform to see if it fits your needs (and budget 😉 ).

Regards,
Herberth

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.