Experience with modularity in consul

Shivakant Mishra, Larry L. Peterson, Richard D. Schlichting

Research output: Contribution to journalArticlepeer-review

19 Scopus citations


The use of modularity in the design and implementation of complex software simplifies the development process, as well as facilitating the construction of customized configurations. This paper describes our experience using modularity in Consul, a communication substrate used for constructing fault‐tolerant distributed programs. First, Consul is presented as a case study of how modularity is feasible in both the design and the implementation of such systems. Secondly, general lessons about modularity in fault‐tolerant systems based on our experience with Consul are given. Issues that are addressed include deciding how the system is divided into various modules, dealing with problems that result when protocols are combined, and ensuring that the underlying object infrastructure provides adequate support. The key observation is that the modularization process is most affected by dependencies between modules, both direct dependencies caused by one module explicitly using another's operation and indirect dependencies where one module is affected by another without direct interaction. Although our observations are based on designing and implementing Consul, the lessons are applicable to any fault‐tolerant distributed system.

Original languageEnglish (US)
Pages (from-to)1059-1075
Number of pages17
JournalSoftware: Practice and Experience
Issue number10
StatePublished - Oct 1993


  • Dependencies
  • Distributed systems
  • Fault‐tolerance
  • Modularity
  • Objects
  • Protocols

ASJC Scopus subject areas

  • Software


Dive into the research topics of 'Experience with modularity in consul'. Together they form a unique fingerprint.

Cite this