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
Você não está sozinho, vá pra produção com Elixir!
Search
Igor Florian
September 23, 2016
Technology
3
290
Você não está sozinho, vá pra produção com Elixir!
Igor Florian
September 23, 2016
Tweet
Share
More Decks by Igor Florian
See All by Igor Florian
Testando aplicação phoenix
igorffs
1
230
Conceitos que podem te ajudar a escrever testes melhores
igorffs
4
250
Other Decks in Technology
See All in Technology
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
980
Four Keysから始める信頼性の改善 - SRE NEXT 2025
ozakikota
0
130
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
54
22k
VGGT: Visual Geometry Grounded Transformer
peisuke
1
550
大量配信システムにおけるSLOの実践:「見えない」信頼性をSLOで可視化
plaidtech
PRO
0
260
CDK Toolkit Libraryにおけるテストの考え方
smt7174
1
360
20250707-AI活用の個人差を埋めるチームづくり
shnjtk
6
4.1k
QuickSight SPICE の効果的な運用戦略~S3 + Athena 構成での実践ノウハウ~/quicksight-spice-s3-athena-best-practices
emiki
0
240
事例で学ぶ!B2B SaaSにおけるSREの実践例/SRE for B2B SaaS: A Real-World Case Study
bitkey
1
270
オーティファイ会社紹介資料 / Autify Company Deck
autifyhq
10
130k
Rethinking Incident Response: Context-Aware AI in Practice
rrreeeyyy
1
230
United Airlines Customer Service– Call 1-833-341-3142 Now!
airhelp
0
170
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.7k
How to Think Like a Performance Engineer
csswizardry
25
1.7k
Navigating Team Friction
lara
187
15k
YesSQL, Process and Tooling at Scale
rocio
173
14k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
980
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Transcript
Você não está sozinho, vá pra produção com Elixir!
@igorffs @igorflorianfs
None
Deploy
• Ferramentas • Dificuldades • Hot code swap
None
FERRAMENTAS
None
http://www.phoenixframework.org/docs/heroku
♥
Guia estruturado
buildpacks consolidados
https://github.com/HashNuke/heroku-buildpack-elixir
https://github.com/gjaldon/heroku-buildpack-phoenix-static
A opção ➕ rápida ⚡ ➕prática
➖Hot code swap
E se eu quiser ter minha própria infra?
Como o pessoal de Erlang faz deploy?
Existe um Elixir way?
Exrm (Elixir Release Manager)
http://www.phoenixframework.org/docs/advanced-deployment
Wrapper de ferramentas do Erlang
https://github.com/erlang/rebar3
https://github.com/erlware/relx
http://learnyousomeerlang.com/release-is-the-word
Release ==
None
None
é composto por
None
None
Elixir e Erlang estão inclusos!
pode ser independente
Ou não! Você escolhe.
None
Tá, mas por que isso?
Facilidade de distribuição
Sem nos preocupar com a versão instalada
None
Então posso distribuir minha release pra qualquer lugar?
Posso compilar no meu Windows e executar no meu servidor
Linux!!
Obrigado Elixir! ♥
Né?!
Maaaais ou menos… (segura essa emoção )
Cross-compiling
Releases estão presas à arquitetura e S.O
NIFs (Native Implemented Functions)
(snif)
Comofas?
None
None
None
A release contém executáveis
• start • stop • ping • console • remote_console
• upgrade • downgrade
Não existem Mix tasks
Porque não existe um Mix file
Mesmo com Ecto, não poderá executar migrations
http://blog.plataformatec.com.br/2016/04/running-migration-in-an-exrm-release/
Configurações ⚙ com variáveis de ambiente
None
Todo código é compilado durante o build da release
Nos arquivos de configuração, funções são executadas
Todas configurações são compiladas e adicionadas em sys.conf
None
None
Pouco flexível e não é seguro
https://12factor.net/config
E agora José?!
@renanranelli
RELX on the rescue!
None
None
RELX_REPLACE_OS_VARS=true
As tags serão substituídas pelos valores das variáveis de ambiente
na máquina que a release será executada
None
http://blog.plataformatec.com.br/2016/05/how-to-config-environment-variables-with-elixir-and-exrm/
( Distillery ⚗…
https://github.com/bitwalker/distillery
Substituindo Exrm
http://bitwalker.org/posts/2016-07-21-distillery-vs-exrm-vs-relx/
…)
Isso tá parecendo manual
Prefiro Capistrano!
None
https://github.com/boldpoker/edeliver
Gerencia e automatiza o processo de deploy
bash scripts orquestram os builds e RPCs aos servidores
Exrm por baixo dos panos
ou mix + relx
ou rebar (erlang only)
ou Distillery
Quanta coisa, né?
Não se preocupe, edeliver abstrai as ferramentas utilizadas
Deploy em ambientes de staging e production
Você escolhe onde fazer o build da release
Resolve problema de Cross-compiling
Local Build Staging Production
None
None
None
None
None
None
None
http://blog.plataformatec.com.br/2016/06/deploying-elixir-applications-with-edeliver/
Afinal, o que eu uso em produção?
edeliver !
Mas não deixe de conhecer as ferramentas que está usando
Ht code l♥ving
ZERO DOWNTIME
Não é a única forma
Show me the code!!
GenServer
None
None
None
v0.1.0
None
v0.2.0
None
None
None
None
None
O que tá acontecendo?
Code server
Mantém 2 versões do código
Código antigo é executado por processos antigos <
Código novo é executado por processos novos =
http://learnyousomeerlang.com/designing-a-concurrent-application#hot-code-loving
http://erlang.org/doc/man/code.html
Isso parece ser bem simples!
None
Mudança de estado
None
None
None
None
None
None
O código precisa saber como reagir
None
None
Feels like migration
Appups
None
http://learnyousomeerlang.com/relups
É dificil!
Quando usar?
Stateful apps, que não podem parar
Trade-offs @
Comunidade❤
Obrigado! B