5 research outputs found

    Multitier Modules

    Get PDF
    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

    Get PDF
    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)

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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
    corecore