Architechting Distributed Systems: the bleedin’ obvious

Distributed systems were a big deal when I was reading Intelligent Systems at the graduate research centre for cognitive science at the University of Sussex — there were tutorials, seminars, lectures, books: I would not be surprised if there were courses devoted to it, there was certainly active research devoted to it.

I remember thinking that would be a great way to spend time — making computers interact in an intelligent manner — and so I am grateful that although I could not afford to live on a research grant, I have made my living helping computers inter-communicate.

Of course I would be much happier if I and my family could live comfortably whilst I research the interaction of sensitive, independent agents creating music, but I would not know where to start getting the funding.

I find it strange that distributed systems are still, in 2014, 14 years after my MSc, distributed systems are still so rare: and that’s also 14 years after Fielding’s seminal Architectural Styles and the Design of Network-based Software Architectures.

The way I learnt it, the way that seems most natural to me, and the way I practice, is to have every agent (in the academic language of 14 years ago), every component system, be a sub-class of one base class, one prototype that implements (specifically: hosts implementations of) basic needs, or requirements — such as transport protocols, generic data-description languages, and basic engineering such as self-installation of all required software dependencies, libraries, headers, binaries, update management/version control.

This is not an academic point, nor a nicety that can be dispensed with in favour of ‘the interesting work’ — on the contrary, the base-class is clichéd kick start, the fabled boostraps by which your work will metaphorically raise  itself.

Knowing which components to use — which version of which flavour of which OS, which virtual machine provisioner, which indexing strategy to use, which thread technique to use in processing massive archives —  these things can come from either study/research, experience/practice, or as an evolution of other practices. With relation to the latter case, study will show has experience already has, that clinging to legacy technology is no more productive than clinging to a past life, but that’s a whole different post, and probably for FaceTube.