Ajax, taken to its logical extreme, is essentially a 1990's-style client/server architecture: one that has a vast, decentralized, and unpredictable network directly in its critical path. (The Internet, we're talking about you.) Application developers have to grapple with network failures, latency, asynchonicity, multi-session synchronization, scalability, failover, cross-site scripting, and server security—and that's in addition to actually being able to build an application in the first place. GWT gives you the plumbing to tackle these challenges head on, but finding the right architecture for your application can still be daunting. In this session, Joel Webber reviews some of the pivotal design decisions you'll want to consider when approaching a new project and gives advice about what to do when.