replicated data • Geo-replication More concurrency; coordination even less viable • Semantic resolution Resolution by “user”; not intuitive Dynamo (SOSP ‘07)
Partners Inria, Koç Üniversitesi, Universidade Nova de Lisboa, TU Kaiserslautern, Université catholique de Louvain • Industry Partners Basho Technologies, Trifork, Rovio Entertainment, Erlang Solutions
invariants? • Explicit Consistency (Balegas et al., EuroSys ’15) Application-specific invariants maintained through violation-avoidance or invariant-repair • RPB (Najafzadeh et al., DCC ’13) Extension to red/blue consistency for transactions that can be executed with “reservations”
that result in correct programs? • Lasp (Meiklejohn et al., PPDP ’15) Dataflow programming model that uses CRDTs as the primary data abstraction • C-CRDTs (Navalho et al., PaPoC ’15) Computational CRDTs that “compute” results as part of their merge functions
need to ship and perform metadata reduction? • PO-Log (Baquero et al., DAIS ’14) Partially ordered log of operations disseminated through tagged reliable broadcast • Delta-State CRDTs (Almeida et al., PaPEC ’14) State reduction techniques for using state-based CRDTs
CRDTs? • Specification of CRDTs (Zeller et al., IFIP ’14) Isabelle/HOL specification of CRDTs from the original Inria report • Specification of applications Specifications of industry use cases using TLA+
• Use case selection Identify industrial partners that can provide realistic use cases (virtual wallet, advertisement counter) • Evaluate at scale Using reproducible workloads, run experiments at scale with customers who have deployed Basho’s Riak
through Basho’s customer base using Riak • Goal of modularity Plug in different modules, share code between Riak and Antidote • In practice, this doesn’t work Riak is very complicated, with lots of performance optimizations
huge benefit to prototyping distributed applications • Hard to find experienced developers Difficult to find developers with either Erlang or FP experience • Difficulty with cross platform deployment Unable to repurpose code for testing in other settings
Erlang and cross platform deployment • Types and Typeclasses Implementation would be cleaner; lots of manual type checking by carrying around both type and value.