Subscribe to our Erlang Factory newsletter to receive the latest updates and news

Andrew Stone
Distributed Systems Developer at Basho
Basho Technologies

Andrew is a distributed systems developer who's extremely interested in functional languages. He has been using Erlang professionally since 2008 and it has been his favourite language since then. He has been developing networked software for over 10 years in a variety of languages and as of late has become extremely interested in consensus protocols. After reading many papers about Paxos and ZAB, and flirting with implementation attempts in Node.js and Clojure respectively, Andrew was immediately drawn to the elegance and understandability of Raft when he learned of it in April 2013. Since then he has been working on an Erlang implementation that he hopes to have production ready this year. He would love to share his work with the audience.

Besides distributed systems, he enjoys weightlifting, basketball, skiing, audio books, comedy and political philosophy. He lives in Somerville, MA USA and is married with 2 cats. He would like to think he is enjoyable bar company as well.

Github:  andrewjstone

Andrew Stone is Giving the Following Talks
Implementation and Verification of a Consensus Protocol in Erlang

Read-your-writes consistency is difficult to achieve in distributed systems in the presence of crashing nodes and network partitions. Consensus algorithms are a way to establish linearizability of operations and allow safe access to your replicated data. This talk will briefly introduce the consistency problems that arise in systems that rely on asynchronous replication and compare a few different solutions to this problem. Of particular note will be availability and operational concerns. 

After the brief introduction to the subject, the Raft consensus algorithm will be discussed enough to understand the rest of the presentation and the Erlang implementation. Once Raft is explained, the approach taken to implement the protocol in Erlang will be described with a focus on the consensus fsm itself and the tradeoffs involved in this implementation. The remainder of the talk will be discussion about verification using the Erlang Quick-Check eqc_statem behaviour.

Talk objectives: By the end of the talk the listeners should understand why consistency is a non-trivial problem in distributed systems and the basics of the raft consensus algorithm. They should also have gotten an introduction to building and testing stateful distributed systems with Erlang Quick Check. The listeners should come away knowing what types of problems property based testing can find, and what it actually did find in rafter. They should also have a grasp of the the strengths and limitations of this method of verification.

Target audience: Distributed Systems Developers and Erlang Developers