├── README.md └── credits.md /README.md: -------------------------------------------------------------------------------- 1 | # The Verification of a Distributed System 2 | Accompanying Repository for The Verification of a Distributed System Talk to be given at [GOTO Chicago 2016](http://gotocon.com/chicago-2016): [[Slides](https://speakerdeck.com/caitiem20/the-verification-of-a-distributed-system)][[Video](https://youtu.be/kDh5BrqiGhI?list=PLEx5khR4g7PIfvppVcaTPa5IKWTjoASRU)] & [Qcon New York 2016](https://qconnewyork.com/ny2016/presentation/verification-distributed-system) [[Slides](https://speakerdeck.com/caitiem20/qcon-newyork-2016-the-verification-of-a-distributed-system)][[Video](https://www.infoq.com/presentations/distributed-systems-verification)] 3 | 4 | ## Abstract 5 | Distributed Systems are difficult to build and test for two main reasons: partial failure & asynchrony. These two realities of distributed systems must be addressed to create a correct system, and often times the resulting systems have a high degree of complexity. Because of this complexity, testing and verifying these systems is critically important. In this talk we will discuss strategies for proving a system is correct, like formal methods, and less strenuous methods of testing which can help increase our confidence that our systems are doing the right thing. 6 | 7 | ## References 8 | * [The Verification of a Distributed System](http://queue.acm.org/detail.cfm?id=2889274) 9 | * Formal Specifications 10 | * [Specifying Systems](http://research.microsoft.com/en-us/um/people/lamport/tla/book-02-08-08.pdf) 11 | * [Use of Formal Methods at Amazon Web Services](http://research.microsoft.com/en-us/um/people/lamport/tla/formal-methods-amazon.pdf) 12 | * [The Coq Proof Assistant](https://coq.inria.fr/) 13 | * [Simple Testing Can Prevent Most Critical Failures](https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf) 14 | * Property Based Testing 15 | * [Haskell: Quick Check](https://hackage.haskell.org/package/QuickCheck) 16 | * [Erlang: Quick Check](http://www.quviq.com/products/erlang-quickcheck/) 17 | * [Other Quick Check Implementations](https://en.wikipedia.org/wiki/QuickCheck) 18 | * [ScalaCheck](https://www.scalacheck.org/) 19 | * [29 GIFs only ScalaCheck Witches will Understand](http://nerd.kelseyinnis.com/blog/2015/01/14/29-GIFs-only-scalacheck-witches-will-understand/) 20 | * [Quick Checking Riak](https://skillsmatter.com/skillscasts/4505-quickchecking-riak) 21 | * [Testing Eventual Consistency in Riak](https://www.youtube.com/watch?v=x9mW54GJpG0) 22 | * [Combining Model Checking and Testing](http://research.microsoft.com/pubs/200544/main.pdf) 23 | * [Testing AUTOSTAR Software with QuickCheck](http://ieeexplore.ieee.org/xpl/login.jsp?reload=true&tp=&arnumber=7107466&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7107466) 24 | * [Modeling Eventual Consistency Databases with QuickCheck](https://vimeo.com/23220830) 25 | * [The Mysteries of Dropbox](https://vimeo.com/158002499) 26 | * Fault Injection 27 | * [Jepsen](http://jepsen.io/) 28 | * [Netflix Simian Army](http://techblog.netflix.com/2011/07/netflix-simian-army.html) 29 | * Game Days 30 | * [Resilience Engineering: Learning to Embrace Failure](https://queue.acm.org/detail.cfm?id=2371297) 31 | * [Game Day Exercises at Stripe: Learning from `kill-9`](https://stripe.com/blog/game-day-exercises-at-stripe) 32 | * Areas of Research 33 | * [Cause I'm Strong Enough: Reasoning about Consistency Choices in Distributed Systems](https://pages.lip6.fr/Marc.Shapiro/papers/CISE-POPL-2016.pdf) 34 | * [The CISE Tool: Proving Weakly Consistent Applications Correct](https://hal.inria.fr/hal-01279495v1/document) 35 | * [CISE Tool Demo](https://www.youtube.com/watch?v=HJjWqNDh-GA) 36 | * [Github: Syncfree/CISE](https://github.com/SyncFree/CISE) 37 | * [Syncfree CISE website](https://syncfree.lip6.fr/index.php/2-uncategorised/51-cise) 38 | * [IronFleet: Proving Practical Distributed Systems Correct](http://research.microsoft.com/apps/pubs/default.aspx?id=255833) 39 | * [Dafny](http://research.microsoft.com/en-us/projects/dafny/) 40 | * Lineage-Driven Fault Injection aka Molly 41 | * [Lineage-Driven Fault Injection](http://people.ucsc.edu/~palvaro/molly.pdf) 42 | * [Sigmod 2015 Slides](http://www.slideshare.net/palvaro/lineagedriven-fault-injection-sigmod15) 43 | * [Automated Failure Testing at Netflix](http://techblog.netflix.com/2016/01/automated-failure-testing.html) 44 | * ["Monkeys in Lab Coats": Applied Failure Testing Research at Netflix](http://www.infoq.com/presentations/failure-test-research-netflix) 45 | * [Automating Failure Testing Research at Internet Scale](https://people.ucsc.edu/~palvaro/socc16.pdf) 46 | * [Orchestrated Chaos: Applying Failure Testing Research at Scale](https://www.youtube.com/watch?v=QOTNBKx9Irc) 47 | * [Towards Property Based Consistency Verification](http://www.eurecom.fr/fr/publication/4874/download/ds-publi-4874.pdf) 48 | * [Certified Causally Consistent Distributed Key Value Stores](http://people.csail.mit.edu/lesani/companion/popl16/POPL16.pdf) 49 | * [Planning for Change in a Formal Verification of the Raft Consensus Protocol](https://homes.cs.washington.edu/~mernst/pubs/raft-proof-cpp2016.pdf) 50 | 51 | 52 | ## Bio 53 | Caitie McCaffrey is a Backend Brat and Distributed Systems Diva at Twitter. Prior to that she spent the majority of her career building large scale services and systems that power the entertainment industry at 343 Industries, Microsoft Game Studios, and HBO. Caitie has a degree in Computer Science from Cornell University, and has worked on several video games including Gears of War 2, Gears of War 3, Halo 4, and Halo 5. She maintains a blog at [CaitieM.com](https://caitiem.com/) and frequently discusses technology on Twitter [@Caitie](https://twitter.com/caitie) 54 | -------------------------------------------------------------------------------- /credits.md: -------------------------------------------------------------------------------- 1 | # Image Credits 2 | * https://www.flickr.com/photos/allenthepostman/2701166533/ 3 | * https://www.flickr.com/photos/ehktang/6820136333/ 4 | * https://www.flickr.com/photos/craig21/16643183961/ 5 | * https://www.flickr.com/photos/pachytime/3056606057/ 6 | * https://www.flickr.com/photos/thomashawk/2727316420/in/photolist-5a1d9U-fkCzt8-forakw-fqXk3K-6GJsvL-3ewM6b-6ce9oL-d2pm5u-8Mc28D-3N8HVk-eayWoU-5EmFFT-6TWLkm-2GWc8n-4EcLbE-7FkuXb-6P9wA3-KDc9V-EYU7a-3BazNK-4TCRby-4kg9Vc-c19jP-6HDx7s-2TFPK-4HoTVj-aTcna2-b7zicc-6cFfeE-4EP5bm-5728Ar-5bT6kU-kMsUp-5FtsrE-c19jN-b4BqAt-9gb1q-55VTSc-5F9ZXB-pLN4Xm-4KXv84-2ESbDb-fERJqW-nWpqou-5X6fz7-fPsDJr-9zKXNy-nWpbLw-ftqE1w-gXdGn4/ 7 | * https://www.flickr.com/photos/rob1501/6115982967/ 8 | * https://www.flickr.com/photos/naathas/3319386898/ 9 | * https://www.flickr.com/photos/pmillera4/21466941223/ 10 | * https://www.flickr.com/photos/zionnps/6198493225/ 11 | * https://www.flickr.com/photos/leemt2/222443032/ 12 | * https://www.flickr.com/photos/joemar/1573687605/ 13 | * https://www.flickr.com/photos/leemt2/203359933/ 14 | * https://www.flickr.com/photos/doc44/8287100528/in/photolist-dCiygA-dBGHVZ-5AcVxm-dCpjhQ-dyv3Fn-ddyLx4-au6zsk-9E6zPz-dA6itL-dEen9D-dymHsJ-dSNAUn-dzc3VM-dyv39K-ddyMUL-q9jQcL-dyY7Gn-dANxgh-dBgxtL-dyPqxd-dB9VbR-dyuZZp-dzYv6R-6d9ozc-iDdQ2e-isNKTU-dyw2oF-dBb6Di-aufP4G-dyQwfu-duqS3h-dyv2ya-dwYEev-hQ8LQW-GwAi6Y-dHKhAx-7mYLLB-4BJZe5-eQVZVA-dfnVr2-dCiTd8-dxxsgY-6UX11V-dzhz9f-dziB5q-6RLFTu-dyBAg5-dyw5zB-dAGVvM-dAXoz2 15 | * https://www.flickr.com/photos/eepie/14433673/ 16 | * https://www.flickr.com/photos/kookr/7056077277/ 17 | * https://www.flickr.com/photos/omnia_mutantur/2468322428/in/photolist-4L7Ngf-bVWDFH-cSgeN1-asEyuf-axUKLP-brhFSE-cxTaWQ-aqBKGe-a9eJbP-kfksEJ-h5PkBA-asgFQ7-axjynd-FWnjB6-ddAV5G-ddASU4-9B2imo-5K73G-ddASVA-FU4Cb3-7Chmw3-Fwg8sd-FU69LQ-aym8cu-7ihaXW-F1VcMo-bVAFKn-cPz33A-FweM25-FU5YZq-FU4byb-FU4H4Q-FU4nh5-eJdVzG-apXPSV-e4jRMd-cxT8zu-5HzZ1c-ebfjTh-ddAT4q-ddATCJ-ddARUM-52fNs-hjCbb-dAz4Tu-6N8Zv-as3GF-6fnRjs-4u4QR1-ebfjYU 18 | * https://www.flickr.com/photos/44055945@N06/7224288232/ 19 | * https://www.flickr.com/photos/vickisnature/6465872605/ 20 | * https://www.flickr.com/photos/pinti1/15933819917/ 21 | * https://www.flickr.com/photos/yokohamayomama/5778717345/ 22 | * https://www.flickr.com/photos/dakiny/15079476520/ 23 | * https://www.flickr.com/photos/dakiny/15079685280/ 24 | * https://www.flickr.com/photos/vickisnature/4830596406/ 25 | * https://www.flickr.com/photos/leemt2/284068408/ 26 | --------------------------------------------------------------------------------