19 August 2009

Historical note: This post written under the previous blog name ‘Diary of a Distributed Virgin’

Let’s start with an admission. I’m a Java developer. Just a Java developer*. I’ve only ever coded serious applications in Java (by serious I mean >1000 lines and not written for some university coursework). I like to think I’m a reasonable developer, not the best I know, but definitely not the worst either. I also like to think I’m not just a servlet dude, but my default behaviour (which is hard to change) when encountering some new concept is to ask: Where’s a free library I can use to do this now? Where’s the getting started guide?

So, onto distributed computing systems. I know I need to distribute my software to scale to internet volumes. I know I need to think about failure - of machines, of racks, of datacentres, of countries. I know I need to distribute my application onto many nodes in order to solve these problems, and I know that simple J2EE clustering just ain’t gonna cut it. So I need something better, so where’s that damn library?

Well, if only it were so simple. Don’t get me wrong, there are things out there that might help, products that are being touted as the solution to all my ills, the likes of Terracotta, Gigaspaces, Coherence Grid. But they almost sound like a silver bullet, and we all know they don’t exist, don’t we?

So, onto my next default behaviour when I don’t want some vendor touted solution, drop down a level. Where are the design patterns for this new idiom? Well, as yet I haven’t found a GoF for distributed systems. OK, so go lower, lets learn about the underlying concepts, lets ask someone who knows what they’re talking about for a good book:

“Well, there’s the red book and the black book. They’re both good books, but the black one has more maths. Oh and the company has a copy of the red book.”

A quick glance through the book confirms my fear - I’m gonna need to learn some theory. Onto my second admission - I’m not too hot on computer science theory. Quite frankly, those kinds of courses at uni I found dull, didn’t listen to the lectures, and generally found something better to spend my time on.

And that’s where the story begins. This blog is my journey through the theory and (at some point) the implementation of distributed systems. The blog is for me to chart my course, but if you like it, tell me. If I get something wrong, tell me more.

Thanks for listening.

* OK, so I also play at being an architect and have been known to lead teams, but it spoils the effect.



blog comments powered by Disqus