As developers it's fun to play with new technology as often as possible. It allows us to learn new things, change our perspectives and find new solutions to problems we encounter in our day-to-day work. Today I'd like to give a brief introduction to GAE (Google Apps Engine) and few other Google-based cloud services one might find useful when tackling a new project.
GAE is a deployment platform for high-availability web applications and services. For the Java/JSP developers, there's an integrated Eclipse plugin that makes the switch to GAE easy. Those of you who do not use an IDE have an option of using Python (currently 2.7) with webapp2 framework and Jinja2 templates.
Some of the benefits of GAE include:
easy development using well known technology (Eclipse/Java, Python)
easy deployment (to staging or production)
easy QA testing once deployed to GAE. Version specific URLs, partial rollouts based on cookies or IPs.
easy rollback in case of problems
caching layer (Memcache)
scalability. GAE will automatically deploy extra instances of your application as needed to handle incoming requests and deactivate them once the peak usage passes.
HRD (High Replication Datastore): noSQL datastore which is replicated to multiple data centres for high-availability and seemless failover.
leverage of using Google's high-availability infrastructure
In addition to GAE, there are other services which can help you roll out a cloud-based solution for your client. These include:
Cloud SQL allows you to fire up a relational database instance. At the time of this writing, Google supports MySQL 5.5 with Innodb table type. Again, the underlying infrastructure makes this db instance highly available with transactional support as well as automatic failover. A web interface is provided. If you have an existing data dump and would like to import it then a command line client is also available. Keep in mind though some of the limits Google imposes, such as 16MB request and response sizes as well as 60 second query timeouts. Remember to check your table indexes when dealing with large data sets.
Cloud Storage is a data storage service which can be used in your web applications, backend archive or for storing huge data sets for later analysis by Big Query (see next section). It's fast, has ACLs, scales well and has a RESTful api for easy integration with new or existing apps. For those building backend services that depend on Cloud Storage there is a handy command line tool.
Big Query This is a very interesting offering from Google. If you've ever dealt with TBs of data that needs analyzing then this service may be the answer for you. Google BigQuery append-only table structures allow you to analyze huge amounts of data which would otherwise need their own expensive infrastructure to be maintained. Billion row data sets, SQL-like query language support, quick processing time, RESTful api, web interface as well as command line client. This is perfect for identifying trends and usage patterns in your application especially large ones when you have a lot of historical data to go through.
Google prides itself in vast infrastructure that has proved itself over and over again as their user base (and usage) has increased. Developers now have a chance to leverage the same services that Google uses to deliver their own well known offerings such as Gmail and Youtube.
I encourage anyone interested in learning the details to check out the
Google Developers site.
Have fun!