Time Marches On
Posted by Dan Creswell in Distributed Systems, tags: Architecture, development, Distributed SystemsThose specifying requirements often express them without consideration for the passing of time, assuming that actions are instantaneous. A naive development team with limited experience in distributed systems will then make the classic mistake of attempting to implement those requirements to the letter. This can lead to a bunch of undesirable outcomes including:
- Brittleness in the face of failure.
- High cost solutions.
- Poor scaling properties.
- Disappointment as the expectations of the requirements source aren’t met.
Consider a system where we have two (network) hops to an observer and one hop to the initiator of an action (assuming uniform network latency for each hop). Potentially for every two actions there will be a single observation. Thus each observation of the system is out of date by the time it reaches the observer.
Administrative actions can suffer similar problems, in that it could take several hops for the request to arrive at the system. A user may be only one hop away and could be performing many operations in the time it takes for one of our actions to reach the system. For example if we wish to block a user, whilst our request is in transit they might perform several operations.
Things are made worse by network failures which can further delay or prevent execution of an action and slow down the rate of updates to an observer.
How then do we account for these troubles when specifying requirements? By qualifying them with appropriate SLA’s. In the example above, appropriate SLA’s might include:
- Time for propagation of an administrative action.
- Maximum acceptable time after the action is triggered for a user to be blocked.
SLA’s such as the above:
- Help us to identify appropriate solutions (e.g. do we need to pay for multiple independent routes between data-centres).
- Allow us to make appropriate use of asynchronous operations and eventual consistency.
Since SLA’s have significant impact on the way in which a requirement will be implemented it is essential to perform appropriate expectation management, discussing and communicating the implications with the requirements source, they cannot be solely the domain of techies. Remember also that in many situations customers prefer availability over consistency.

Entries (RSS)