A Programming Language for Distributed Systems

Today’s software, including many everyday services, such as online streaming, search engines and social networks, is widely distributed, running on top of a network of interconnected computers. Such distributed applications are traditionally developed as separate modules for each component in the di...

Full description

Bibliographic Details
Main Author: Weisenburger, Pascal
Format: Others
Language:en
Published: 2020
Online Access:https://tuprints.ulb.tu-darmstadt.de/13500/1/DissertationPascalWeisenburger20200913.pdf
Weisenburger, Pascal <http://tuprints.ulb.tu-darmstadt.de/view/person/Weisenburger=3APascal=3A=3A.html> (2020): A Programming Language for Distributed Systems.Darmstadt, Technische Universität Darmstadt, DOI: 10.25534/tuprints-00013500 <https://doi.org/10.25534/tuprints-00013500>, [Ph.D. Thesis]
id ndltd-tu-darmstadt.de-oai-tuprints.ulb.tu-darmstadt.de-13500
record_format oai_dc
spelling ndltd-tu-darmstadt.de-oai-tuprints.ulb.tu-darmstadt.de-135002020-10-21T05:18:40Z http://tuprints.ulb.tu-darmstadt.de/13500/ A Programming Language for Distributed Systems Weisenburger, Pascal Today’s software, including many everyday services, such as online streaming, search engines and social networks, is widely distributed, running on top of a network of interconnected computers. Such distributed applications are traditionally developed as separate modules for each component in the distributed system. These modules react to events, like user input or messages from the network, and in turn produce new events for the other modules. Separation into different modules is problematic because combining modules is notoriously hard and requires extensive and time-consuming integration and manual implementation of communication forces programmers to program complex event-based communication schemes among hosts – an activity which is often low-level and error-prone. The combination of the two results in obscure distributed data flows scattered among multiple modules, hindering reasoning about the system as a whole. For these reasons, despite most software today is distributed, the design and development of distributed systems remains surprisingly challenging. We present the ScalaLoci distributed programming language, our approach for taming the complexity of developing distributed applications via specialized programming language support. ScalaLoci addresses the issues above with a coherent model based on placement types that enables reasoning about distributed data flows otherwise scattered across multiple modules, supporting multiple software architectures via dedicated language features and abstracting over low-level communication details and data conversions. ScalaLoci does not force developers to modularize software along network boundaries as is traditionally the case when developing distributed systems. Instead, we propose a module system that supports encapsulating each (cross-host) functionality and defining it over abstract peer types. As a result, we disentangle modularization and distribution and we enable the definition of a distributed system as a composition of ScalaLoci modules, each representing a subsystem. Our case studies on distributed algorithms, distributed data structures, as well as on real-world distributed streaming engines show that ScalaLoci simplifies developing distributed systems, reduces error-prone communication code and favors early detection of bugs. As we demonstrate, the ScalaLoci module system allows the definition of reusable patterns of interaction in distributed software and enables separating the modularization and distribution concerns, properly separating functionalities in distributed systems. 2020 Ph.D. Thesis NonPeerReviewed text CC-BY-SA 4.0 International - Creative Commons, Attribution Share-alike https://tuprints.ulb.tu-darmstadt.de/13500/1/DissertationPascalWeisenburger20200913.pdf Weisenburger, Pascal <http://tuprints.ulb.tu-darmstadt.de/view/person/Weisenburger=3APascal=3A=3A.html> (2020): A Programming Language for Distributed Systems.Darmstadt, Technische Universität Darmstadt, DOI: 10.25534/tuprints-00013500 <https://doi.org/10.25534/tuprints-00013500>, [Ph.D. Thesis] https://doi.org/10.25534/tuprints-00013500 en info:eu-repo/semantics/doctoralThesis info:eu-repo/semantics/openAccess
collection NDLTD
language en
format Others
sources NDLTD
description Today’s software, including many everyday services, such as online streaming, search engines and social networks, is widely distributed, running on top of a network of interconnected computers. Such distributed applications are traditionally developed as separate modules for each component in the distributed system. These modules react to events, like user input or messages from the network, and in turn produce new events for the other modules. Separation into different modules is problematic because combining modules is notoriously hard and requires extensive and time-consuming integration and manual implementation of communication forces programmers to program complex event-based communication schemes among hosts – an activity which is often low-level and error-prone. The combination of the two results in obscure distributed data flows scattered among multiple modules, hindering reasoning about the system as a whole. For these reasons, despite most software today is distributed, the design and development of distributed systems remains surprisingly challenging. We present the ScalaLoci distributed programming language, our approach for taming the complexity of developing distributed applications via specialized programming language support. ScalaLoci addresses the issues above with a coherent model based on placement types that enables reasoning about distributed data flows otherwise scattered across multiple modules, supporting multiple software architectures via dedicated language features and abstracting over low-level communication details and data conversions. ScalaLoci does not force developers to modularize software along network boundaries as is traditionally the case when developing distributed systems. Instead, we propose a module system that supports encapsulating each (cross-host) functionality and defining it over abstract peer types. As a result, we disentangle modularization and distribution and we enable the definition of a distributed system as a composition of ScalaLoci modules, each representing a subsystem. Our case studies on distributed algorithms, distributed data structures, as well as on real-world distributed streaming engines show that ScalaLoci simplifies developing distributed systems, reduces error-prone communication code and favors early detection of bugs. As we demonstrate, the ScalaLoci module system allows the definition of reusable patterns of interaction in distributed software and enables separating the modularization and distribution concerns, properly separating functionalities in distributed systems.
author Weisenburger, Pascal
spellingShingle Weisenburger, Pascal
A Programming Language for Distributed Systems
author_facet Weisenburger, Pascal
author_sort Weisenburger, Pascal
title A Programming Language for Distributed Systems
title_short A Programming Language for Distributed Systems
title_full A Programming Language for Distributed Systems
title_fullStr A Programming Language for Distributed Systems
title_full_unstemmed A Programming Language for Distributed Systems
title_sort programming language for distributed systems
publishDate 2020
url https://tuprints.ulb.tu-darmstadt.de/13500/1/DissertationPascalWeisenburger20200913.pdf
Weisenburger, Pascal <http://tuprints.ulb.tu-darmstadt.de/view/person/Weisenburger=3APascal=3A=3A.html> (2020): A Programming Language for Distributed Systems.Darmstadt, Technische Universität Darmstadt, DOI: 10.25534/tuprints-00013500 <https://doi.org/10.25534/tuprints-00013500>, [Ph.D. Thesis]
work_keys_str_mv AT weisenburgerpascal aprogramminglanguagefordistributedsystems
AT weisenburgerpascal programminglanguagefordistributedsystems
_version_ 1719352892594323456