Comparing the cloud: Google App Engine versus Amazon's EC2
Open source solutions combined with borrowed infrastructures are changing the character of Java development, letting teams deliver better software quickly and at a low cost. If you find yourself budgeting for an IT project, you owe it yourself (and your company's wallet) to see if renting some space from a Google or Amazon is cheaper than acquiring the hardware yourself.
Several years ago, a few smart companies took advantage of the commoditization of hardware (and related software) by building systems made up of a lot of cheap machines, knowing that the entire infrastructure would continue to work even if individual machines broke at some point. Those smart companies – like Google and Amazon (to name a few) – have enormous infrastructures that they can literally rent out to people like you and me (and keep their core business running smoothly at the same time). Consequently, the notion of cloud computing is a reality these days. If you find yourself budgeting for an IT project, you owe it yourself (and your company's wallet) to see if renting some space from a Google or Amazon is cheaper than acquiring the hardware yourself.
Google's and Amazon's borrowed infrastructures, however, differ distinctly. Google's App Engine is more of a platform for developing Java Web applications. You can't use everything available to the Java universe, such as Hibernate. Instead, you are constrained somewhat to using Google's Big Table, for instance. However, in return you get a free hosted solution that scales to your heart's desire.
Amazon's EC2 offering is less of a development platform per se and more of a generic infrastructure service that hosts virtual machines (which can be Linux or Windows based) on which you can run anything you'd like. EC2 isn't free, but it's a lot more flexible than Google App Engine. You can run any Java application (including one that uses Hibernate, for example) provided you can create or borrow a virtual machine. As with Google App Engine, with EC2 the notion of where an application is deployed and how it will scale is largely in Amazon's control, so scaling it to a global audience is quite efficient.
About Andrew Glover
Andrew is the Engineering Manager for Netflix's Delivery Engineering Team. He and his team are building the next generation Continuous Delivery platform that is facilitating Netflix's rapid global expansion. Before joining Netflix, he served as the CTO of App47, where he lead the development of a SaaS Mobile Application Management platform. Andrew is also the co-author of Addison Wesley's “Continuous Integration” and he actively blogs about software at thediscoblog.com.
More About Andrew »