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
Elixir 101 - The Erlang VM
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Juanda Zapata
October 21, 2015
Programming
340
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Elixir 101 - The Erlang VM
A brief introduction of the BEAM (The Erlang VM), that paves the way to talk about Elixir.
Juanda Zapata
October 21, 2015
More Decks by Juanda Zapata
See All by Juanda Zapata
Principles of Visual Design
juanzuluaga
0
80
Adapter Pattern
juanzuluaga
0
180
Maintainable CSS
juanzuluaga
0
87
UI Fundamentals for Programmers
juanzuluaga
0
290
UI fundamentals for programmers
juanzuluaga
0
400
Programming in paradise
juanzuluaga
1
150
Intro to Ruby
juanzuluaga
1
700
Other Decks in Programming
See All in Programming
メールのエイリアス機能を履き違えない
isshinfunada
0
190
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
17k
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
130
コーディングルールの鮮度を保ちたい for SRE NEXT 2026 / keep-fresh-go-internal-conventions-sre-next-2026
handlename
0
160
OpenSpecのproposalにbrainstormingを持たせてみた
tigertora7571
1
180
Built Our Own Background Agent at LayerX #aidevex_findy
layerx
PRO
9
4.3k
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
3.3k
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
180
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
720
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.4k
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
2
310
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
290
Featured
See All Featured
KATA
mclloyd
PRO
35
15k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
230
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
470
First, design no harm
axbom
PRO
2
1.2k
Raft: Consensus for Rubyists
vanstee
141
7.6k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
450
The Art of Programming - Codeland 2020
erikaheidi
57
14k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
280
Statistics for Hackers
jakevdp
799
230k
Product Roadmaps are Hard
iamctodd
55
12k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Transcript
elixir 101 part 1/2
@juanzuluaga
BEAM The Erlang VM
disclaimer
I'm just a curious noob
history
• created at Ericsson in 1986
• created at Ericsson in 1986 • open sourced in
1995
• created at Ericsson in 1986 • open sourced in
1995 • current version 18.1
created to solve telephony applications
the original Ericsson switches had ~5MB of memory
it powers ~40% of all the mobile traffic (LTE, SMS,
3G) across Europe
features
• high availability
the legendary nine nines
the legendary 99,9999999%
that's ~31ms/year
• high availability • fault tolerant (self healing)
supervised applications (modules)
• high availability • fault tolerant (self healing) • distributed
• high availability • fault tolerant (self healing) • distributed
• concurrent
solved the c10k problem
and the c100k problem
30 years ago!
• high availability • fault tolerant (self healing) • distributed
• concurrent • hot code loading (zero downtime deploys)
• high availability • fault tolerant (self healing) • distributed
• concurrent • hot code loading (zero downtime deploys) • great tooling (demo)
internals
processes
these are not OS processes
very lightweight abstraction running on the BEAM
None
• cheap to create and destroy
• cheap to create and destroy • completely isolated
• cheap to create and destroy • completely isolated •
memory is not shared
• cheap to create and destroy • completely isolated •
memory is not shared • communication over messages
• cheap to create and destroy • completely isolated •
memory is not shared • communication over messages • supervised (different strategies)
• cheap to create and destroy • completely isolated •
memory is not shared • communication over messages • supervised (different strategies) • distributed
sounds familiar?
sounds familiar? the actor model
garbage collector
• generational (old & new zones)
• generational (old & new zones) • collected per process
• generational (old & new zones) • collected per process
• no need if the process finished
• generational (old & new zones) • collected per process
• no need if the process finished • no global pauses
scheduler
• the BEAM creates 1 per core
• the BEAM creates 1 per core • memory is
not shared
• the BEAM creates 1 per core • memory is
not shared • perform load balancing
• the BEAM creates 1 per core • memory is
not shared • perform load balancing • guarantees that a process won't block others
BEAM
companies using the BEAM
• Whatsapp (2 million users/server)
• Whatsapp (2 million users/server) • Facebook
• Whatsapp (2 million users/server) • Facebook • Goldman Sachs
(High frequency trading)
• Whatsapp (2 million users/server) • Facebook • Goldman Sachs
(High frequency trading) • github (git proxy, gh-pages, gists)
• Whatsapp (2 million users/server) • Facebook • Goldman Sachs
(High frequency trading) • github (git proxy, gh-pages, gists) • heroku
• Amazon SimpleDB
• Amazon SimpleDB • RabbitMQ
• Amazon SimpleDB • RabbitMQ • CouchDB
• Amazon SimpleDB • RabbitMQ • CouchDB • Riak
really? using a 30 y/o tech?
it's under very active development
erlang 18 was released 30 days ago
why is the industry looking back?
telcos had tough constrains
we're experiencing problems that were solved 30 years ago
problems that were hidden by the Moore's Law
erlang in 1 minute
purely functional lang
data is immutable
powerful pattern matching
actor based concurrency
None
OTP Open Telecom Platform
huge repository of all kinds of libraries
• crypto
• crypto • http servers
• crypto • http servers • tcp servers
• crypto • http servers • tcp servers • realtime
distributed databases
• crypto • http servers • tcp servers • realtime
distributed databases • GUI and graphics
thanks!
questions?