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