ThoughtWorks' CTO, Rebecca Parsons and Martin Fowler presented (with usual panache) this overview of ThoughtWorks' findings on Google App Engine (and the cloud in general) at Google I/O. Being part of the enterprise track, their talk focussed on enterprise readiness/applicability.
A summary for the busy technologist:
Google App Engine
- A reasonable option for a number of applications.
- Sets the bar in terms of low barrier to entry
- Technical things to consider before taking the plunge:
- Testing - development environment not (yet) quite the same as production.
- Persistence - Different idioms needed than when persisting to relational databases.
- Concurrency - The deployment sandbox is effectively single threaded. A whole bunch of Java libraries that spawn their own threads will need to be ported over before they can be used on the app engine. Moving away from shared memory concurrency is probably good anyway.
- There is a spectrum from infrastructure (Amazon) to applications (Salesforce) with platform (app engine) being in the middle but closer to infrastructure. Domain specific play (statistical analysis cloud) is possible in the space between platform and applications. Of course, considering the venue, the speakers did not emit competing names like Amazon or Microsoft.
- Standard potential advantages - dynamic scaling, low entry barrier (therefore low downside risk), pay as you go (op-ex over cap-ex)
- Economies of scale (in terms of skilled people and infrastructure) mean that it is much harder to do-it-yourself (private clouds).
- Security, privacy and IP - SLAs are ok but not nearly as good as the ability to fire your CIO when things go horribly wrong.
- Is it really cheaper? - Unambiguous yes only if you move everything and close down your own data center.
- Need new IT org? - probably yes - hopefully one that has better relations with the business.
- Vendor lock-in? - probably not much worse than Oracle lock-in.
- Other use cases - experiments, spiky one-time computational needs.
- This is another of those things that lets you focus on core competencies.
- Has the potential to solve the last-mile problem in agile software development - frequent and incremental deployment to production.