Entwicklung verteilter Systeme mit Multitier Reactive Programming
Zusammenfassung der Projektergebnisse
The primary goal of this project was to design a novel programming model that addresses the complexities of implementing distributed applications. This goal was achieved by incorporating language abstractions for multitier programming and RP. The multitier approach provides a holistic view to reason about data flows that would otherwise be spread across various modules, supports various software architectures through specific language abstractions, and simplifies intricate elements like cross-host communication and data conversions. We believe this project was successful in achieving this goal of designing a programming model that supports the development of distributed applications as evident in the number of top publications. Notably – based on our surveys of the state-of-the art in literature and implementations of distributed applications – we developed a holistic multitier programming language where the distributed components can be developed in the same compilation unit. We designed a static type system that tracks the placement of (reactive) values. Leveraging reactive features, we enable the definition of data flows across different distributed components and the type system ensures type safety across components. Our language enables the composition of different multitier modules that abstract over the distributed architecture and distributed functionalities. Further, our efforts led to the creation of several extensions to our language. For instance, the introduction of availability types enables developers to balance consistency and availability, accepting lower levels of consistency to guarantee higher availability. Thanks to the specification of data flows within the reactive programming model, the language runtime possesses sufficient information about the application structure to automate fault tolerance by restoring crashed applications to the state before the crash. We developed privacy preservation techniques for multitier reactive applications, preventing the leakage of sensitive information. We further designed a programming model that unifies various privacy-enforcing techniques, such as information flow control, symmetric and asymmetric cryptography, secure computing enclaves, partial homomorphic encryption and differential privacy. Last, we developed a technique to automatically refactor programs that are implemented using a conventional, non-multitier, and non-reactive programming model to benefit from the advantages of integrating reactive features. We applied our multitier reactive language design to the development of applications spanning diverse domains, such as network data plane programming, high performance computing and Infrastructure-as-Code applications. Our implementation can be swiftly adopted by developers with minimal disruption to their development processes, as it is implemented as a library, based on a combination of Scala’s advanced type-level programming capabilities and its macro system.
Projektbezogene Publikationen (Auswahl)
-
A fault-tolerant programming model for distributed interactive applications. Proceedings of the ACM on Programming Languages, 3(OOPSLA), 1-29.
Mogk, Ragnar; Drechsler, Joscha; Salvaneschi, Guido & Mezini, Mira
-
Language-integrated privacy-aware distributed queries. Proceedings of the ACM on Programming Languages, 3(OOPSLA), 1-30.
Salvaneschi, Guido; Köhler, Mirko; Sokolowski, Daniel; Haller, Philipp; Erdweg, Sebastian & Mezini, Mira
-
“Multitier Modules”. In: Proceedings of the 33rd European Conference on Object-Oriented Programming (ECOOP ’19). Vol. 134. Leibniz International Proceedings in Informatics (LIPIcs). London, UK: Schloss Dagstuhl – Leibniz-Zentrum für Informatik, July 2019, 3:1–3:29. isbn: 978-3-95977-111-5.
Pascal Weisenburger & Guido Salvaneschi
-
A Survey of Multitier Programming. ACM Computing Surveys, 53(4), 1-35.
Weisenburger, Pascal; Wirth, Johannes & Salvaneschi, Guido
-
Rethinking safe consistency in distributed object-oriented programming. Proceedings of the ACM on Programming Languages, 4(OOPSLA), 1-30.
Köhler, Mirko; Eskandani, Nafise; Weisenburger, Pascal; Margara, Alessandro & Salvaneschi, Guido
-
“Multiparty Languages: The Choreographic and Multitier Cases”. In: Proceedings of the 35th European Conference on Object-Oriented Programming (ECOOP ’21). Vol. 194. Leibniz International Proceedings in Informatics (LIPIcs). Aarhus, Denmark: Schloss Dagstuhl – Leibniz-Zentrum für Informatik, July 2021, 22:1–22:27. isbn: 978-3-95977-190-0.
Saverio Giallorenzo, Fabrizio Montesi, Marco Peressotti, David Richter, Guido Salvaneschi & Pascal Weisenburger
