Last week, the first QCon conference in the US was held. The conference is targeted at team leads, architects and project managers and aims to be the best environment for learning and networking. It is a relatively small-scale conference (about 400 attendees) that provided an intimate atmosphere and allowed for plenty of discussion and networking with other attendees and speakers. These are my impressions and topics I found most interesting.
Scalability & performance
Judging by the sheer number of people attending the architecture & scalability sessions, these are hot topics among the attendees.
Two presentations by eBay architects gave some insight into what must surely be the most scalable Java application on the internet today. eBay architect Dan Pritchett described how their architecture deals with latency. Instead of using ACID for their application, ensuring atomic and consistent data at all times across all databases, they employ the BASE (Basically Available, Soft-state, Eventually consistent) paradigm to improve availability and response time by sacrificing consistency and atomicity.
Randy Shoup discussed eBay's architecture in more detail. His presentation, The eBay Architecture: Striking a balance between site stability, feature velocity, performance and cost, highlighted the strategies eBay uses to scale their application. By applying functional segmentation (dividing the application by functionality) and horizontal split (for each piece of functionality, use multiple instances that are interchangeable) their architecture is able to scale to the required number of users. When you're dealing with sites this size (to give you an idea, eBay has 16,000 application servers and produces 1.5TB log data per day) everything is custom -- deploying new versions of the application, analyzing log files, persistence of data using partitioning, eBay uses custom built tools for everything. Very interesting to see, even if we don't all build applications of this size.
While not a separate track, DSL (Domain-Specific Languages) were an oft discussed topic. One presentation on this topic, Building DSLs in Static and Dynamic Languages presented an overview of the motivations for using DSLs and categorized them as either internal (meaning implemented in an existing language) or external (using a custom-built lexer/parser). The former often takes the form of a fluent interface -- a human-friendly, readable API. The presentation's Java examples showed use of method-chaining to make statements more readable. A testament to the attention for this topic was Joshua Bloch's statement that he was preparing a JSR that aims to, among other things, improve support for method chaining in the Java language by implicitly returning this from void methods.
QCon provided a broad view of enterprise IT, not focusing on one language or platform. Instead, tracks on advances in both .NET and Ruby were presented and well attended. To underline this, participants in a panel discussion on the future of Java (which included Joshua Bloch and Charles Nutter) agreed that the Java language itself will become less important than the Java platform. Languages like JRuby and Jython are maturing and gaining in popularity. Rather than languages, tools and frameworks will determine which computing environment will "win" in the long run.
Of course, the agile movement was not missing from this conference. A track about the current "Challenges in Agile" brought a number of agile-focused presentations. The most interesting of these, Agile software development in the large discussed issues surrounding running agile projects with multiple teams, often geographically dispersed. Since I'm involved in just such a project, the presentation yielded little new insights, but confirmed many of our practices.
The technical content was well-presented and, overall, quite in-depth and useful. Of all tracks, the Architectures you've always wondered about track was most interesting as well as most popular. The track on Architecture Quality did not focus on software architecture quality as I'd hoped, but instead discussed qualities of system architectures.
An improvement would be to include sessions on topics like team dynamics or estimating and planning, which are certainly useful for team leads and project managers.
All in all, this was a good conference and more than enough reason to look forward to the next QCon, next year in London.