Dynamic Software Updating
For many modern software systems, constant availability is a key requirement. At the same time, such systems are often subject to frequent updates, including security patches and feature improvements. Applying such updates by stopping, patching, and restarting the system results in an unacceptable loss of availability. Dynamic Software Updating (DSU) is a general-purpose technique for patching stateful software without shutting it down, which enables both timely updates and non-stop service. Over nearly 20 years, we have been researching how to build practical, general-purpose DSU systems, which are safe, efficient, and easy to use. We have been exploring semantic foundations, analyses, and implementation techniques toward meeting this challenge in a variety of domains.
We have developed two general-purpose frameworks, Kitsune and Rubah, for expressing dynamic updates to C and Java applications, respectively. Recently, we have been looking at dynamic updating support for the co-evolution of databases and the applications that use them. Previously, we developed Kvolve, a framework to support upgrades to Redis databases. We are currently developing Bullfrog, a relational database management system based on Postgres that supports dynamic schema migration.
Selected publications related to this project (see Michael Hicks’ publications for a complete list):
-
MVEDSUa: Higher Availability Dynamic Software Updates via Multi-Version Execution, ASPLOS 2019. Luis Pina, Anastasios Andronidis, Michael Hicks, and Cristian Cadar.
-
Evolving NoSQL Databases Without Downtime, ICSME 2016. Karla Saur, Tudor Dumitras, and Michael Hicks.
-
Rubah: DSU for Java on a Stock JVM, OOPSLA 2014. Luis Pina, Luis Veiga, Michael Hicks.
-
Efficient, General-purpose Dynamic Software Updating for C, TOPLAS 2014. Christopher M. Hayden, Karla Saur, Edward K. Smith, Michael Hicks, and Jeffrey S. Foster.
-
Specifying and Verifying the Correctness of Dynamic Software Updates, VSTTE 2012. Christopher M. Hayden, Stephen Magill, Michael Hicks, Nate Foster, and Jeffrey S. Foster.
-
Practical Dynamic Software Updating for C, PLDI 2006. Iulian Neamtiu, Michael Hicks, Gareth Stoyle, and Manuel Oriol.
-
Dynamic Software Updating, TOPLAS 2005. Michael Hicks and Scott M. Nettles.