An adventure in distributed programming
summary
A seamless chat service called Planga runs on Elixir and starts on one node using Mnesia but faces scaling limits; the team moves to multiple application nodes and a separate Riak cluster to get eventual consistency with Riak with CRDTs, builds an Ecto adapter for Riak, and uses Elixir/OTP primitives plus Phoenix Channels and Phoenix Presence for ephemeral state. Production runs single-node today; multi-node app cluster plus dedicated DB nodes roll out soon. Lesson: separate app and data clusters, pick AP tradeoffs, handle conflict reconciliation.
AI-written summary · about
chapters (28)
- 0:00Intro
- 0:15About me
- 1:15Project overview
- 2:32Elixir
- 5:42Agenda
- 6:24What is distributed programming
- 7:07fallacies of distributed programming
- 7:46free lunch
- 8:13two generals
- 8:47three ways
- 9:12risk uncoordinated attack
- 9:30cap theorem
- 10:10consistency availability
- 12:36consistency systems
- 13:20data types
- 14:03last wins
- 14:56Scaling
- 15:36Tools
- 18:33Lessons
- 20:12Database Types
- 22:11Cassandra
- 23:10CouchDB
- 24:49React
- 26:41Elixir Adapter
- 27:30Snowflakes
- 28:54Planning application
- 29:24Future plans
- 32:48Questions
related talks
33mDiscovering distributed systems in Elixir
53mIdioms for Building Distributed Fault-tolerant Applications with Elixir
36mKnee Deep Into P2P
41mIdioms for building fault-tolerant applications with Elixir
30mHow to build distributed applications with Erlang
23mCracking the PubSub Code. Elixir's Key to Scalable Real-Time Systems
32mGetting distributed with Firenest
57mReliability Nirvana
