5 research outputs found
Multitier Modules
Multitier programming languages address the complexity of developing distributed systems abstracting over low level implementation details such as data representation, serialization and network protocols. Since the functionalities of different peers can be defined in the same compilation unit, multitier languages do not force developers to modularize software along network boundaries. Unfortunately, combining the code for all tiers into the same compilation unit poses a scalability challenge or forces developers to resort to traditional modularization abstractions that are agnostic to the multitier nature of the language.
In this paper, we address this issue with a module system for multitier languages. Our module system supports encapsulating each (cross-peer) 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 multitier modules, each representing a subsystem. Our case studies on distributed algorithms, distributed data structures, as well as on the Apache Flink task distribution system, show that multitier modules allow the definition of reusable (abstract) patterns of interaction in distributed software and enable separating the modularization and distribution concerns, properly separating functionalities in distributed systems
Developing Distributed Programs For The Cloud-Edge Computing Combining Multitier And Aggregate Programming
In the digital era, the increasing number of interconnected devices caused by the advent of Internet of Things and cyber-physical systems, has made distributed systems more and more pervasive as well as difficult to develop.
This has brought about new challenges in terms of complexity and heterogeneity
in the infrastructure on which these systems are deployed. For instance, in a scenario
where the devices are distributed across the cloud and the edge.
To tackle this complexity, two programming paradigms emerged in the last years:
aggregate and multitier programming. The former is a paradigm that addresses
the development of large-scale distributed systems by considering the system as
a collection of devices (i.e. aggregates). Those devices can be programmed by
using functions composition. The latter is a paradigm that allows the
development of distributed systems by abstracting from the communication layer
and developing every component of a distributed system in a single code base.
The integration of these two paradigms can be beneficial for the development of
the so-called Cloud-Edge continuum since aggregate computing can be used to
program the logic of the devices at the edge, and the multitier paradigm can be
used to address specific nodes in the cloud as well as easily deploy the system's
components. The work described in this thesis aims to investigate the
integration of the two programming models and to provide a middleware that uses
the aggregate programming language ScaFi and the multitier programming language
ScalaLoci to allow the development of distributed systems that can be deployed
on the cloud, the edge, or a combination of both
Multiparty Languages: The Choreographic and Multitier Cases (Pearl)
Choreographic languages aim to express multiparty communication protocols, by providing primitives that make interaction manifest. Multitier languages enable programming computation that spans across several tiers of a distributed system, by supporting primitives that allow computation to change the location of execution. Rooted into different theoretical underpinnings - respectively process calculi and lambda calculus - the two paradigms have been investigated independently by different research communities with little or no contact. As a result, the link between the two paradigms has remained hidden for long.
In this paper, we show that choreographic languages and multitier languages are surprisingly similar. We substantiate our claim by isolating the core abstractions that differentiate the two approaches and by providing algorithms that translate one into the other in a straightforward way. We believe that this work paves the way for joint research and cross-fertilisation among the two communities
Multiparty Languages: The Choreographic and Multitier Cases
International audienceChoreographic languages aim to express multiparty communication protocols, by providing primitives that make interaction manifest. Multitier languages enable programming computation that spans across several tiers of a distributed system, by supporting primitives that allow computation to change the location of execution. Rooted into different theoretical underpinnings-respectively process calculi and lambda calculus-the two paradigms have been investigated independently by different research communities with little or no contact. As a result, the link between the two paradigms has remained hidden for long. In this paper, we show that choreographic languages and multitier languages are surprisingly similar. We substantiate our claim by isolating the core abstractions that differentiate the two approaches and by providing algorithms that translate one into the other in a straightforward way. We believe that this work paves the way for joint research and cross-fertilisation among the two communities
A Typed Slicing Compilation of the Polymorphic RPC Calculus
The polymorphic RPC calculus allows programmers to write succinct multitier
programs using polymorphic location constructs. However, until now it lacked an
implementation. We develop an experimental programming language based on the
polymorphic RPC calculus. We introduce a polymorphic Client-Server (CS)
calculus with the client and server parts separated. In contrast to existing
untyped CS calculi, our calculus is not only able to resolve polymorphic
locations statically, but it is also able to do so dynamically. We design a
type-based slicing compilation of the polymorphic RPC calculus into this CS
calculus, proving type and semantic correctness. We propose a method to erase
types unnecessary for execution but retaining locations at runtime by
translating the polymorphic CS calculus into an untyped CS calculus, proving
semantic correctness.Comment: A long version of PPDP 2021 (23rd International Symposium on
Principles and Practice of Declarative Programming