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
730
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
910
Rails 6: ActiveRecord
ssnickolay
0
45
Serverless Is Ruby Future
ssnickolay
0
790
Anything new Rails 6?
ssnickolay
1
1.4k
Serverless for mere mortals
ssnickolay
1
910
Evolution of Rails application architecture: 14 years in production
ssnickolay
3
1.3k
A Healthy Monolith
ssnickolay
0
1.4k
Other Decks in Programming
See All in Programming
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
300
DSPy入門 Pythonで実現する自動プロンプト最適化 〜人手によるプロンプト調整からの卒業〜
seaturt1e
1
530
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
200
JPUG勉強会 OSSデータベースの内部構造を理解しよう
oga5
2
230
メタプログラミングで実現する「コードを仕様にする」仕組み/nikkei-tech-talk43
nikkei_engineer_recruiting
0
160
Unity6.3 AudioUpdate
cova8bitdots
0
110
maplibre-gl-layers - 地図に移動体たくさん表示したい
kekyo
PRO
0
180
TipKitTips
ktcryomm
0
150
Go Conference mini in Sendai 2026 : Goに新機能を提案し実装されるまでのフロー徹底解説
yamatoya
0
520
Ruby x Terminal
a_matsuda
7
580
Head of Engineeringが現場で回した生産性向上施策 2025→2026
gessy0129
0
210
Premier Disciplin for Micro Frontends Multi Version/ Framework Scenarios @OOP 2026, Munic
manfredsteyer
PRO
0
210
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
230
How to Talk to Developers About Accessibility
jct
2
140
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
Utilizing Notion as your number one productivity tool
mfonobong
4
240
Raft: Consensus for Rubyists
vanstee
141
7.3k
Documentation Writing (for coders)
carmenintech
77
5.3k
Scaling GitHub
holman
464
140k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Cult of Friendly URLs
andyhume
79
6.8k
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/