Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
300
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
今年のデータ・ML系アップデートと気になるアプデのご紹介
nayuts
1
250
Lambdaの常識はどう変わる?!re:Invent 2025 before after
iwatatomoya
1
440
AWS Bedrock AgentCoreで作る 1on1支援AIエージェント 〜Memory × Evaluationsによる実践開発〜
yusukeshimizu
6
380
形式手法特論:CEGAR を用いたモデル検査の状態空間削減 #kernelvm / Kernel VM Study Hokuriku Part 8
ytaka23
2
450
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
AWSを使う上で最低限知っておきたいセキュリティ研修を社内で実施した話 ~みんなでやるセキュリティ~
maimyyym
2
250
Debugging Edge AI on Zephyr and Lessons Learned
iotengineer22
0
160
Gemini でコードレビュー知見を見える化
zozotech
PRO
1
240
小さな判断で育つ、大きな意思決定力 / 20251204 Takahiro Kinjo
shift_evolve
PRO
1
600
Ruby で作る大規模イベントネットワーク構築・運用支援システム TTDB
taketo1113
1
240
Challenging Hardware Contests with Zephyr and Lessons Learned
iotengineer22
0
170
Playwrightのソースコードに見る、自動テストを自動で書く技術
yusukeiwaki
13
5.2k
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
135
9.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
Into the Great Unknown - MozCon
thekraken
40
2.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Building Adaptive Systems
keathley
44
2.9k
Making Projects Easy
brettharned
120
6.5k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
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