Slide 1

Slide 1 text

2015/5/13 Dwango Internal Erlang/OTP study group, LT Kota UENISHI / @kuenishi JEPSEN “CALL ME MAYBE”

Slide 2

Slide 2 text

“Call Me Maybe” WHAT EVEN IS JEPSEN?

Slide 3

Slide 3 text

Who plays a song “Call Me Maybe” A NAME OF A SINGER

Slide 4

Slide 4 text

That can test many system with replication ALSO, A PARTITION TOLERANCE TEST TOOL

Slide 5

Slide 5 text

IT HAS TESTED … • PostgreSQL • Redis (Sentinel, redux) • MongoDB • Riak • ZooKeeper • NuoDB • Kafka • Cassandra • RabbitMQ • etcd and Consul • Elasticsearch • Aerospike (New!)

Slide 6

Slide 6 text

AND FOUND DATA LOSS ISSUE OF … • Redis (Sentinel, redux) • MongoDB • Kafka • Cassandra • RabbitMQ • etcd • Elasticsearch • Aerospike

Slide 7

Slide 7 text

BOXES AND LINES n1 jepsen n2 n3 n4 n5

Slide 8

Slide 8 text

is implemented in Clojure TECHNICALLY JEPSEN .. • Emulates network partition • By cutting network between virtual machines • While Jepsen concurrently continues writing data, • And finally verifies any writes are not lost

Slide 9

Slide 9 text

WHY PARTITION TOLERANCE IS IMPORTANT AND DIFFICULT?

Slide 10

Slide 10 text

• In the beginning was the failure and asynchrony • Replication and Consensus next • Failover and recovery / Membership Change mess things • Implementation and runtime is complexed

Slide 11

Slide 11 text

• for x=1….n • list = get(x) • write(x, [a, list]) • get(x) • => [1…n] ͱͳ͍ͬͯΕ͹ linearizable

Slide 12

Slide 12 text

REFERENCES • C.R.Jepsen “Call Me Maybe” • Jepsen blog post series • github.com/aphyr/jepsen • Kyle Kingsbury: @aphyr (sometimes NSFW) • “The Network Is Reliable” • https://queue.acm.org/detail.cfm?id=2655736