When applications have critical bugs that present security vulnerabilities or may result in serious failures with potential massive business level impact, these applications have to be updated as fast as possible to minimize the harm of the bug. However, mission-critical or other user-facing applications may maintain critical internal state that has to be serialized and restored during the update process introducing signi1cant cost and delay.
Instead of serializing the internal state we propose to implement applications in such a way that the application state is fully decoupled (e.g. in a different address space or shared memory segment) from the application logic. Such a decoupling allows for example that upgrades can happen without serialization of the data, even allowing side-by-side execution of the updated and the failing version of the application and thereby reducing application downtime during the update process. Furthermore, this decoupling also allows applications to recover easily from failures by recovering the previous data of the crashed application instance.
Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 4.0 License.
Smejkal, Till; Milojicic, Dejan; and Faraboschi, Paolo, "Application live-upgrading and error-recovery using code-data decoupling", Technical Disclosure Commons, (February 21, 2018)