[Haskell-cafe] Re: Haskell vs GC'd imperative languages, threading, parallelizeability (is that a word? :-D )

Hugh Perkins hughperkins at gmail.com
Tue Aug 21 23:27:34 EDT 2007


On 8/11/07, Benjamin Franksen <benjamin.franksen at bessy.de> wrote:
> A certain amount
> of dynamism wrt the message content (high level protocol) is necessary for
> systems for which Erlang was designed, namely large distributed control
> systems with minimum down-times. For large distributed installations it is
> a matter of practicality to be able to upgrade one component w/o needing to
> recompile (and then re-start) all the other components that it communicates
> with -- for systems with expected down-times of 3 Minutes per year it is a
> matter of being able to meet the specifications. You'll have a hard time
> finding high-availability or large control systems which use an IDL
> approach for communication.

Hmmm, that's interesting.  I'd never considered lack of typing to be a
good thing for system robustness before!

Question: to what extent does interface versioning get around this
problem?  I assume the issue we're trying to address is to be able to
upgrade clients/servers/peers independently, without losing
connectivity with unupgraded systems?

So, using versioned interfaces:

Initially we have:
client1   marketinterface1
server     marketinterface1
client2   marketinterface1

Then, we upgrade the server with a new interface, marketinterface2.
Significantly, we keep the old interface.  So now we have:

client1   marketinterface1
server     marketinterface1, marketinterface2
client2   marketinterface1

The whole system continues to work: client1 and client2 continue to
chat with server on marketinterface1.

Now we upgrade client1:

client1   marketinterface2
server     marketinterface1, marketinterface2
client2   marketinterface1

... and client2:

client1   marketinterface2
server     marketinterface1, marketinterface2
client2   marketinterface2

Finally, we deprecate/remove marketinterface1 from the server:

client1   marketinterface2
server     marketinterface2
client2   marketinterface2


More information about the Haskell-Cafe mailing list