Gangstas could well scale
by Sunny Kalsi on 25 Sep 2009
What Julian doesn't appear to realise is that you don't need a boy and a tenner to make the two generals problem.
"Julian Browne's":http://www.julianbrowne.com/article/viewer/gangsta-scale got my goat this week. What's he doing with my goat, you ask? I have no idea. Milking it I presume. Doesn't he have enough protein in his diet? Can't he afford his own goat? Are goats too risky or expensive in a post-GFC economy? I will discuss all this and more in this article.
Julian's article is mostly well thought out. He begins by talking about how making things asynchronous won't make them faster. At least, that's his intent, I believe. He then goes on to show that he doesn't know what he's talking about, which is where my beef (or _goat_ if you will), exists:
bq. "The Two Generals' Problem":http://en.wikipedia.org/wiki/Two_Generals%27_Problem [is] a thought experiment in coordinating activities via a potentially unreliable asynchronous communication line.
Thinking about the thought experiment is akin to the proving or disproving of god (whichever one you _don't_ believe) -- In an _unreliable communications medium_, co-ordinating an activity is based _purely on faith_. The two key points here are that the medium is unreliable, and that the activity is based on faith. That's why I emphasised those words. I'm telling you this because he then goes on to analogise the thought experiment into a different thought experiment involving "Gangstas" (I don't know what that is, but apparently it's illegal). Here's the full story:
bq. Detective Jimmy McNulty and detective Kima Greggs have staked out a Barksdale drug house for a week. As supplies run low, the crew that run the place call for a re-up of stock, which must be delivered and paid for. At the moment this transaction takes place there will be the drugs, a couple of captains, a few foot soldiers, some illegal guns and a whole load of money all in the house. For the gang it's a dangerous moment. For the police a golden opportunity to make some arrests.
bq. Greggs covers the back of the property and McNulty the front. Police backup arrives, but not enough for comfort. There will be five gang members in the house and six cops in total - three around the back and three at the front. They can overwhelm the gang at the appropriate time, but only if they go together in a coordinated operation.
bq. The way this would normally be done would be by radio. The drug car pulls up, McNulty lets the product enter the house and then yells "Go. Go. Go." into his walkie talkie and all hell breaks loose - 'cept that would be synchronous communication and their commanding officer back at headquarters, political suck-up William Rawls, fancies himself as an enterprise architect and has mandated that everything must be asynchronous.
The story goes on, and now he pretends that the McNulty and Greggs are the two generals, and there's a young boy and $10 involved. I figured it'd be TMI to tell you more.
What Julian doesn't appear to realise is that _you don't need a boy and a tenner to make the two generals problem_. It works just as well with an... oh I don't know... maybe a _walkie talkie_. Imagine the following scenario:
As before, the cops are sitting on either side of the house. They have a walkie talkie. McNulty wants to enter the house and yell "Go Go Go" but it's been a long stake-out, one of the others could be in a bathroom or something. or maybe the batteries have just died (or dying) in the radio. Instead he says "OK are you guys ready"? Greggs replies "yep, ready when you are, but it's kind of hard to pick you up here. Just say when". McNulty yells "GO GO GO". Greggs: "WAIT, did you just say GO or NO". McNulty: "Greggs, I hate you". Benny hill music plays in the background as hilarious antics occur.
The real question here is "what constitutes a reliable communications line". The answer, of course, is "reliability is the inverse of my faith in the communications medium". You can get more technical than that, but you get the idea.
The problem that Julian's got is that he thinks that asynchronous and synchronous communications are at the same level of abstraction, but they are not. Asynchronous communication is actually more basic: You can implement Synchronous communication in terms of Asynchronous communication. In fact, if you do so, that will necessarily form an ideal synchronous system. If the communication is ideal, the synchronous system cannot be wrong. If it isn't, well you're fucked even if you _try_ and implement a synchronous system. The idea behind making all communications asynchronous is to be keenly aware of the fact that _shit can go wrong_.
In fact, this is the problem with making things asynchronous: people expect the system's efficiency to improve. However, maybe the system is _inherently_ synchronous. Maybe you need replies. Maybe you could live without the replies and completely re-think how the processes are completed, but maybe you actually need the replies! Just by changing the underlying system to be asynchronous, you may not see any scalability benefits, he's right about that. His reasoning is somewhat lacking.