Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
High Availability
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Saša Jurić
April 23, 2015
Programming
510
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
High Availability
ElixirConf Europe
Saša Jurić
April 23, 2015
More Decks by Saša Jurić
See All by Saša Jurić
Such Great Heights, Code BEAM Lite, Amsterdam 2018
sasajuric
0
210
Simplifying systems with Elixir - Belgrade
sasajuric
3
490
Simplifying systems with Elixir
sasajuric
2
620
Metagrokking Elixir
sasajuric
4
330
Solid Ground
sasajuric
15
1.3k
Solid Ground
sasajuric
3
940
Elixir - valentine edition
sasajuric
0
160
What's the fuss about Phoenix?
sasajuric
2
1.2k
Phoenix
sasajuric
1
270
Other Decks in Programming
See All in Programming
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
160
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
130
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
210
プロポーザルを書いてもらう
pvcresin
0
580
How I Won Prize Money at a Hackathon Using Codex and Symphony Alpha
yasei_no_otoko
0
120
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
120
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.2k
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
1.2k
承認済みなのに差戻しできてしまうバグ、型で潰せます
shinchit
0
110
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
150
初めての模倣学習とVLA
natsutan
0
250
源内ハンズオン概要編
hideg
0
210
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Bash Introduction
62gerente
615
220k
Abbi's Birthday
coloredviolet
3
9.5k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
430
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
Done Done
chrislema
186
16k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
210
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Chasing Engaging Ingredients in Design
codingconduct
0
280
The SEO identity crisis: Don't let AI make you average
varn
0
540
Transcript
iex(1)> high_availability @sasajuric aircloak.com
Erlang (the language) Elixir LFE Erlang VM (BEAM)
highly_available ≈ works_almost_always
optional?(highly_available) # false
easy?(highly_available) # false
None
highly_available do # the code here magically works end #doesntworklikethat
fault-tolerance scalability + responsiveness = high availability
A B D E F C
send(pid, message) A B message = receive ...
def loop(state) do receive do message -> new_state = handle(state,
message) loop(new_state) end end
bank account balance {:deposit, amount} {:withdraw, amount} :balance amount
OS process or thread Erlang process
db connection background job request handler state request handler request
handler request handler request handler request handler state state state background job background job background job db connection db connection db connection
A B C D E F
A exit message B C D E F
supervisor worker worker
S S S W W S W W W S
W W
scheduler scheduler scheduler scheduler CPU CPU CPU CPU VM
VM VM VM VM VM
VM send(pid, message) VM 1 send(pid, message) VM 2
shared-nothing concurrency process crash propagation + some VM magic =
fault tolerance scalability responsiveness
None
3rd party data source transform data push server browsers bets
validation
Data transformation 1.Receive TCP stream" 2.Assemble XML messages" 3.Update the
model" 4.Store to database" 5.Serialize the model" 6.Dispatch
receive stream assemble messages update model store to database serialize
data dispatch
receive stream assemble messages update model store to database serialize
data dispatch message 6 message 5 message 4 message 3 message 2 message 1
receive stream assemble messages update model store to database serialize
data dispatch
storing to database queuing bet odds storing bet odds
match 1 match 3 match 2
update model serialize data dispatch match 1 match 3 match
2
None
None
None
None
None