Saturday, May 05, 2007

The Challenges of Latency

Nice article on latency by Dan Pritchett.

The web has created an interaction style that is very problematic for building asynchronous systems. The web has trained the world to expect request/response interactions, with very low latency between the request and response. These expectations have driven architectures that are request/response oriented that lead to synchronous interactions from the browser to the data. This pattern does not lend itself to high latency connections.

Exactly - I've lived with async systems for some time so my mind thinks this way naturally. I'm constantly amazed at how many programmers just don't get async. There has been progress in the last year or so, however. I'm a little shaken on this topic at the moment though. I am sick to tears of JMS and love the richer async patterns in JavaSpaces, but am faced with walking away from it as the lack of a thriving community has me rattled. What are other ways to accomplish JavaSpaces like styles without JavaSpaces? Hmmm?

I recently read an article where the recommendation was to delay horizontal data spreading until you reach vertical scaling limits. I can think of few pieces of worse advice for an architect. Splitting data is more complex than splitting applications.

This is where all the bodies are in busted distributed systems. It is so easy to make decisions for the short term that make your first (or next) release easier. The problem is these decisions are almost impossible to unwind.

I have much to learn in this area.

Determining whether the passive data center is truly ready to take traffic can only be done by sending traffic to it. This is difficult to do in an active/passive design without impacting customers. Active/active has an inherent self-proof of suitability for managing traffic.

Again, more effort in the short term because you have to actually make it work for real. I've seen many active/passive rigs where everyone knew that if there was a real DR incident that it wouldn't fail over properly. Active/Active really means that you can sleep at night ... it is the TDD equivalent for DR. Also everyone feels bad for the passive servers. I mean what did they do to deserve a life of just sitting there depreciating? I have also said that passive servers are either in purgatory or maybe that is what server heaven is - it is all pretty strange when you think about it.

1 comment:

Anonymous said...

I remain convinced that the barrier to async adoption is that lack of Jedis that grok it. More Jedis find you, more async will you have.