I had an idea I was mulling over with some colleagues. None of us knew whether or not it exists currently.
The Basic Premise is to have a system that has 100% uptime but can become more efficient dynamically.
Here is the scenario:
* So we hash out a system quickly to a specified set of interfaces, it has zero optimizations, yet we are confident that it is 100% stable though (dubious, but for the sake of this scenario please play along)
* We then profile the original classes, and start to program replacements for the bottlenecks.
* The original and the replacement are initiated simultaneously and synchronized.
* An original is allowed to run to completion: if a replacement hasn´t completed it is vetoed by the system as a replacement for the original.
* A replacement must always return the same value as the original, for a specified number of times, and for a specific range of values, before it is adopted as a replacement for the original.
* If exception occurs after a replacement is adopted, the system automatically tries the same operation with a class which was superseded by it.
Have you seen a similar concept in practise? Critique Please ...
Below are comments written after the initial question in regards to posts:
* The system demonstrates a Darwinian approach to system evolution.
* The original and replacement would run in parallel not in series.
* Race-conditions are an inherent issue to multi-threaded apps and I acknowledge them.