37 research outputs found
VeriFx: Correct Replicated Data Types for the Masses
Distributed systems adopt weak consistency to ensure high availability and low latency, but state convergence is hard to guarantee due to conflicts. Experts carefully design replicated data types (RDTs) that resemble sequential data types and embed conflict resolution mechanisms that ensure convergence. Designing RDTs is challenging as their correctness depends on subtleties such as the ordering of concurrent operations. Currently, researchers manually verify RDTs, either by paper proofs or using proof assistants. Unfortunately, paper proofs are subject to reasoning flaws and mechanized proofs verify a formalization instead of a real-world implementation. Furthermore, writing mechanized proofs is reserved for verification experts and is extremely time-consuming. To simplify the design, implementation, and verification of RDTs, we propose VeriFx, a specialized programming language for RDTs with automated proof capabilities. VeriFx lets programmers implement RDTs atop functional collections and express correctness properties that are verified automatically. Verified RDTs can be transpiled to mainstream languages (currently Scala and JavaScript). VeriFx provides libraries for implementing and verifying Conflict-free Replicated Data Types (CRDTs) and Operational Transformation (OT) functions. These libraries implement the general execution model of those approaches and define their correctness properties. We use the libraries to implement and verify an extensive portfolio of 51 CRDTs, 16 of which are used in industrial databases, and reproduce a study on the correctness of OT functions
General-Purpose Secure Conflict-free Replicated Data Types
Conflict-free Replicated Data Types (CRDTs) are a very popular class of distributed data structures that strike a compromise between strong and eventual consistency. Ensuring the protection of data stored within a CRDT, however, cannot be done trivially using standard encryption techniques, as secure CRDT protocols would require replica-side computation.
This paper proposes an approach to lift general-purpose implementations of CRDTs to secure variants using secure multiparty computation (MPC). Each replica within the system is realized by a group of MPC parties that compute its functionality.
Our results include: i) an extension of current formal models used for reasoning over the security of CRDT solutions to the MPC setting; ii) a MPC language and type system to enable the construction of secure versions of CRDTs and; iii) a proof of security that relates the security of CRDT constructions designed under said semantics to the underlying MPC library. We provide an open-source system implementation with an extensive evaluation, which compares different designs with their baseline throughput and latency
Techniques intelligentes pour la gestion de la cohérence des Big data dans le cloud
Cette thèse aborde le problème de cohérence des données de Bigdata dans le cloud. En effet, nos recherches portent sur l’étude de différentes approches de cohérence adaptative dans le cloud et la proposition d’une nouvelle approche pour l’environnement Edge computing. La gestion de la cohérence a des conséquences majeures pour les systèmes de stockage distribués. Les modèles de cohérence
forte nécessitent une synchronisation après chaque mise à jour, ce qui affecte considérablement les performances et la disponibilité du système. À l’inverse, les modèles à faible cohérence offrent de meilleures performances ainsi qu’une meilleure disponibilité des données. Cependant, ces derniers modèles peuvent tolérer trop d’incohérences temporaires sous certaines conditions. Par conséquent, une stratégie
de cohérence adaptative est nécessaire pour ajuster, pendant l’exécution, le niveau de cohérence en fonction de la criticité des requêtes ou des données. Cette thèse apporte deux contributions. Dans la première contribution, une analyse comparative des approches de cohérence adaptative existantes est effectuée selon un ensemble de critères de comparaison définis. Ce type de synthèse fournit à l’utilisateur/chercheur une analyse comparative des performances des approches existantes. De plus, il clarifie la pertinence de ces approches pour les systèmes cloud candidats. Dans la seconde contribution, nous proposons MinidoteACE, un nouveau système adaptatif de cohérence qui est une version améliorée de Minidote, un système de cohérence causale pour les applications Edge. Contrairement à Minidote qui ne fournit que la cohérence causale, notre modèle permet aux applications d’exécuter également des requêtes avec des garanties de cohérence plus fortes. Des évaluations expérimentales montrent que le débit ne diminue que de 3,5 % à 10 % lors du remplacement d’une
opération causale par une opération forte. Cependant, la latence de mise à jour augmente considérablement pour les opérations fortes jusqu’à trois fois pour une charge de travail où le taux des opérations de mise à jour est de 25 %
Cloud-edge hybrid applications
Many modern applications are designed to provide interactions among users, including multi-
user games, social networks and collaborative tools. Users expect application response time to
be in the order of milliseconds, to foster interaction and interactivity.
The design of these applications typically adopts a client-server model, where all interac-
tions are mediated by a centralized component. This approach introduces availability and fault-
tolerance issues, which can be mitigated by replicating the server component, and even relying on
geo-replicated solutions in cloud computing infrastructures. Even in this case, the client-server
communication model leads to unnecessary latency penalties for geographically close clients and
high operational costs for the application provider.
This dissertation proposes a cloud-edge hybrid model with secure and ecient propagation
and consistency mechanisms. This model combines client-side replication and client-to-client
propagation for providing low latency and minimizing the dependency on the server infras-
tructure, fostering availability and fault tolerance. To realize this model, this works makes the
following key contributions.
First, the cloud-edge hybrid model is materialized by a system design where clients maintain
replicas of the data and synchronize in a peer-to-peer fashion, and servers are used to assist
clients’ operation. We study how to bring most of the application logic to the client-side, us-
ing the centralized service primarily for durability, access control, discovery, and overcoming
internetwork limitations.
Second, we dene protocols for weakly consistent data replication, including a novel CRDT
model (∆-CRDTs). We provide a study on partial replication, exploring the challenges and
fundamental limitations in providing causal consistency, and the diculty in supporting client-
side replicas due to their ephemeral nature.
Third, we study how client misbehaviour can impact the guarantees of causal consistency.
We propose new secure weak consistency models for insecure settings, and algorithms to enforce
such consistency models.
The experimental evaluation of our contributions have shown their specic benets and
limitations compared with the state-of-the-art. In general, the cloud-edge hybrid model leads to
faster application response times, lower client-to-client latency, higher system scalability as fewer clients need to connect to servers at the same time, the possibility to work oine or disconnected
from the server, and reduced server bandwidth usage.
In summary, we propose a hybrid of cloud-and-edge which provides lower user-to-user la-
tency, availability under server disconnections, and improved server scalability – while being
ecient, reliable, and secure.Muitas aplicações modernas são criadas para fornecer interações entre utilizadores, incluindo
jogos multiutilizador, redes sociais e ferramentas colaborativas. Os utilizadores esperam que o
tempo de resposta nas aplicações seja da ordem de milissegundos, promovendo a interação e
interatividade.
A arquitetura dessas aplicações normalmente adota um modelo cliente-servidor, onde todas as
interações são mediadas por um componente centralizado. Essa abordagem apresenta problemas
de disponibilidade e tolerância a falhas, que podem ser mitigadas com replicação no componente
do servidor, até com a utilização de soluções replicadas geogracamente em infraestruturas de
computação na nuvem. Mesmo neste caso, o modelo de comunicação cliente-servidor leva a
penalidades de latência desnecessárias para clientes geogracamente próximos e altos custos
operacionais para o provedor das aplicações.
Esta dissertação propõe um modelo híbrido cloud-edge com mecanismos seguros e ecientes
de propagação e consistência. Esse modelo combina replicação do lado do cliente e propagação
de cliente para cliente para fornecer baixa latência e minimizar a dependência na infraestrutura
do servidor, promovendo a disponibilidade e tolerância a falhas. Para realizar este modelo, este
trabalho faz as seguintes contribuições principais.
Primeiro, o modelo híbrido cloud-edge é materializado por uma arquitetura do sistema em
que os clientes mantêm réplicas dos dados e sincronizam de maneira ponto a ponto e onde os
servidores são usados para auxiliar na operação dos clientes. Estudamos como trazer a maior
parte da lógica das aplicações para o lado do cliente, usando o serviço centralizado principalmente
para durabilidade, controlo de acesso, descoberta e superação das limitações inter-rede.
Em segundo lugar, denimos protocolos para replicação de dados fracamente consistentes,
incluindo um novo modelo de CRDTs (∆-CRDTs). Fornecemos um estudo sobre replicação parcial,
explorando os desaos e limitações fundamentais em fornecer consistência causal e a diculdade
em suportar réplicas do lado do cliente devido à sua natureza efémera.
Terceiro, estudamos como o mau comportamento da parte do cliente pode afetar as garantias
da consistência causal. Propomos novos modelos seguros de consistência fraca para congurações
inseguras e algoritmos para impor tais modelos de consistência.
A avaliação experimental das nossas contribuições mostrou os benefícios e limitações em comparação com o estado da arte. Em geral, o modelo híbrido cloud-edge leva a tempos de resposta
nas aplicações mais rápidos, a uma menor latência de cliente para cliente e à possibilidade de
trabalhar oine ou desconectado do servidor. Adicionalmente, obtemos uma maior escalabilidade
do sistema, visto que menos clientes precisam de estar conectados aos servidores ao mesmo tempo
e devido à redução na utilização da largura de banda no servidor.
Em resumo, propomos um modelo híbrido entre a orla (edge) e a nuvem (cloud) que fornece
menor latência entre utilizadores, disponibilidade durante desconexões do servidor e uma melhor
escalabilidade do servidor – ao mesmo tempo que é eciente, conável e seguro
Web-IDE for Low-Code Development in OutSystems
Due to the growing popularity of cloud computing and its numerous benefits, many
desktop applications have been, and will continue to be, migrated into the cloud and
made available through the web. These applications can then be accessed through any
device that has access to a browser and internet connection, eliminating the need for
installation or managing dependencies. Moreover, the process of introduction to the
product is much simpler, faster and collaboration aspects are facilitated.
OutSystems is a company that provides software that enables, through an Integrated
Development Environment (IDE) and a specific Low-Code language, users to securely
and rapidly build robust applications. However, there are only available desktop versions
of this IDE. For this reason, the objective of the proposed thesis is to understand what
would be the best path for developing a Web-based version of the IDE.
To achieve this, it is important not only to understand the OutSystems Platform and,
more specifically, the architecture of the Service Studio IDE, which is the component IDE
provided by the product, but also to explore the state-of-the-art technologies that could
prove to be beneficial for the development of the project.
The goal of this work is to debate different architectural possibilities to implement
the project in question and present a conclusion as to what the adequate course of action,
given the context of the problem. After distinguishing what are the biggest uncertainties
and relevant points, a proof of concept is to be presented accompanied with the respective
implementation details.
Finally, this work intends to determine what would be a viable technological architecture
to build a Web-based IDE that is capable of maintaining an acceptable performance,
similarly to Service Studio IDE, while also insuring that the this system is scalable, in
order to be able to provide the service to a large amount of users. That is to say, to present
a conclusion regarding the feasibility of the project proposed.Devido ao aumento de popularidade de tecnologias de computação cloud e as suas inúmeras
vantagens, aplicações desktop estão e vão continuar a ser migradas para a cloud para
que possam ser acedidas através da web. Estas aplicações podem ser acedidas através de
qualquer dispositivo que tenha acesso à internet, eliminando a necessidade de instalação e
gestão de dependências. Além disso, o processo de introdução ao produto é simplificado,
mais rápido e a colaboração é facilitada.
A OutSystems é uma empresa que disponibiliza um software que faz com que utilizadores,
através de um IDE e uma linguagem de baixo nível, possam criar aplicações
robustas de forma rápida e segura. No entanto, atualmente só existem versões deste IDE
para desktop. Como tal, o objetivo da tese proposta é perceber qual será a melhor forma
de desenvolver uma versão do IDE sobre a Web.
Para alcançar isto, é importante não só compreender a Plataforma OutSystems e, mais
especificamente, a arquitetura do Service Studio IDE, que é o principal componente disponibilizado
pelo produto, mas também explorar as tecnologias estado de arte que podem
ser benéficas para o desenvolvimento do projeto.
O objetivo deste trabalho é debater diferentes arquiteturas possíveis para a implementação
do projeto e concluir qual será o curso de ação adequado, dado o contexto
do problema. Após distinguir quais são os maiores pontos de incerteza, uma prova de
conceito é apresentada juntamente com os respetivos detalhes de implementação.
Finalmente, este trabalho tem como intenção detalhar uma arquitetura tecnológica
viável para construir um IDE na web capaz de manter uma performance aceitável, semelhante
à do Service Studio IDE, e garantir a escalabilidade do sistema, de forma a
conseguir oferecer o serviço a um número elevado de utilizadores. Por outras palavras,
apresentar uma conclusão em relação à viabilidade do projeto proposto
Verifying and Enforcing Application Constraints in Antidote SQL
Geo-replicated storage systems are currently a fundamental piece in the development of large-scale
applications where users are distributed across the world. To meet the high requirements regarding la-
tency and availability of these applications, these database systems are forced to use weak consistency
mechanisms. However, under these consistency models, there is no guarantee that the invariants are
preserved, which can jeopardise the correctness of applications. The most obvious alternative to solve
this problem would be to use strong consistency, but this would place a large burden on the system.
Since neither of these options was feasible, many systems have been developed to preserve the
invariants of the applications without sacrificing low latency and high availability. These systems,
based on the analysis of operations, make it possible to increase the guarantees of weak consistency
by introducing consistency at the level of operations that are potentially dangerous to the invariant.
Antidote SQL is a database system that, by combining strong with weak consistency mechanisms,
attempts to guarantee the preservation of invariants at the data level. In this way, and after defining
the concurrency semantics for the application, any operation can be performed without coordination
and without the risk of violating the invariant. However, this approach has some limitations, namely
the fact that it is not trivial for developers to define appropriate concurrency semantics.
In this document, we propose a methodology for the verification and validation of defined prop-
erties, such as invariants, for applications using Antidote SQL. The proposed methodology uses a
high-level programming language with automatic verification features called VeriFx and provides
guidelines for programmers who wish to implement and verify their own systems and specifications
using this tool.Os sistemas de armazenamento geo-replicados são atualmente uma peça fundamental no desenvolvi-
mento de aplicações de grande escala em que os utilizadores se encontram espalhados pelo mundo.
Com o objetivo de satisfazer os elevados requisitos em relação à latência e à disponibilidade destas
aplicações, estes sistemas de bases de dados vêem-se obrigados a recorrer a mecanismos de consistên-
cia fracos. No entanto, sob estes modelos de consistência não existe qualquer tipo de garantia de que os
invariantes são preservados, o que pode colocar em causa a correção das aplicações. A alternativa mais
óbvia para resolver este problema passaria por utilizar consistência forte, no entanto esta incutiria
uma grande sobrecarga no sistema.
Sendo que nenhuma destas opções é viável, muitos sistemas foram desenvolvidos no sentido de
preservar os invariantes das aplicações, sem contudo, abdicar de baixas latências e alta disponibilidade.
Estes sistemas, baseados na análise das operações, permitem aumentar as garantias de consistência
fraca com a introdução de consistência ao nível das operações potencialmente perigosas para o invari-
ante.
O Antidote SQL é um sistema de base de dados que através da combinação de mecanismos de
consistência fortes com mecanismos de consistência fracos tenta garantir a preservação dos invariantes
ao nível dos dados. Desta forma, e depois de definidas as semânticas de concorrência para a aplicação,
qualquer operação pode ser executada sem coordenação e sem perigo de quebra do invariante. No
entanto esta abordagem apresenta algumas limitações nomeadamente o facto de não ser trivial para
os programadores definirem as semânticas de concorrência adequadas.
Neste documento propomos uma metodologia para a verificação e validação de propriedades defi-
nidas, como os invariantes, para aplicações que usam o Antidote SQL. A metodologia proposta utiliza
uma linguagem de programação de alto nível com capacidade de verificação automática designada
por VeriFx, e fornece as diretrizes a seguir para que o programador consiga implementar e verificar
os seus próprios sistemas e especificações, utilizando a ferramenta
Programming Languages and Systems
This open access book constitutes the proceedings of the 29th European Symposium on Programming, ESOP 2020, which was planned to take place in Dublin, Ireland, in April 2020, as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2020. The actual ETAPS 2020 meeting was postponed due to the Corona pandemic. The papers deal with fundamental issues in the specification, design, analysis, and implementation of programming languages and systems