Jepsen Introduction LT

Jepsen Introduction LT

Jepsenの紹介LT

E1923013dacab39eb231a2fffbf7b33c?s=128

UENISHI Kota

May 13, 2015
Tweet

Transcript

  1. 2015/5/13 Dwango Internal Erlang/OTP study group, LT Kota UENISHI /

    @kuenishi JEPSEN “CALL ME MAYBE”
  2. “Call Me Maybe” WHAT EVEN IS JEPSEN?

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

    A SINGER
  4. That can test many system with replication ALSO, A PARTITION

    TOLERANCE TEST TOOL
  5. IT HAS TESTED … • PostgreSQL • Redis (Sentinel, redux)

    • MongoDB • Riak • ZooKeeper • NuoDB • Kafka • Cassandra • RabbitMQ • etcd and Consul • Elasticsearch • Aerospike (New!)
  6. AND FOUND DATA LOSS ISSUE OF … • Redis (Sentinel,

    redux) • MongoDB • Kafka • Cassandra • RabbitMQ • etcd • Elasticsearch • Aerospike
  7. BOXES AND LINES n1 jepsen n2 n3 n4 n5

  8. 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
  9. WHY PARTITION TOLERANCE IS IMPORTANT AND DIFFICULT?

  10. • In the beginning was the failure and asynchrony •

    Replication and Consensus next • Failover and recovery / Membership Change mess things • Implementation and runtime is complexed
  11. • for x=1….n • list = get(x) • write(x, [a,

    list]) • get(x) • => [1…n] ͱͳ͍ͬͯΕ͹ linearizable
  12. 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