Automatic Software Upgrades for Distributed Systems

Upgrading the software of long-lived, highly-available distributed systems is difficult. It is not possible to upgrade all the nodes in a system at once, since some nodes may be unavailable and halting the system for an upgrade is unacceptable. Instead, upgrades may happen gradually, and there may b...

Full description

Bibliographic Details
Main Author: Ajmani, Sameer
Other Authors: Programming Methodology
Language:en_US
Published: 2005
Online Access:http://hdl.handle.net/1721.1/30589
_version_ 1826192250112049152
author Ajmani, Sameer
author2 Programming Methodology
author_facet Programming Methodology
Ajmani, Sameer
author_sort Ajmani, Sameer
collection MIT
description Upgrading the software of long-lived, highly-available distributed systems is difficult. It is not possible to upgrade all the nodes in a system at once, since some nodes may be unavailable and halting the system for an upgrade is unacceptable. Instead, upgrades may happen gradually, and there may be long periods of time when different nodes are running different software versions and need to communicate using incompatible protocols. We present a methodology and infrastructure that address these challenges and make it possible to upgrade distributed systems automatically while limiting service disruption.Our methodology defines how to enable nodes to interoperate across versions, how to preserve the state of a system across upgrades, and how to schedule an upgrade so as to limit service disruption. The approach is modular: defining an upgrade requires understanding only the new software and the version it replaces.The upgrade infrastructure is a generic platform for distributing and installing software while enabling nodes to interoperate across versions. The infrastructure requires no access to the system source code and is transparent: node software is unaware that different versions even exist. We have implemented a prototype of the infrastructure called Upstart that intercepts socket communication using a dynamically-linked C++ library. Experiments show that Upstart has low overhead and works well for both local-area and Internet systems.
first_indexed 2024-09-23T09:08:19Z
id mit-1721.1/30589
institution Massachusetts Institute of Technology
language en_US
last_indexed 2024-09-23T09:08:19Z
publishDate 2005
record_format dspace
spelling mit-1721.1/305892019-04-10T16:37:33Z Automatic Software Upgrades for Distributed Systems Ajmani, Sameer Programming Methodology Upgrading the software of long-lived, highly-available distributed systems is difficult. It is not possible to upgrade all the nodes in a system at once, since some nodes may be unavailable and halting the system for an upgrade is unacceptable. Instead, upgrades may happen gradually, and there may be long periods of time when different nodes are running different software versions and need to communicate using incompatible protocols. We present a methodology and infrastructure that address these challenges and make it possible to upgrade distributed systems automatically while limiting service disruption.Our methodology defines how to enable nodes to interoperate across versions, how to preserve the state of a system across upgrades, and how to schedule an upgrade so as to limit service disruption. The approach is modular: defining an upgrade requires understanding only the new software and the version it replaces.The upgrade infrastructure is a generic platform for distributing and installing software while enabling nodes to interoperate across versions. The infrastructure requires no access to the system source code and is transparent: node software is unaware that different versions even exist. We have implemented a prototype of the infrastructure called Upstart that intercepts socket communication using a dynamically-linked C++ library. Experiments show that Upstart has low overhead and works well for both local-area and Internet systems. 2005-12-22T02:42:02Z 2005-12-22T02:42:02Z 2005-11-30 MIT-CSAIL-TR-2005-078 MIT-LCS-TR-1012 http://hdl.handle.net/1721.1/30589 en_US Massachusetts Institute of Technology Computer Science and Artificial Intelligence Laboratory 164 p. 135376801 bytes 5539474 bytes application/postscript application/pdf application/postscript application/pdf
spellingShingle Ajmani, Sameer
Automatic Software Upgrades for Distributed Systems
title Automatic Software Upgrades for Distributed Systems
title_full Automatic Software Upgrades for Distributed Systems
title_fullStr Automatic Software Upgrades for Distributed Systems
title_full_unstemmed Automatic Software Upgrades for Distributed Systems
title_short Automatic Software Upgrades for Distributed Systems
title_sort automatic software upgrades for distributed systems
url http://hdl.handle.net/1721.1/30589
work_keys_str_mv AT ajmanisameer automaticsoftwareupgradesfordistributedsystems