Create a gist now

Instantly share code, notes, and snippets.

Speaker Notes for my presentation at Atlanta Riak meetup: Slides -

Disclaimers and Disclosures

  • Basho fanboy
  • Basho customer
  • enStratius product uses Riak
  • thus all customers run Riak as part of install
  • I am far from a subject matter expert

What this is not about

  • Running Riak in production
  • Riak itself
  • Riak administration or tuning

What even is a "distributed system"?

Fallacies of Distributed Computing

  • The network is reliable. (partition tolerance)
  • Latency is zero. (eventual consistency)
  • Bandwidth is infinite. (max node count)
  • The network is secure. (riak provides SSL)
  • Topology doesn't change.
  • There is one administrator.
  • Transport cost is zero.
  • The network is homogeneous


  • quick note about the logo
  • cribbed from Justin Sheehey's Velocity talk
  • Each dot contains the same diagram
  • a distributed system within your distributed system

Riak is honest about its limitations

  • and embraces them
  • read the mailing list
  • read basho blog posts

Riak forces you to think about your data model

  • Do you really need a relational model? 5th normal form? Really?
  • What is your native format anyway?
  • Can you loosen your consistency requirements?

Riak is about tradeoffs

  • Querying is a pain in the ass (Riak+Redis)
  • Read any Boundary blog post
  • Read any mailing list post
  • Riak let's you choose (tunable CAP, multiple backends)
  • Riak doesn't try to be something it isn't

Riak is in Erlang (wat)

  • Erlang isn't perfect. There are shitty Erlang apps.
  • Alan Kay/Smalltalk/Message Passing
  • Actor Pattern
  • Let It Crash
  • Basho contributes back to the Erlang ecosystem to make it more approachable (rebar, lager, webmachine)

What can we learn?

  • Revisit the fallacies
  • Revisit CAP
  • Embrace failure
  • Fault Tolerance vs. Fault Prevention
  • Your entire stack doesn't have the same requirements (strict consistency vs. weak consistency)
  • Easy to reason about. (which is easier - let it crash or some complicated recovery scenario?)
  • Network partitions happen.
  • Be careful with clever
  • Each additional component risks unnecessary additional complexity and reduces reasonability
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment