Developers of modern distributed systems continuously face the impossibility result proved by the CAP theorem. In a nutshell, the theorem states that a partition-tolerant system can either guarantee consistency or availability. Most distributed programming languages implicitly make the choice between consistency or availability in their designs and implementations. Concretely, distributed programming languages can be roughly divided into two categories. A first category of languages provide abstractions to implement the consistent parts of a distributed system. A second category of languages provide abstractions to implement the available parts of a distributed system. However, real-world distributed systems often require consistency for some parts while requiring availability for others. Programmers are therefore forced to implement the abstractions missing from their chosen distributed programming language themselves or rely on external libraries. In this paper we present a novel distributed programming model. This model introduces two object-oriented abstractions: consistents and availables. The former guarantees strong consistency by sacrificing availability. The latter guarantees availability, but only provides eventual consistency. Through these constructs programmers are able to implement the entirety of their distributed system within the same language. We present a prototypical implementation of the model as a TypeScript library called CAPtain.js. To showcase the usefulness of our approach we implement a non-trivial example application. Moreover, we highlight both the functional as well as the performance characteristics of both language abstractions.
Original languageEnglish
Title of host publicationProceedings of the 2018 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software
Pages88-98
ISBN (Electronic)978-1-4503-6031-9
Publication statusPublished - 2018
EventSystems, Programming, Languages and Applications: Software for Humanity - Boston, United States
Duration: 4 Nov 20189 Nov 2018
https://2018.splashcon.org/

Conference

ConferenceSystems, Programming, Languages and Applications: Software for Humanity
Abbreviated titleSPLASH 2018
CountryUnited States
CityBoston
Period4/11/189/11/18
Internet address

ID: 43640025