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
Saša Jurić
April 23, 2015
Programming
5
480
High Availability
ElixirConf Europe
Saša Jurić
April 23, 2015
Tweet
Share
More Decks by Saša Jurić
See All by Saša Jurić
Such Great Heights, Code BEAM Lite, Amsterdam 2018
sasajuric
0
190
Simplifying systems with Elixir - Belgrade
sasajuric
3
480
Simplifying systems with Elixir
sasajuric
2
590
Metagrokking Elixir
sasajuric
4
300
Solid Ground
sasajuric
15
1.3k
Solid Ground
sasajuric
3
900
Elixir - valentine edition
sasajuric
0
140
What's the fuss about Phoenix?
sasajuric
2
1.1k
Phoenix
sasajuric
1
240
Other Decks in Programming
See All in Programming
2025年の活動の振り返り
hideg
0
110
atmaCup #23でAIコーディングを活用した話
ml_bear
3
600
2026年 エンジニアリング自己学習法
yumechi
0
150
Gemini for developers
meteatamel
0
120
Go1.26 go fixをプロダクトに適用して困ったこと
kurakura0916
0
180
CSC307 Lecture 08
javiergs
PRO
0
680
Package Management Learnings from Homebrew
mikemcquaid
0
260
組織で育むオブザーバビリティ
ryota_hnk
0
190
Head of Engineeringが現場で回した生産性向上施策 2025→2026
gessy0129
PRO
0
180
「ブロックテーマでは再現できない」は本当か?
inc2734
0
1.1k
AWS re:Invent 2025参加 直前 Seattle-Tacoma Airport(SEA)におけるハードウェア紛失インシデントLT
tetutetu214
2
120
生成AIを活用したソフトウェア開発ライフサイクル変革の現在値
hiroyukimori
PRO
0
130
Featured
See All Featured
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
210
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
450
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
460
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
130
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Everyday Curiosity
cassininazir
0
140
Ethics towards AI in product and experience design
skipperchong
2
210
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
370
YesSQL, Process and Tooling at Scale
rocio
174
15k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
60
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
57
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.4k
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