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 - Exploring actor-based systems
Search
Michał Muskała
September 23, 2017
Programming
120
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Elixir - Exploring actor-based systems
Talk given at PartialConf 2017 in Sofia, Bulgaria
Michał Muskała
September 23, 2017
More Decks by Michał Muskała
See All by Michał Muskała
From Elixir to Erlang - Experience report
michalmuskala
0
87
What is the BEAM?
michalmuskala
0
120
Elixir & Ecosystem Update SF 2020
michalmuskala
0
53
Let there be light
michalmuskala
0
790
What actually is the BEAM?
michalmuskala
6
1.7k
Optimising for the BEAM
michalmuskala
2
770
Extending OTP with custom behaviours
michalmuskala
0
200
Abandoning models - embracing data
michalmuskala
0
290
Ecto - the past, the present, the future
michalmuskala
5
1.2k
Other Decks in Programming
See All in Programming
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
290
技術記事、 専門家としてのプログラマ、 言語化
mizchi
14
7.3k
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.8k
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
160
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
150
はてなアカウント基盤 State of the Union
cockscomb
1
1.3k
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
1.7k
AIエージェントで 変わるAndroid開発環境
takahirom
2
460
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
15
3k
コーディングルールの鮮度を保ちたい for SRE NEXT 2026 / keep-fresh-go-internal-conventions-sre-next-2026
handlename
0
120
symfony/aiとlaravel/boost
77web
0
120
Webフレームワークの ベンチマークについて
yusukebe
0
200
Featured
See All Featured
Design in an AI World
tapps
1
260
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
From π to Pie charts
rasagy
0
230
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
330
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
390
Ethics towards AI in product and experience design
skipperchong
2
320
Deep Space Network (abreviated)
tonyrice
0
220
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
550
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
220
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
670
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
GitHub's CSS Performance
jonrohan
1033
470k
Transcript
ELIXIR Exploring actor-based systems
ELIXIR Exploring actor-based systems The good parts
THE COMMUNITY
None
MICHAŁ MUSKAŁA http://michal.muskala.eu/ https://github.com/michalmuskala/ @michalmuskala
http://omt.tech/ Orther Mulelid-Tynes Technology, Inc.
THE MODERN COMPUTING
None
None
ACTOR MODEL
Actor Model Communicating Sequential Processes π-calculus Software Transactional Memory
None
FUNCTIONAL PROGRAMMING
• Explicit state • Transformation instead of mutation
– José Valim “Functional programming is associated with concurrency but
it was not by design. It just happens that, by making the complex parts of our system explicit, solving more complicated issues like concurrency becomes much simpler.”
None
None
Switch Switch
Server Server Browser Endpoints Mobile
None
2 MILLION CONNECTIONS on a single server https://blog.whatsapp.com/196/1-million- is-so-2011
None
None
http://www.phoenixframework.org/blog/the-road-to-2-million-websocket-connections
ELIXIR CONCURRENT FUNCTIONAL
Sequential code
Sequential code Functional code
None
x1 = async_func1() x2 = async_func2(x1) x3 = async_func3(x2) x4
= async_func4(x3) x5 = async_func5(x4) x6 = async_func6(x5)
async_func1() |> async_func2() |> async_func3() |> async_func4() |> async_func5() |>
async_func6()
None
None
OTP
DB Web Mailer Websockets
DB Web Mailer Websockets Supervisor
Application
None
None
app1@node1 app1@node2
– Joe Armstrong “We do not have ONE web-server handling
2 millions sessions. We have 2 million webservers handling one session each.”
GOALS OF ELIXIR
THE GOALS OF ELIXIR • COMPATIBILITY • EXTENSIBILITY • PRODUCTIVITY
None
THE GOALS OF ELIXIR • COMPATIBILITY • EXTENSIBILITY • PRODUCTIVITY
THE GOALS OF ELIXIR • COMPATIBILITY • EXTENSIBILITY • PRODUCTIVITY
• PRODUCTIVITY • MAINTAINABILITY • RELIABILITY
COMPATIBILITY
https://elixir-lang.org/crash-course.html
EXTENSIBILITY
defmodule Test do use ExUnit.Case, async: true test "math works"
do assert 1 + 2 == 2 end end
None
from w in Weather, where: w.prcp <= 0.0 or is_nil(w.prcp),
order_by: w.city, select: w
defmacro if(condition, clauses) do optimize_boolean(quote do case unquote(condition) do x
when x in [false, nil] -> unquote(else_clause) _ -> unquote(do_clause) end end) end
PRODUCTIVITY
None
None
None
None
HEXDOCS • https://hexdocs.pm/elixir/String.html • https://hexdocs.pm/elixir/1.5.0/String.html • https://hexdocs.pm/phoenix/Phoenix.Channel.html • https://hexdocs.pm/phoenix/1.2.0/Phoenix.Channel.html
None
None
None
None
None
DEMO
MAINTAINABILITY
RELIABILITY
HOW DO I START?
elixir-lang.org
None
None
• http://elixir-lang.org • http://www.erlang.org • http://nerves-project.com • http://www.phoenixframework.org/
ELIXIR Exploring actor-based systems
None