Magic Clusters and Where to Find Them - Eugene Pirogov
-
Upload
elixir-meetup -
Category
Software
-
view
68 -
download
2
Transcript of Magic Clusters and Where to Find Them - Eugene Pirogov
![Page 1: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/1.jpg)
![Page 2: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/2.jpg)
Clustersand where to find
them
![Page 3: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/3.jpg)
Eugene Pirogovgmile
![Page 4: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/4.jpg)
Nebo15Were hiring!
![Page 5: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/5.jpg)
DatabasesTools
Theory
Takeaways
![Page 6: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/6.jpg)
DatabasesTools
Theory
Takeaways
![Page 7: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/7.jpg)
What isa cluster?
![Page 8: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/8.jpg)
set of loosely or tightly connected computers that work
together so that, in many respects, they can be viewed as
a single system
![Page 9: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/9.jpg)
![Page 10: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/10.jpg)
![Page 11: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/11.jpg)
![Page 12: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/12.jpg)
![Page 13: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/13.jpg)
When to usea cluster?
![Page 14: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/14.jpg)
1. Fail-overclusters
![Page 15: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/15.jpg)
2. Load balancingclusters
![Page 16: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/16.jpg)
What typicalErlang clusteris built with?
![Page 17: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/17.jpg)
1. A node
![Page 18: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/18.jpg)
node()
![Page 19: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/19.jpg)
2. An RPC call
![Page 20: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/20.jpg)
:rpc.call(:nodex, M, :f, [“a”])
![Page 21: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/21.jpg)
3. send call
![Page 22: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/22.jpg)
send({MyProcess, :mynode}, :msg)
![Page 23: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/23.jpg)
Example 1:Starting a node
![Page 24: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/24.jpg)
iex
![Page 25: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/25.jpg)
~> iexErlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help)iex(1)> node():nonode@nohostiex(2)>
![Page 26: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/26.jpg)
iex --name eugene
![Page 27: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/27.jpg)
~> iex --name eugeneErlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help)iex([email protected])1>
![Page 28: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/28.jpg)
iex --sname eugene
![Page 29: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/29.jpg)
~> iex --sname eugeneErlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help)iex(eugene@Eugenes-MacBook-Pro-2)1>
![Page 30: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/30.jpg)
iex --name eugene@host
![Page 31: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/31.jpg)
~> iex --name eugene@hostErlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help)iex(eugene@host)1>
![Page 32: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/32.jpg)
Example 2:starting two nodes
![Page 33: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/33.jpg)
iex --name [email protected] --name [email protected]
![Page 34: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/34.jpg)
~> iex --name [email protected]([email protected])1>
~> iex --name [email protected]([email protected])1>
# On node1iex(1)> :net_adm.ping(:’[email protected]’):pong
![Page 35: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/35.jpg)
Example 3:sending a message
![Page 36: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/36.jpg)
iex --name node1iex --name node2
![Page 37: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/37.jpg)
# On node2iex(1)> Process.register(Terminal, self())
# On node1iex(1)> send({Terminal, :’[email protected]’}, “Hello!”)
# On node2iex(2)> flush()“Hello!”
![Page 38: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/38.jpg)
Example 4:calling remotely
![Page 39: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/39.jpg)
# On node1iex([email protected])1> :rpc.call(:'[email protected]', Enum, :reverse, [100..1])[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, …]iex([email protected])2>
![Page 40: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/40.jpg)
REST/JSON/XMLBinary protocol
![Page 41: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/41.jpg)
REST/JSON/XMLBinary protocol
![Page 42: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/42.jpg)
REST/JSON/XMLBinary protocol
![Page 43: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/43.jpg)
Bonus track:Magic cookie!
![Page 44: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/44.jpg)
cat ~/.erlang.cookie
![Page 45: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/45.jpg)
iex --name node1 --cookie abciex --name node2 --cookie xyz
![Page 46: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/46.jpg)
# On node1iex(1)> :erlang.get_cookie():abc
# On node2iex(1)> :erlang.get_cookie():xyz
# On node1iex(2)> :net_kernel.connect(:'[email protected]')false
# On node1iex(3)> :erlang.set_cookie(:’[email protected]’, :xyz)true
# On node1iex(4)> :net_kernel.connect(:'[email protected]')true
![Page 47: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/47.jpg)
DatabasesTools
Theory
Takeaways
![Page 48: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/48.jpg)
epmd
![Page 49: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/49.jpg)
Erlang PortMapper Daemon
![Page 50: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/50.jpg)
runs on system startup
![Page 51: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/51.jpg)
~> ps ax | grep epmd25502 ?? S 0:11.53 /usr/local/Cellar/erlang/19.1/lib/erlang/erts-8.1/bin/epmd -daemon
![Page 52: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/52.jpg)
maps portsto node names
![Page 53: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/53.jpg)
net_kernel
![Page 54: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/54.jpg)
![Page 55: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/55.jpg)
Example 5:starting a
distributed node
![Page 56: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/56.jpg)
iex
![Page 57: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/57.jpg)
~> iexErlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help)iex(1)>
![Page 58: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/58.jpg)
~> iexErlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help)iex(1)> node():nonode@nohostiex(2)>
![Page 59: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/59.jpg)
~> iexErlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help)iex(1)> node():nonode@nohostiex(2)> Process.registered() |> Enum.find(&(&1 == :net_kernel))nil
![Page 60: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/60.jpg)
~> iexErlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help)iex(1)> node():nonode@nohostiex(2)> Process.registered() |> Enum.find(&(&1 == :net_kernel))niliex(3)> :net_kernel.start([:’[email protected]’]){:ok, #PID<0.84.0>}iex([email protected])4>
![Page 61: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/61.jpg)
~> iexErlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help)iex(1)> node():nonode@nohostiex(2)> Process.registered() |> Enum.find(&(&1 == :net_kernel))niliex(3)> :net_kernel.start([:’[email protected]’]){:ok, #PID<0.84.0>}iex([email protected])4> Process.registered() |> Enum.find(&(&1 == :net_kernel)):net_kernel
![Page 62: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/62.jpg)
Example 6:monitoring a
node
![Page 63: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/63.jpg)
iex --name [email protected] --name [email protected]
![Page 64: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/64.jpg)
iex([email protected])1>
![Page 66: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/66.jpg)
iex([email protected])1>
iex([email protected])2> :net_kernel.monitor_nodes(true):ok
iex([email protected])3> :net_kernel.connect(:'[email protected]')true
![Page 67: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/67.jpg)
iex([email protected])1>
iex([email protected])2> :net_kernel.monitor_nodes(true):ok
iex([email protected])3> :net_kernel.connect(:'[email protected]')true
iex([email protected])4> flush(){:nodeup, :"[email protected]"}:ok
![Page 68: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/68.jpg)
iex([email protected])1>
iex([email protected])2> :net_kernel.monitor_nodes(true):ok
iex([email protected])3> :net_kernel.connect(:'[email protected]')true
iex([email protected])4> flush(){:nodeup, :"[email protected]"}:ok
# Ctrl+C on node2
![Page 69: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/69.jpg)
iex([email protected])1>
iex([email protected])2> :net_kernel.monitor_nodes(true):ok
iex([email protected])3> :net_kernel.connect(:'[email protected]')true
iex([email protected])4> flush(){:nodeup, :"[email protected]"}:ok
# Ctrl+C on node2
iex([email protected])5> flush(){:nodedown, :"[email protected]"}:ok
iex([email protected])5>
![Page 70: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/70.jpg)
net_adm
![Page 71: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/71.jpg)
![Page 72: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/72.jpg)
Example 7:ping
![Page 73: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/73.jpg)
iex --name [email protected] --name [email protected]
![Page 74: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/74.jpg)
iex([email protected])1>
![Page 76: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/76.jpg)
iex([email protected])1>
iex([email protected])2> :net_adm.ping(:'[email protected]')pang
iex([email protected])2> :net_adm.ping(:'[email protected]')pong
![Page 77: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/77.jpg)
Example 8:names
![Page 78: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/78.jpg)
iex --name [email protected] --name [email protected]
![Page 79: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/79.jpg)
iex([email protected])1>
![Page 80: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/80.jpg)
iex([email protected])1>
iex([email protected])2> :net_adm.names(){:ok, [{'rabbit', 25672}, {'node1', 51813}, {'node2', 51815}]}
iex([email protected])3>
![Page 81: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/81.jpg)
iex([email protected])1>
iex([email protected])2> :net_adm.names(){:ok, [{'rabbit', 25672}, {'node1', 51813}, {'node2', 51815}]}
iex([email protected])3> Node.list()[]
iex([email protected])4>
![Page 82: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/82.jpg)
Example 9:world
![Page 83: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/83.jpg)
# /etc/hosts127.0.0.1 host1.com127.0.0.1 host2.com127.0.0.1 host3.com
![Page 84: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/84.jpg)
# /Users/gmile/.hosts.erlanghost1.com.host2.com.host3.com.
![Page 85: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/85.jpg)
iex --name [email protected] --name [email protected] --name [email protected] --name [email protected] --name [email protected] --name [email protected]
![Page 86: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/86.jpg)
iex([email protected])1>
![Page 87: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/87.jpg)
iex([email protected])1>
iex([email protected])1> :net_adm.world()[:"[email protected]", :"[email protected]", :"[email protected]", :”[email protected]", :"[email protected]", :"[email protected]"]
iex([email protected])2>
![Page 88: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/88.jpg)
Bonus track:Connecting
to a node running in production
![Page 89: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/89.jpg)
iex --name [email protected] --cookie abc
![Page 90: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/90.jpg)
$ iex --remsh [email protected] --cookie abc --name bar@localhostErlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help)iex([email protected])1>
![Page 91: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/91.jpg)
slave
![Page 92: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/92.jpg)
![Page 93: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/93.jpg)
![Page 94: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/94.jpg)
![Page 95: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/95.jpg)
3. Transfer configurationto slave nodes
2. Add code path to slave nodes
4. Ensure appsare started on slave
1. Start slave
![Page 96: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/96.jpg)
What else?
![Page 97: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/97.jpg)
![Page 98: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/98.jpg)
![Page 99: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/99.jpg)
![Page 100: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/100.jpg)
![Page 101: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/101.jpg)
Node
![Page 102: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/102.jpg)
![Page 103: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/103.jpg)
![Page 104: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/104.jpg)
phoenixframework/firenest
![Page 105: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/105.jpg)
![Page 106: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/106.jpg)
![Page 107: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/107.jpg)
![Page 108: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/108.jpg)
bitwalker/swarm
![Page 109: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/109.jpg)
Easy clustering, registration, and distribution of worker processes for
Erlang/Elixir
![Page 110: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/110.jpg)
![Page 111: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/111.jpg)
![Page 112: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/112.jpg)
…a simple case where workers are dynamically created in response to some events under a supervisor, and
we want them to be distributed across the cluster and be discoverable by name from anywhere in the cluster
![Page 113: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/113.jpg)
bitwalker/libcluster
![Page 114: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/114.jpg)
![Page 115: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/115.jpg)
What next?
![Page 116: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/116.jpg)
![Page 117: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/117.jpg)
…I didn’t want to resort to something like Docker,
because I wanted to see how far I could push Elixir and its
tooling.
![Page 118: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/118.jpg)
DatabasesTools
Theory
Takeaways
![Page 119: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/119.jpg)
mnesia
![Page 120: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/120.jpg)
Example 10:initialize mnesia
![Page 121: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/121.jpg)
iex --name [email protected] --name [email protected] --name [email protected]
![Page 122: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/122.jpg)
iex([email protected])1> :mnesia.create_schema([:'[email protected]']):ok
![Page 123: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/123.jpg)
iex([email protected])1> :mnesia.create_schema([:'[email protected]']):okiex([email protected])2> :mnesia.start():ok
![Page 124: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/124.jpg)
iex([email protected])1> :mnesia.create_schema([:'[email protected]']):okiex([email protected])2> :mnesia.start():okiex([email protected])3> :mnesia.info()---> Processes holding locks <------> Processes waiting for locks <------> Participant transactions <------> Coordinator transactions <------> Uncertain transactions <------> Active tables <---schema : with 1 records occupying 413 words of mem===> System info in version "4.14.1", debug level = none <===opt_disc. Directory "/Users/gmile/[email protected]" is used.use fallback at restart = falserunning db nodes = ['[email protected]']stopped db nodes = []master node tables = []remote = []ram_copies = []disc_copies = [schema]disc_only_copies = [][{'[email protected]',disc_copies}] = [schema]2 transactions committed, 0 aborted, 0 restarted, 0 logged to disc0 held locks, 0 in queue; 0 local transactions, 0 remote0 transactions waits for other nodes: []:okiex([email protected])4>
![Page 125: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/125.jpg)
iex([email protected])1> :mnesia.create_schema([:'[email protected]']):okiex([email protected])2> :mnesia.start():okiex([email protected])3> :mnesia.info()---> Processes holding locks <------> Processes waiting for locks <------> Participant transactions <------> Coordinator transactions <------> Uncertain transactions <------> Active tables <---schema : with 1 records occupying 413 words of mem===> System info in version "4.14.1", debug level = none <===opt_disc. Directory "/Users/gmile/[email protected]" is used.use fallback at restart = falserunning db nodes = ['[email protected]']stopped db nodes = []master node tables = []remote = []ram_copies = []disc_copies = [schema]disc_only_copies = [][{'[email protected]',disc_copies}] = [schema]2 transactions committed, 0 aborted, 0 restarted, 0 logged to disc0 held locks, 0 in queue; 0 local transactions, 0 remote0 transactions waits for other nodes: []:okiex([email protected])4>
“schema” table existsas a disk_copy (RAM + disk)
![Page 126: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/126.jpg)
iex([email protected])2> :mnesia.start():ok
![Page 128: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/128.jpg)
iex([email protected])2> :mnesia.start():ok
iex([email protected])2> :mnesia.start():ok
iex([email protected])2> :mnesia.change_config(:extra_db_nodes, [:’[email protected]’]){:ok, [:"[email protected]"]}
![Page 129: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/129.jpg)
iex([email protected])2> :mnesia.start():ok
iex([email protected])2> :mnesia.start():ok
iex([email protected])2> :mnesia.change_config(:extra_db_nodes, [:’[email protected]’]){:ok, [:"[email protected]"]}
iex([email protected])3> :mnesia.change_config(:extra_db_nodes, [:’[email protected]’]){:ok, [:"[email protected]"]}
![Page 130: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/130.jpg)
iex([email protected])2> :mnesia.start():ok
iex([email protected])2> :mnesia.start():ok
iex([email protected])2> :mnesia.change_config(:extra_db_nodes, [:’[email protected]’]){:ok, [:"[email protected]"]}
iex([email protected])3> :mnesia.change_config(:extra_db_nodes, [:’[email protected]’]){:ok, [:"[email protected]"]}
iex([email protected])1> :mnesia.create_table(:books, [disc_copies: [:'[email protected]'], attributes: [:id, :title, :year]]):ok
![Page 131: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/131.jpg)
iex([email protected])2> :mnesia.start():ok
iex([email protected])2> :mnesia.start():ok
iex([email protected])2> :mnesia.change_config(:extra_db_nodes, [:’[email protected]’]){:ok, [:"[email protected]"]}
iex([email protected])3> :mnesia.change_config(:extra_db_nodes, [:’[email protected]’]){:ok, [:"[email protected]"]}
iex([email protected])1> :mnesia.create_table(:books, [disc_copies: [:'[email protected]'], attributes: [:id, :title, :year]]):ok
iex([email protected])4> :mnesia.add_table_copy(:books, :'[email protected]', :ram_copies):ok
![Page 132: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/132.jpg)
iex([email protected])2> :mnesia.start():ok
iex([email protected])2> :mnesia.start():ok
iex([email protected])2> :mnesia.change_config(:extra_db_nodes, [:’[email protected]’]){:ok, [:"[email protected]"]}
iex([email protected])3> :mnesia.change_config(:extra_db_nodes, [:’[email protected]’]){:ok, [:"[email protected]"]}
iex([email protected])1> :mnesia.create_table(:books, [disc_copies: [:'[email protected]'], attributes: [:id, :title, :year]]):ok
iex([email protected])4> :mnesia.add_table_copy(:books, :'[email protected]', :ram_copies):ok
iex([email protected])5> :mnesia.add_table_copy(:books, :'[email protected]', :ram_copies):ok
![Page 133: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/133.jpg)
iex([email protected])6> :mnesia.info()---> Processes holding locks <------> Processes waiting for locks <------> Participant transactions <------> Coordinator transactions <------> Uncertain transactions <------> Active tables <---books : with 0 records occupying 304 words of memschema : with 2 records occupying 566 words of mem===> System info in version "4.14.1", debug level = none <===opt_disc. Directory "/Users/gmile/[email protected]" is used.use fallback at restart = falserunning db nodes = ['[email protected]','[email protected]','[email protected]']stopped db nodes = []master node tables = []remote = []ram_copies = []disc_copies = [books,schema]disc_only_copies = [][{'[email protected]',disc_copies}, {'[email protected]',ram_copies}, {'[email protected]',ram_copies}] = [schema,books]12 transactions committed, 0 aborted, 0 restarted, 10 logged to disc0 held locks, 0 in queue; 0 local transactions, 0 remote0 transactions waits for other nodes: []:ok
iex([email protected])32>
![Page 134: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/134.jpg)
iex([email protected])6> :mnesia.info()---> Processes holding locks <------> Processes waiting for locks <------> Participant transactions <------> Coordinator transactions <------> Uncertain transactions <------> Active tables <---books : with 0 records occupying 304 words of memschema : with 2 records occupying 566 words of mem===> System info in version "4.14.1", debug level = none <===opt_disc. Directory "/Users/gmile/[email protected]" is used.use fallback at restart = falserunning db nodes = ['[email protected]','[email protected]','[email protected]']stopped db nodes = []master node tables = []remote = []ram_copies = []disc_copies = [books,schema]disc_only_copies = [][{'[email protected]',disc_copies}, {'[email protected]',ram_copies}, {'[email protected]',ram_copies}] = [schema,books]12 transactions committed, 0 aborted, 0 restarted, 10 logged to disc0 held locks, 0 in queue; 0 local transactions, 0 remote0 transactions waits for other nodes: []:ok
iex([email protected])32>
“schema” + “books” tables existon 3 different nodes
3 nodes are running
current node (node1)keeps 2 tables as RAM + disk
![Page 135: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/135.jpg)
Before we proceed…
![Page 136: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/136.jpg)
CAP theorem!
![Page 137: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/137.jpg)
![Page 138: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/138.jpg)
@b0rk
![Page 139: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/139.jpg)
![Page 140: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/140.jpg)
Consistency
Every read receives the most recent write or an error
![Page 141: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/141.jpg)
Availability
Every request receives a response, without guarantee that
it contains the most recent version of the information
![Page 142: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/142.jpg)
Partition tolerance
The system continues to operate despite an arbitrary number of messages being dropped by the network between nodes
![Page 143: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/143.jpg)
Pick two!AP or AC or CP
![Page 144: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/144.jpg)
ACis kind ofpointless
![Page 145: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/145.jpg)
Mnesia chooses…
![Page 146: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/146.jpg)
AC!
![Page 147: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/147.jpg)
If in your cluster the network connection between two nodes
goes bad, then each one will think that the other node is down,
and continue to write data.
Recovery from this is complicated.
![Page 148: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/148.jpg)
![Page 149: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/149.jpg)
![Page 150: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/150.jpg)
![Page 151: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/151.jpg)
AXD 301switch
![Page 152: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/152.jpg)
“…measures are taken such that network reliability is very high”
![Page 153: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/153.jpg)
“…In such a highly specialized environment, the reliability of the control backplane essentially removes some of
the worries which the CAP theorem introduces.”
![Page 154: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/154.jpg)
![Page 155: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/155.jpg)
DatabasesTools
Theory
Takeaways
![Page 156: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/156.jpg)
1. Elixir doesn’t bring anything new
to the table…
![Page 157: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/157.jpg)
…apart from productivity!
![Page 158: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/158.jpg)
It’s allabout Erlang
![Page 159: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/159.jpg)
2. “Hello world” for clusters is simple
![Page 160: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/160.jpg)
3. Deciding what matters is hard
![Page 161: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/161.jpg)
![Page 162: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/162.jpg)
Understahd your values when
building a cluster!
![Page 163: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/163.jpg)
4. Releasing & deploying stuff is
tricky
![Page 164: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/164.jpg)
5. An Erlang app can be your little
universe
![Page 165: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/165.jpg)
![Page 166: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/166.jpg)
![Page 167: Magic Clusters and Where to Find Them - Eugene Pirogov](https://reader031.fdocuments.in/reader031/viewer/2022022413/58e49d911a28aba3458b560d/html5/thumbnails/167.jpg)