51,236 research outputs found

    Distributing Aggregate Computations on top of Akka Actors

    Get PDF
    In the context of the Internet of Things, development of large-scale, adaptive systems usually focuses on the behavior of the single device. Aggregate programming is a paradigm that provides an alternative approach, in which the basic unit of computing is a cooperating collection of devices, instead of a single device. scafi is a Scala framework for aggregate programming, and provides an Akka-based platform for aggregate applications, supporting both peer-to-peer and server-based networks. Moreover, scafi offers a simulator module for the simulation of an aggregate system. The work described in this thesis consists in the analysis of scafi, in the partial re-engineering of its internal actor platform, and in the development of new features. The main goal is to enhance the flexibility of scafi in a distributed context, promoting its adoption for programming spatial systems. First of all, communication between distributed nodes is enabled, by defining a JSON-based serialization strategy, which promotes interoperability. A hybrid platform is also introduced, exploiting a peer-to-peer communication between devices, with a central unit that manages all the relevant space related information. This platform fills the main gap of the peer to-peer approach in a distributed environment: tracking of remote devices. Moreover, a code mobility approach is implemented, allowing the assignment of new programs to devices, at runtime. Lastly, the concept of monitoring a distributed aggregate system emerged, leading to the development of a graphical user interface, observing the devices in a running system. In this thesis, I present the new architecture and API of the actor platform of scafi, designed with the aim of ensure a more flexible approach for the development of distributed applications with aggregate computing

    Towards Aggregate Programming in pure Kotlin through compiler-level metaprogramming

    Get PDF
    The last few decades have seen significant technological advancements in computing, the internet, and mobile technology, leading to the growth of the Internet of Things (IoT). This has resulted in a network of physical devices embedded with sensors, software, and connectivity, which can collect and share data. However, this growth has also brought new challenges, such as the need for complex software engineering to take advantage of the computational infrastructure available while considering unpredictability and communication heterogeneity. This thesis explores the aggregate programming, which is a paradigm based on field calculus, and it allows for the easy manipulation of data across devices, making it possible to perform operation on the data of distributed systems, in a simple and efficient manner. The paradigm has been implemented in various programming languages and platforms, such as Protelis, Scafi and FCPP. This thesis proposes a new implementation of the aggregate programming paradigm, called Collektive. The aggregate programming paradigm requires the communication of the devices to be coordinated through the alignment, which keeps track of the computational state of each device. The work done in this thesis explores different Kotlin metaprogramming techniques in order to solve this problem, illustrating the final solution achieved through the implementation of a Kotlin compiler plugin, which is totally transparent and portable. The project provides the user a minimal DSL, which is compatible with multiple platforms, such as JVM, JavaScript and Kotlin Native. This is possible because of the features offered by Kotlin Multiplatform, which is used for the implementation of the DSL. Moreover, this thesis addresses the validation process carried out to test the correct behavior of the system, which guarantees that Collektive can be considered at the same level of the existing aggregate programming implementations

    A Methodology and Simulation-Based Toolchain for Estimating Deployment Performance of Smart Collective Services at the Edge

    Get PDF
    Research trends are pushing artificial intelligence (AI) across the Internet of Things (IoT)-edge-fog-cloud continuum to enable effective data analytics, decision making, as well as the efficient use of resources for QoS targets. Approaches for collective adaptive systems (CASs) engineering, such as aggregate computing, provide declarative programming models and tools for dealing with the uncertainty and the complexity that may arise from scale, heterogeneity, and dynamicity. Crucially, aggregate computing architecture allows for 'pulverization': applications can be decomposed into many deployable micromodules that can be spread across the ICT infrastructure, thus allowing multiple potential deployment configurations for the same application logic. This article studies the deployment architecture of aggregate-based edge services and its implications in terms of performance and cost. The goal is to provide methodological guidelines and a model-based toolchain for the generation and simulation-based evaluation of potential deployments. First, we address this subject methodologically by proposing an approach based on deployment code generators and a simulation phase whose obtained solutions are assessed with respect to their performance and costs. We then tailor this approach to aggregate computing applications deployed onto an IoT-edge-fog-cloud infrastructure, and we develop a corresponding toolchain based on Protelis and EdgeCloudSim. Finally, we evaluate the approach and tools through a case study of edge multimedia streaming, where the edge ecosystem exhibits intelligence by self-organizing into clusters to promote load balancing in large-scale dynamic settings

    Secure Cloud-Edge Deployments, with Trust

    Get PDF
    Assessing the security level of IoT applications to be deployed to heterogeneous Cloud-Edge infrastructures operated by different providers is a non-trivial task. In this article, we present a methodology that permits to express security requirements for IoT applications, as well as infrastructure security capabilities, in a simple and declarative manner, and to automatically obtain an explainable assessment of the security level of the possible application deployments. The methodology also considers the impact of trust relations among different stakeholders using or managing Cloud-Edge infrastructures. A lifelike example is used to showcase the prototyped implementation of the methodology

    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
    • …
    corecore