In some circumstances, I am careful to pass vars rather than fns, if I
know they are going to be held. That makes things easier during
development, and when I want to roll in updates in production.
- Chas
There are several tiers of reliability that determine what kinds of
fixes/upgrades you can do.
At low levels (2-3 nines) you can run with one machine and fix it as
you go.
At 4-5 nines, you use redundant machines (and georedundancy), and
having a stable machine image is important for hardware swaps. You
never fix on the server unless the alternative is dropping calls, and
the customer is on the phone *right now*. (That's the worst
environment to figure out a fix, of course.)
Above that (6 nines) is the realm of ATC and telephony, where you
might not be able to afford to bring a system down at all. Erlang/OTP
was designed for this space, so it includes hot-swappable components,
though you test and verify them beforehand!
Re consistency: I seem to recall Pascal Costanza working on activation
of layers, so you can swap a whole set of stuff across your program.
He spoke about it at ILC2009, but I'm not sure I've found the right
paper. Common Lisp-specific, though.
-R