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. There and Back Again
Search
Nikolay Sverchkov
March 06, 2018
Programming
0
640
Elixir. There and Back Again
Nikolay Sverchkov
March 06, 2018
Tweet
Share
More Decks by Nikolay Sverchkov
See All by Nikolay Sverchkov
Authorization in the GraphQL era
ssnickolay
0
770
Rails 6: ActiveRecord
ssnickolay
0
39
Serverless Is Ruby Future
ssnickolay
0
700
Anything new Rails 6?
ssnickolay
1
1.2k
Serverless for mere mortals
ssnickolay
1
800
Evolution of Rails application architecture: 14 years in production
ssnickolay
3
1.2k
A Healthy Monolith
ssnickolay
0
1.2k
Other Decks in Programming
See All in Programming
フロントエンドのmonorepo化と責務分離のリアーキテクト
kajitack
2
160
レガシープロジェクトで最大限AIの恩恵を受けられるようClaude Codeを利用する
tk1351
4
1.6k
AIを活用し、今後に備えるための技術知識 / Basic Knowledge to Utilize AI
kishida
20
4.9k
JSONataを使ってみよう Step Functionsが楽しくなる実践テクニック #devio2025
dafujii
0
340
開発チーム・開発組織の設計改善スキルの向上
masuda220
PRO
18
9.8k
速いWebフレームワークを作る
yusukebe
5
1.7k
AWS発のAIエディタKiroを使ってみた
iriikeita
1
160
サーバーサイドのビルド時間87倍高速化
plaidtech
PRO
0
700
パッケージ設計の黒魔術/Kyoto.go#63
lufia
3
420
個人軟體時代
ethanhuang13
0
310
[FEConf 2025] 모노레포 절망편, 14개 레포로 부활하기까지 걸린 1년
mmmaxkim
0
1.4k
testingを眺める
matumoto
1
130
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Code Review Best Practice
trishagee
70
19k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
A designer walks into a library…
pauljervisheath
207
24k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
910
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
800
The Cost Of JavaScript in 2023
addyosmani
53
8.9k
Practical Orchestrator
shlominoach
190
11k
Git: the NoSQL Database
bkeepers
PRO
431
66k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
Transcript
None
None
EVIL MARTIANS
EVIL MARTIANS
Nikolay Sverchkov @ssnickolay
Battle of facts
Dependencies
??? “Welcome email” ???
Sidekiq (Redis) “Welcome email” ???
GenServer defmodule EmailSender do use GenServer def handle_cast({:send, email}, state)
do # send email {:noreply, state} end end # Start the server {:ok, pid} = GenServer.start_link(EmailSender, []) # This is the client GenServer.cast(pid, {:send, “
[email protected]
"}) #=> :ok
Sidekiq (Redis) “Welcome email” [OTP] GenServer
Sidekiq (Redis) ??? “We love cashcache” [OTP] GenServer ???
Sidekiq (Redis) Memcached “We love cashcache” [OTP] GenServer ???
Memcached vs ETS
Sidekiq (Redis) Memcached “We love cashcache” [OTP] GenServer [OTP] ETS
Sidekiq (Redis) Memcached ??? “Where is my long polling?” [OTP]
GenServer [OTP] ETS ???
Sidekiq (Redis) Memcached AnyCable “Where is my long polling?” [OTP]
GenServer [OTP] ETS ???
Sidekiq (Redis) Memcached AnyCable “Where is my long polling?” [OTP]
GenServer [OTP] ETS Phoenix Channels
Sidekiq (Redis) Memcached AnyCable ??? Message broker [OTP] GenServer [OTP]
ETS Phoenix Channels ???
Sidekiq (Redis) Memcached AnyCable RabbitMQ Message broker [OTP] GenServer [OTP]
ETS Phoenix Channels RabbitMQ
None
Wait, it's like…
None
Erlang -> Java BEAM -> JVM Elixir -> ???
None
Development
??? Speed ???
Spring + Bootsnap Speed By Design
Spring + Bootsnap ??? Architecture [DDD] By Design ???
Spring + Bootsnap Trailblazer\Dry(Hanami?) Architecture [DDD] By Design By Design
Spring + Bootsnap Trailblazer\Dry(Hanami?) ??? Umbrella By Design By Design
???
Spring + Bootsnap Trailblazer\Dry(Hanami?) Hanami? Umbrella By Design By Design
By Design
Flawless Victory?
I have to rewrite everything with Elixir
Spring + Bootsnap Trailblazer\Dry(Hanami?) Hanami? ??? Debugging By Design By
Design Umbrella ???
Spring + Bootsnap Trailblazer\Dry(Hanami?) Hanami? Pry Debugging By Design By
Design Umbrella IEx.pry
Spring + Bootsnap Trailblazer\Dry(Hanami?) Hanami? Pry ??? Deploy By Design
By Design Umbrella IEx.pry ???
Spring + Bootsnap Trailblazer\Dry(Hanami?) Hanami? Pry Docker\Capistrano Deploy By Design
By Design Umbrella IEx.pry Mix\Distillery
Spring + Bootsnap Trailblazer\Dry(Hanami?) Hanami? Pry Docker\Capistrano ??? Tests tooling
By Design By Design Umbrella IEx.pry Mix\Distillery ???
Spring + Bootsnap Trailblazer\Dry(Hanami?) Hanami? Pry Docker\Capistrano Rspec\Capybara Tests tooling
By Design By Design Umbrella IEx.pry Mix\Distillery Espec\Hound
Overtime
Spring + Bootsnap Trailblazer\Dry(Hanami?) Hanami? ActiveRecord (Rom?) Docker\Capistrano Rspec\Capybara Upload
Image By Design By Design Umbrella Ecto Mix\Distillery Espec\Hound
Spring + Bootsnap Trailblazer\Dry(Hanami?) Hanami? ActiveRecord (Rom?) Docker\Capistrano Rspec\Capybara Send
Email with attachment By Design By Design Umbrella Ecto Mix\Distillery Espec\Hound
Spring + Bootsnap Trailblazer\Dry(Hanami?) Hanami? ActiveRecord (Rom?) Docker\Capistrano Rspec\Capybara Authorization
By Design By Design Umbrella Ecto Mix\Distillery Espec\Hound
Spring + Bootsnap Trailblazer\Dry(Hanami?) Hanami? ActiveRecord (Rom?) Docker\Capistrano Rspec\Capybara Update
deps By Design By Design Umbrella Ecto Mix\Distillery Espec\Hound
Summary
Good for: Monolith Microservice Terrible for: Concurrency Key points Good
for: Microservice Concurrency Terrible for: CMS Admin panel
Why exactly Elixir?
Why exactly Elixir? • Fast learning • A lot of
job offers • http://erlangjobs.ru/ • High salary (Ruby < Elixir < Go) https://t.me/proelixir https://wunsh.ru/