[erlang-questions] Why is Erlang what it is?
Fri Dec 15 01:09:10 CET 2006
Den 2006-12-14 21:59:57 skrev Dominic Williams
> Hi Ulf:
>> Major upgrades in very large applications are often difficult to
>> perform using the soft upgrade facilities alone. We tend more and
>> more towards doing redundancy upgrades instead. One reason is that we
>> have to be able to handle that anyway, and if we can do a hitless
>> redundancy upgrade, why bother with lots of other techniques as well?
> Can you pinpoint what makes it difficult to use soft upgrade only?
> Wouldn't it be possible to design very large applications with the aim
> that they be completely soft-upgradable?
For one thing, in a system with tens or hundreds of thousand
processes, it is very difficult to verify a sequence where each
process individually converts its state. How do you do equivalence
Also, if you have to transform mnesia tables, and also must serve
traffic at high speeds, the time needed for processes to be suspended
may be prohibitive. In a redundancy upgrade, you can run a preparation
stage where you do an off-line conversion of a database backup.
That conversion can be thoroughly tested - something that isn't
easily done when you're converting on the fly while critical
processes are suspended.
> The reason I ask is that if so, such knowledge would be more widely
> useful (not all systems can afford the redundancy) and one could reverse
> your argument: if we can do soft upgrade well, why bother with
> redundancy upgrades...
But if we also have C code, device drivers, etc, we will still
have upgrades that cannot be done softly in place.
More information about the erlang-questions