JavaOne 2008 / Day 3
Cameron Purdy’s talk about scalability has been the best session I’ve attended so far. Not only he’s an excellent speaker, he’s also an expert in his field. Cameron Purdy is the founder of Tangosol, which was acquired by Oracle after their successful run. Tangosol is a provider of data grid software.
In his talk entitled “Top 10 Patterns for Scaling Out Java Technology-Based Applications“, Purdy presented his top 10 principles to follow in order to have Java applications that can scale. Actually, these principles were generic technical patterns that can very well be applied to .NET as well as Java.
One of the very interesting points came out when he was presenting his 8th principle: “Architecture Trumps Technology“. There was a slide about Red Herrings. Some of the technologies that we hear beaten all the time with the scalability stick are not inherently unscalable: XML, SOAP, HTTP. I think Purdy’s point was not to mix up Performance and Scalability. For example, he said he had heard statements like “Let’s write it in C because Java doesn’t scale” or he said that one can write a PHP application that can scale. Because the scalability is about maintaining the efficiency of a system as load augments and ideally it should be linear. If we talk about users and Web sites, each additional user shouldn’t cost you more than the previous one. Otherwise, the more successful you are, the closer you get to the point where you start to loose money for every new user.
Another one of his interesting points was about the tiered architectures: He said that tiered architectures are not inherently unscalable either (this is exactly the opposite claimed by GigaSpaces). He made the audience laugh when he said “You can even scale on Windows”.
Regarding stateless vs. stateful applications, it’s true that stateless applications don’t pose a great challenge in order to scale-out. The solution is a cookie-cutter technique. You just replicate. However the real challenge comes with the stateful applications. At this point, Purdy stated 5 patterns:
- Routing
- Partitioning
- Replication
- Coordination
- Messaging
It’s not surprising that Purdy’s #1 principle was simplicity. I think it’s crucial to question things that are complex. And I think it’s healthy to have some scepticism as long as it is accompanied by an investigating, curious and learner mind.
On a more personal level: you have to be able to explain your solution to your colleagues on a whiteboard (maybe not to managers or salespeople, because the important thing, here, is not one’s presentation skills. Not all of us are good at striking a good balance between “not technical enough” and “too technical” for a given audience. However, it’s probably a fair assumption that our peers will understand our technical jargon and detail). Having this point-of-view would help us in building simple architectures and designs.
Here are his top 10 patterns:
#10 - Understanding the Problem
#9 - Define the Requirements
#8 - Architecture Trumps Technology
#7 - Understand the Basics
#6 - Visualize the Networks
#5 - Visualize the Design
#4a - Plan for Overload
#4b - Partition for Scalability
#3a - Plan for Failure
#3b - Replicate for Availability
#2 - Tier Where It Makes Sense
#1 - Simplify
All in all, it was a perfect talk. I wish all sessions were near this quality. 75 hours of JavaOne would pass in a blink of an eye.
- Yagiz Erkan -
JavaOne 2008: Java + You
JavaOne 2008: Opening General Session
JavaOne 2008: Java SE 6, Java SE 7, SOA, SCA and Performance
JavaOne 2008: SOA and Performance
JavaOne 2008: SOA, SCA, REST and Comet Discussed
JavaOne 2008: Comet (AJAX, Grizzly and Cometd)
JavaOne 2008: Java Servlet 3.0
Technorati Tags: Cameron Purdy, Tangosol, Oracle, Java, Performance, Scalability

0 Responses to “JavaOne 2008: Top 10 Patterns of Scalability”