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
Juanda Zapata
October 21, 2015
Programming
5
330
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
Tweet
Share
More Decks by Juanda Zapata
See All by Juanda Zapata
Principles of Visual Design
juanzuluaga
0
72
Adapter Pattern
juanzuluaga
0
170
Maintainable CSS
juanzuluaga
0
83
UI Fundamentals for Programmers
juanzuluaga
0
240
UI fundamentals for programmers
juanzuluaga
0
390
Programming in paradise
juanzuluaga
1
140
Intro to Ruby
juanzuluaga
1
700
Other Decks in Programming
See All in Programming
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
250
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
170
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
150
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
210
2年のAppleウォレットパス開発の振り返り
muno92
PRO
0
180
余白を設計しフロントエンド開発を 加速させる
tsukuha
6
1.8k
Basic Architectures
denyspoltorak
0
440
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
0
850
CSC307 Lecture 01
javiergs
PRO
0
670
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
330
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
220
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
940
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
72
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
Deep Space Network (abreviated)
tonyrice
0
35
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
190
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.8k
ラッコキーワード サービス紹介資料
rakko
1
2.1M
Scaling GitHub
holman
464
140k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Building Applications with DynamoDB
mza
96
6.9k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.1k
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?