{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,7,12]],"date-time":"2025-07-12T22:47:58Z","timestamp":1752360478192,"version":"3.32.0"},"reference-count":29,"publisher":"Wiley","issue":"10","license":[{"start":{"date-parts":[[2006,10,30]],"date-time":"2006-10-30T00:00:00Z","timestamp":1162166400000},"content-version":"vor","delay-in-days":4777,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Softw Pract Exp"],"published-print":{"date-parts":[[1993,10]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>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\u2010tolerant 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\u2010tolerant 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\u2010tolerant distributed system.<\/jats:p>","DOI":"10.1002\/spe.4380231002","type":"journal-article","created":{"date-parts":[[2006,11,18]],"date-time":"2006-11-18T05:38:05Z","timestamp":1163828285000},"page":"1059-1075","source":"Crossref","is-referenced-by-count":15,"title":["Experience with modularity in consul"],"prefix":"10.1002","volume":"23","author":[{"given":"Shivakant","family":"Mishra","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Larry L.","family":"Peterson","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Richard D.","family":"Schlichting","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"311","published-online":{"date-parts":[[2006,10,30]]},"reference":[{"key":"e_1_2_1_2_2","unstructured":"S.Mishra \u2018Consul: a communication substrate for fault\u2010tolerant distributed programs\u2019 Ph.D. Thesis Department of Computer Science University of Arizona Tucson AZ 1991."},{"key":"e_1_2_1_3_2","unstructured":"S.Mishra L. L.PetersonandR. D.Schlichting \u2018Consul: a communication substrate for fault\u2010tolerant distributed programs\u2019 Tech. Rep. TR 91\u201332 Department of Computer Science University of Arizona Tucson AZ 1991."},{"key":"e_1_2_1_4_2","doi-asserted-by":"publisher","DOI":"10.1145\/128738.128742"},{"key":"e_1_2_1_5_2","doi-asserted-by":"crossref","unstructured":"F.Cristian B.DanceyandJ.Dehn \u2018Fault\u2010tolerance in the advanced automation system\u2019 Proc. Twentieth Symposium on Fault\u2010Tolerant Computing. Newcastle\u2010upon\u2010Tyne U.K. Jun1990. pp.6\u201317.","DOI":"10.1109\/FTCS.1990.89361"},{"key":"e_1_2_1_6_2","doi-asserted-by":"crossref","DOI":"10.1007\/978-3-642-84696-0","volume-title":"Delta\u20104: A Generic Architecture for Dependable Computing","author":"Powell D.","year":"1991"},{"key":"e_1_2_1_7_2","doi-asserted-by":"publisher","DOI":"10.1109\/32.67579"},{"key":"e_1_2_1_8_2","doi-asserted-by":"publisher","DOI":"10.1145\/98163.98167"},{"key":"e_1_2_1_9_2","doi-asserted-by":"publisher","DOI":"10.1145\/102792.102801"},{"key":"e_1_2_1_10_2","doi-asserted-by":"publisher","DOI":"10.1145\/359545.359563"},{"key":"e_1_2_1_11_2","doi-asserted-by":"publisher","DOI":"10.1145\/7351.7478"},{"key":"e_1_2_1_12_2","unstructured":"H.KopetzandW.Merker \u2018The architecture of MARS\u2019 Proceedings of the Fifteenth Symposium on Fault\u2010Tolerant Computing Ann Arbor MI June1985 pp.274\u2013279."},{"key":"e_1_2_1_13_2","doi-asserted-by":"crossref","unstructured":"H.Kopetz A.Damm C.Koza M.Mulazzani W.Schwabl C.SenftandR.Zainlinger \u2018Distributed fault\u2010tolerant real\u2010time systems: the Mars approach\u2019 IEEE Micro February1989 pp.25\u201340.","DOI":"10.1109\/40.16792"},{"key":"e_1_2_1_14_2","doi-asserted-by":"crossref","unstructured":"D.Powell D.Seaton G.Bonn P.VerissimoandF.Waeselynk \u2018The Delta\u20104 approach to dependability in open distributed computing systems\u2019 Proc. Eighteenth Symposium on Fault\u2010Tolerant Computing Tokyo June1988 pp.246\u2013251.","DOI":"10.1109\/FTCS.1988.5327"},{"key":"e_1_2_1_15_2","unstructured":"S.MishraandR. D.Schlichting \u2018Abstractions for constructing dependable distributed systems\u2019 Tech. Rep. 92\u201319 Department of Computer Science University of Arizona Tucson AZ 1992."},{"key":"e_1_2_1_16_2","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-10571-9_11"},{"key":"e_1_2_1_17_2","doi-asserted-by":"publisher","DOI":"10.1145\/65000.65001"},{"key":"e_1_2_1_18_2","unstructured":"F.Cristian H.Aghili R.StrongandD.Dolev \u2018Atomic broadcast: from simple message diffusion to Byzantine agreement\u2019 Proc. Fifteenth International Symposium on Fault\u2010Tolerant Computing Ann Arbor MI June1985 pp.200\u2013206."},{"key":"e_1_2_1_19_2","doi-asserted-by":"publisher","DOI":"10.1145\/70730.70732"},{"key":"e_1_2_1_20_2","doi-asserted-by":"crossref","unstructured":"P. M.Melliar\u2010SmithandL. E.Moser \u2018Fault\u2010tolerant distributed systems based on broadcast communication\u2019 Proc. Ninth International Conference on Distributed Computing Systems Newport Beach CA June1989 pp.129\u2013134.","DOI":"10.1109\/ICDCS.1989.37940"},{"key":"e_1_2_1_21_2","doi-asserted-by":"crossref","unstructured":"P.Verissimo L.RodriguesandM.Baptista \u2018Amp: a highly parallel atomic multicast protocol\u2019 SIGCOMM'89. Austin TX September1989 pp.83\u201393.","DOI":"10.1145\/75247.75256"},{"key":"e_1_2_1_22_2","doi-asserted-by":"crossref","unstructured":"S.Mishra L. L.PetersonandR. D.Schlichting \u2018Implementing replicated objects using Psync\u2019 Proceedings of the Eighth Symposium on Reliable Distributed Systems Seattle Washington October1989 pp.42\u201352.","DOI":"10.1109\/RELDIS.1989.72747"},{"key":"e_1_2_1_23_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-7091-9198-9_15"},{"key":"e_1_2_1_24_2","doi-asserted-by":"publisher","DOI":"10.1109\/MC.1986.1663305"},{"key":"e_1_2_1_25_2","doi-asserted-by":"publisher","DOI":"10.1145\/989.357400"},{"key":"e_1_2_1_26_2","doi-asserted-by":"publisher","DOI":"10.1145\/128738.128741"},{"key":"e_1_2_1_27_2","doi-asserted-by":"crossref","unstructured":"P.VerissimoandJ.Marques \u2018Reliable broadcast for fault\u2010tolerance on local computer networks\u2019 Proc. Ninth Symposium on Reliable Distributed Systems Huntsville AL October1990 pp.54\u201363.","DOI":"10.1109\/RELDIS.1990.93951"},{"key":"e_1_2_1_28_2","doi-asserted-by":"crossref","unstructured":"F.Cristian \u2018Agreeing on who is present and who is absent in a synchronous distributed system\u2019 inProc. Eighteenth International Conference on Fault\u2010tolerant Computing Tokyo June1988 pp.206\u2013211.","DOI":"10.1109\/FTCS.1988.5321"},{"key":"e_1_2_1_29_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-7091-9123-1_19"},{"key":"e_1_2_1_30_2","doi-asserted-by":"crossref","unstructured":"M.HiltunenandR. D.Schlichting \u2018Modularizing fault\u2010tolerant protocols\u2019 Proc. Fifth SIGOPS European Workshop Le Mont Saint\u2010Michel France September1992.","DOI":"10.1145\/506378.506403"}],"container-title":["Software: Practice and Experience"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fspe.4380231002","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/spe.4380231002","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,1,12]],"date-time":"2025-01-12T00:05:49Z","timestamp":1736640349000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/spe.4380231002"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1993,10]]},"references-count":29,"journal-issue":{"issue":"10","published-print":{"date-parts":[[1993,10]]}},"alternative-id":["10.1002\/spe.4380231002"],"URL":"https:\/\/doi.org\/10.1002\/spe.4380231002","archive":["Portico"],"relation":{},"ISSN":["0038-0644","1097-024X"],"issn-type":[{"type":"print","value":"0038-0644"},{"type":"electronic","value":"1097-024X"}],"subject":[],"published":{"date-parts":[[1993,10]]}}}