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
330
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Você não está sozinho, vá pra produção com Elixir!
Igor Florian
September 23, 2016
More Decks by Igor Florian
See All by Igor Florian
Testando aplicação phoenix
igorffs
1
260
Conceitos que podem te ajudar a escrever testes melhores
igorffs
4
270
Other Decks in Technology
See All in Technology
もう一度考える SRE チームの作り方・育て方 / Rethinking SRE #1: Building and Growing SRE Teams
rrreeeyyy
6
1k
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
2
580
20260608_Codexの可能性_ノンプログラマー向け_大城追記
doradora09
PRO
0
780
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
53k
グローバル基準のSREは、運用現場でどう機能したか:成熟度アセスメントの実践 / SRE NEXT 2026
sorawatanabe
0
140
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
220
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
350
Service Connect 上のサービスに ECS Service の外側から到達できなかった話
ota1022
1
180
修正PRを食べてレビュースキルが賢くなる:Claude Codeによる自己改善サイクル
yuyaumetsu
6
1.4k
【CEDEC2026】次世代デジタルカードゲームのサーバー設計と運用 〜『Shadowverse: Worlds Beyond』の舞台裏~
cygames
PRO
1
980
Forza Horizon 6 のテレメトリ機能で 自動運転に使えそうな学習データを集める話
henjin0
0
150
Data Hubグループ 紹介資料
sansan33
PRO
0
3.1k
Featured
See All Featured
Designing Powerful Visuals for Engaging Learning
tmiket
1
480
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Technical Leadership for Architectural Decision Making
baasie
3
470
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
640
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
430
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
630
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Discover your Explorer Soul
emna__ayadi
2
1.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Faster Mobile Websites
deanohume
310
32k
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