Recommended
PPTX
PPTX
PPTX
running web app on elixir
KEY
PDF
iQONの開発手法 at iQONエンジニアセミナー
PPTX
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)
PDF
PDF
Behind-the-Scenes and Goals of LINE Summer Internship Program
PPTX
KEY
Scotty + Aeson + Persistentで作るJSON Web API
PDF
PDF
[jaws days 2014]ELB/AutoScaling
PDF
COOKPAD tab 勉強会 2014.04.24
PDF
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
PDF
iOSエンジニア in ハードウェア・プロジェクト
PDF
PDF
PDF
PDF
マルチデバイス時代だからこそ a-blog cms 2.0
PDF
PDF
PPTX
Elixir-Conf-Japan-2017-session-ohr486
PPTX
2023-10-10_ElixirConf US 2023に参加してきました(レポート)
PPTX
PPTX
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
PPTX
Elixir入門「第6回:Elixirはtry…catchを書かない~障害対応のパラダイムシフト~」
PDF
PPTX
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」
PDF
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
PPTX
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版あります
More Related Content
PPTX
PPTX
PPTX
running web app on elixir
KEY
PDF
iQONの開発手法 at iQONエンジニアセミナー
PPTX
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)
PDF
PDF
Behind-the-Scenes and Goals of LINE Summer Internship Program
What's hot
PPTX
KEY
Scotty + Aeson + Persistentで作るJSON Web API
PDF
PDF
[jaws days 2014]ELB/AutoScaling
PDF
COOKPAD tab 勉強会 2014.04.24
PDF
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
PDF
iOSエンジニア in ハードウェア・プロジェクト
PDF
PDF
PDF
PDF
マルチデバイス時代だからこそ a-blog cms 2.0
PDF
PDF
Similar to running-elixir-in-production
PPTX
Elixir-Conf-Japan-2017-session-ohr486
PPTX
2023-10-10_ElixirConf US 2023に参加してきました(レポート)
PPTX
PPTX
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
PPTX
Elixir入門「第6回:Elixirはtry…catchを書かない~障害対応のパラダイムシフト~」
PDF
PPTX
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」
PDF
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
PPTX
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版あります
PPTX
PPTX
Elixir入門「第2回:PC間で通信するアプリをサクっと書いてみる」
PDF
PPTX
PPTX
Elixir入門「第3回:Phoenix 1.3で高速webアプリ & REST APIアプリをサクッと書いてみる」
PDF
PPTX
ElixirをIoTボードで動かしてみた ~ラズパイ・big.LITTLE・Zynq編~
PPTX
PDF
PPTX
Rubyのenum系高階関数を elixirでも使いたい
PPTX
Elixir入門「第5回:Visualixirで見るマルチプロセス」
More from Tsunenori Oohara
PPTX
PPTX
PPTX
PDF
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
PDF
running-elixir-in-production 1. Running Elixir in Production
2016-09-03 RubySapporo.beam
おおはら つねの
Ooharabeamlang.tokyo
Elixi
r
Productio
n
使
う
正気
? 癖チョッ
ト
筋
良
い
通っ
た言語
いやい
や
2. 3. 4. 5. 自己紹介
• おーはら@ohrdev
• 札幌(学生,SIer:10年) => 東京(web系:5年)
• RubySapporoNightがきっかけでRubyに◯◯◯
– 大通り近くのAppleStoreで島田さんが定期開催
• ボブおじさん、パターン、etc の紹介LTに刺激
– SapporoRubyKaigiは皆勤(多分)
• 東京でElixir関係のmeetup・イベントを主催/運営
– ElixirMeetup,tokyo.ex,phoenixハンズオン,VR.tokyo
6. • Rubyの会社のサーバーサイドエンジニア
• 普段使っている技術
– Elixir/Erlang/Ruby/Lisp/AWS/etc
• Elixirの運用アプリ: 本番x2、開発・検証x1
– Elixirアプリ: 運用1年半, elixir1.0 -> elixir1.3.1
– Phoenixアプリ: 運用1年, phoenix0.14 -> phoenix1.2
7. 8. 9. 開発環境
• vim/atom (IDEを使ってるメンバーは居ない
– 特に理由はない、公式的にはemacs推奨(らしい)
– plugin: vim-elixir
• バージョン管理
– 開発: kerl + exenv
※elixirのバージョンはerlangのバージョンに依存
– 本番: ansible + AMI
• CI
– Jenkins + mix test
10. 11. 開発
• 単体テスト
– モックライブラリ
• meck : https://github.com/eproxus/meck
• mock : https://github.com/jjh42/mock
– モックライブラリに癖があるので、きちんとテスト
設計しないとメンテ不可能になる場合も・・・
• TDD
– Ruby + Guard + mix test
– phoenix_live_reload
12. 開発:tips
• mockライブラリ
– :meck (erlang)
• 癖がある
• Test毎に定義したモックをunloadする必要がある
– unloadしないとモック内容が別のtestでも有効になる
• 定義していないモックをunloadするとnot_mocked error
– 特定のTestでのみsetupでまとめてunloadできない
– Mock (elixir)
• meckの面倒な処理をまとめて行うマクロ
• 細かいところには手は届いていない
13. 14. 15. (負荷)テスト:tips
• empd: Erlang Port Mapper Daemon
– 分散Erlang環境におけるノードの名前解決を行う
– 使用ポートはデフォルトで4369
• ノード間の通信ポート
– inet_dist_listen_min, inet_dist_listen_max で指定
可能、VMのパラメータとして起動時に渡す
16. 17. (負荷)テスト:tips
Remote Server Local Server
epmd epmd
EralngVM
name:remote
EralngVM
name:monitor
sshdsshd
Port 4369Port 4369
Port 9001 Port 9001〜5
Port 22
ssh –N –L
9001:localhost:9001 –L
4369:localhost:4369
root@remotehost
erl -name monitor@127.0.0.1 -setcookie my-cookie -run observer
iex --name remote@127.0.0.1 --cookie my-cookie
--erl “-kernel inet_dist_listen_min 9001 inet_dist_listen_max 9001” –S mix
18. 運用初期〜
• リリース時:5000DAU -> 現在:60万DAU
• トラフィックが増えた時にトラブルは起こる
– DBのコネクション数増加
– ログのローテーション
– ログ出力に伴うI/O負荷
– (phoenixアプリの)データ転送量が増大
19. 運用初期:tips(redis)
• DBコネクションの増加
– Ecto : コネクション管理機能がバンドル
• https://github.com/devinus/poolboy
– Redis: コネクション管理機能を含まない場合あり
• https://github.com/artemeff/exredis
• 意識せずに書くと、1Req=1Process=1Connectionに
20. 運用初期:tips(redis)
Our App
front
P P
RedisP P
P P
P P
Request Handling process Redis Client
Handling process毎に
Redis Client(コネクショ
ン)を作ると・・・
リクエストの数だけ
Redisへのコネクション
ができてしまう
Timeoutで接続が切
れるまでコネクション
が残るので
too many connection error!
21. 22. 23. 24. 25. 26. 27. 運用中後期
• 日々のチェック
– エラー検知
• sentryでエラーを通知
• Clientはravenを使用
– https://hex.pm/packages/raven
– サーバーメトリクス
• AWS CloudWatch で取得
• NewRelic (erlangのライブラリ)
– https://github.com/wooga/newrelic-erlang
28. 29. 30. 31. 32.