Category Archives: Distributed Computing

Distributed Computing

Reliability

Steve Vinoski talking about reliability (in particular my favourite: Erlang)

To achieve reliability, you have to accept the fact that failure will occur, Once you accept that, then other things fall into place: you need to be able to restart things quickly, and to do that, processes need to be cheap. If something fails, you don’t want it taking everything else with it, so you need to at least minimize, if not eliminate, sharing, which leads you to message passing. You also need monitoring capabilities that can detect failed processes and restart them

Amen to that!

18 Jan 2008

Amazon DB and Erlang

The world and it’s dog is jumping on the Amazon SimpleDB announcement. Interesting to note that apparently (big caveat there!) it is built on Erlang.

I am keen to see how the DB heads respond to this. I also want to see how how long it takes for people to get their heads around the eventual consistency model it employs. The use of an eventual consistency model is often a critical factor in being able to scale any ultra large system but the concept scares many people to death (and thats only the people who realise what it means!)

Thankgod for chaos!

It’s always nice to get an Ebay perspective on things – especially when you totally agree with what is being said. For a long time I have felt that if we really want to embrace the power of large scale distributed systems we have to accept that we just do not know what is going on – life is non-determinstic, messy, chaotic and generally random. Most tech orientated people are used to thinking in a single linear fashion. First the processor does this, then it does that. Nice – but not the way the world works. Things actually happen at the same time. Just not neccasarily on your processor or in your address space. For many people dealing with that is a problem and something that should be somehow hidden away or, at the very least, forced into a 2PC harness. That might work in a small system but not when you reach internet scale systems. Forget all about a linear world and move to thinking about multiple agents doing multiple things at the same time.

This is a thought process that is going to increasingly dominant the way we build systems.