Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Elixir. There and Back Again
Search
Nikolay Sverchkov
March 06, 2018
Programming
900
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Elixir. There and Back Again
Nikolay Sverchkov
March 06, 2018
More Decks by Nikolay Sverchkov
See All by Nikolay Sverchkov
Authorization in the GraphQL era
ssnickolay
0
1.2k
Rails 6: ActiveRecord
ssnickolay
0
56
Serverless Is Ruby Future
ssnickolay
0
950
Anything new Rails 6?
ssnickolay
1
1.5k
Serverless for mere mortals
ssnickolay
1
1.1k
Evolution of Rails application architecture: 14 years in production
ssnickolay
3
1.5k
A Healthy Monolith
ssnickolay
0
1.7k
Other Decks in Programming
See All in Programming
FreeBSDでZabbixを動かす
kenkino
0
350
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
290
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
430
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.3k
SREの越境 / SRE Collaboration
y0hgi
2
290
すこし踏み込む CancellationToken
htkym
2
1.6k
Turning Architecture into Unit Tests in the AI Era (NSSpain XIV)
steliosf
PRO
1
120
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
8
5.4k
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
33
14k
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
170
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
4
410
Featured
See All Featured
How to make the Groovebox
asonas
2
2.5k
WENDY [Excerpt]
tessaabrams
14
40k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Designing Experiences People Love
moore
143
24k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
It's Worth the Effort
3n
188
29k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.9k
Side Projects
sachag
456
43k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
380
Utilizing Notion as your number one productivity tool
mfonobong
4
610
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
850
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
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/