The Human SOA
June 21, 2007 § 3 Comments
Recently, I’ve to endeavoured to understand more about the relationship between our body and mind – the mindbody. Whilst reading up on the more scientific terriority attempting to explain this relationship, and moreover how the two parts communicate, I’ve encountered a fascinating area of science concerning a communication mechanism we have inside us.
Put as simply I can perhaps carelessly put it: our cells, making up our various organs, have various receptors on them, each configured to bind to various information carrying messengers that are produced elsewhere in the body. These information carriers, also known as ligands, have a wide ranging effect on our various inner systems. Endorphins are an example: secreted by the pituitary gland, our various organs react in differing ways upon receiving this substance. The culminating effect is that pain is relieved, and we are put in a mental state of well-being.
What I found interesting whilst pondering this intricate, yet conceptually simple model of communication, is that it mirrors a pattern of design we use in software engineering called the Service Orientated Architecture (SOA). I’ll concede now that it’s a little audacious of me without any medical background to attempt to marry up a process in the body with a paradigm in a completely different field, but I will attempt to do so nonetheless with an uncharacteristically steely determination.
The SOA, in the traditional sense (I’m not referring to REST, WS-* Standards, or any direct technical implementation of SOA) has at the heart of it a rich communication mechanism. I’ll take the common example of a SOA that uses a message-bus for this purpose. Various services hang off this bus, listening out accordingly for various messages. Upon receiving a message, they’ll probably do something important like maybe insert some data into a database, and then might communicate a message back out on to the bus.
Well, lets switch over to the body’s equivalent. The message-bus is quite simply the bloodstream – the way most stuff travels round the body. The messages themselves, instead of being binary packets of data (though they are indeed packets of data – compose of peptides rather than ones and zeros), are the pre-mentioned ligands.
In software SOA’s, in order for a service to listen out for a particular message, you need to set up a subscription. For an organic organ, this is mirrored by the constituent cells needing to house receptors at their surface. This is so the receptors can interact with passing ligands. Similar to making a subscription, each receptor will interact with only a specific legand. Once the ligand and receptor have binded, information consequently trickles down from the outside of the cell into its inside, and thus into the organ. Similar to ‘services’ in the software version of an SOA, the organ then does what ever it wants to. In the case of morphine (carrying endorphine like peptides), or cannabis, the result is that our organs do things such as get us high. In the case of the peptide Cholecystokinin, or in it’s abbreiviated form CCK, our body is able to co-ordinate to do the various things necessary in order to digest food.
In the diagram below, I’ve attempted to model the process of our ligands, receptors and organs interacting during the digestion of food as an SOA
The messages travelling in a good SOA should be event based, and preferabley have some business significant meaning. In the above model, our event (the CCK peptide) is that some food has arrived in the intestine. What’s happening here is the message is being published by the intestinal service, and other services that have subscribed (via their receptors) will pick the message the message up and then do something interesting with it. It’s the mechanism of pub/sub message exchange, rather than direct point-to-point communication. Personally, I find it easier to envisage how such a system could have come about through evolution; our body produces organs that through over time have learnt to respond to our inner-messages, giving us some positive advantage that helps us suceed in the ruthless world that is natural selection. As an interesting aside, in software systems where the messaging breaks down (i.e. we loose messages, or messages get corrupted), the body has it’s equivalents through a variety of illnesses. Viruses can be corrupt messages, docking with cell receptors for unscrupulous means.
So there we go, the human SOA!