Submit Search
Upload
running-elixir-in-production
•
Download as PPTX, PDF
•
5 likes
•
2,325 views
Tsunenori Oohara
Follow
rubysapporo.beam
Read less
Read more
Technology
Report
Share
Report
Share
1 of 32
Download now
Recommended
hello waf, hello phoenix
hello waf, hello phoenix
Tsunenori Oohara
Tokyoex6 EEx
Tokyoex6 EEx
Tsunenori Oohara
running web app on elixir
running web app on elixir
Tsunenori Oohara
PlayFramework1.x基礎編
PlayFramework1.x基礎編
Asami Abe
すこやかRails
すこやかRails
Takafumi ONAKA
Application Bootstrap
Application Bootstrap
Takafumi ONAKA
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)
LIFULL Co., Ltd.
Recommended
hello waf, hello phoenix
hello waf, hello phoenix
Tsunenori Oohara
Tokyoex6 EEx
Tokyoex6 EEx
Tsunenori Oohara
running web app on elixir
running web app on elixir
Tsunenori Oohara
PlayFramework1.x基礎編
PlayFramework1.x基礎編
Asami Abe
すこやかRails
すこやかRails
Takafumi ONAKA
Application Bootstrap
Application Bootstrap
Takafumi ONAKA
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)
LIFULL Co., Ltd.
Redmineでいこう
Redmineでいこう
Manabu Shinsaka
Behind-the-Scenes and Goals of LINE Summer Internship Program
Behind-the-Scenes and Goals of LINE Summer Internship Program
LINE Corporation
Jsugプレゼン資料new
Jsugプレゼン資料new
Wataru Kakizoe
Scotty + Aeson + Persistentで作るJSON Web API
Scotty + Aeson + Persistentで作るJSON Web API
Daisuke Fujimura
iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側
Takehiro Shiozaki
[jaws days 2014]ELB/AutoScaling
[jaws days 2014]ELB/AutoScaling
Tomohiro Motoki
COOKPAD tab 勉強会 2014.04.24
COOKPAD tab 勉強会 2014.04.24
akahira
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
Kosuke Ogawa
iOSエンジニア in ハードウェア・プロジェクト
iOSエンジニア in ハードウェア・プロジェクト
Shuichi Tsutsumi
iOSエンジニアの最近 株式会社マネーフォワード
iOSエンジニアの最近 株式会社マネーフォワード
Yuki Asai
iOSアプリエンジニアの最近
iOSアプリエンジニアの最近
Kengo Suzuki
WatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったこと
Shuichi Tsutsumi
マルチデバイス時代だからこそ a-blog cms 2.0
マルチデバイス時代だからこそ a-blog cms 2.0
Kazumich YAMAMOTO
Cowboyとelixir
Cowboyとelixir
hayabusa333
パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"
Keisuke Takahashi
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key
泰 増田
minneで学ぶクラウド脳
minneで学ぶクラウド脳
Uchio Kondo
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
Hideki Takase
RubyのDir、File、IO について
RubyのDir、File、IO について
Tomoya Kawanishi
テスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめ
kinunori
SORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップ
SORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップ
SORACOM,INC
More Related Content
What's hot
Redmineでいこう
Redmineでいこう
Manabu Shinsaka
Behind-the-Scenes and Goals of LINE Summer Internship Program
Behind-the-Scenes and Goals of LINE Summer Internship Program
LINE Corporation
Jsugプレゼン資料new
Jsugプレゼン資料new
Wataru Kakizoe
Scotty + Aeson + Persistentで作るJSON Web API
Scotty + Aeson + Persistentで作るJSON Web API
Daisuke Fujimura
iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側
Takehiro Shiozaki
[jaws days 2014]ELB/AutoScaling
[jaws days 2014]ELB/AutoScaling
Tomohiro Motoki
COOKPAD tab 勉強会 2014.04.24
COOKPAD tab 勉強会 2014.04.24
akahira
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
Kosuke Ogawa
iOSエンジニア in ハードウェア・プロジェクト
iOSエンジニア in ハードウェア・プロジェクト
Shuichi Tsutsumi
iOSエンジニアの最近 株式会社マネーフォワード
iOSエンジニアの最近 株式会社マネーフォワード
Yuki Asai
iOSアプリエンジニアの最近
iOSアプリエンジニアの最近
Kengo Suzuki
WatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったこと
Shuichi Tsutsumi
マルチデバイス時代だからこそ a-blog cms 2.0
マルチデバイス時代だからこそ a-blog cms 2.0
Kazumich YAMAMOTO
Cowboyとelixir
Cowboyとelixir
hayabusa333
パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"
Keisuke Takahashi
What's hot
(15)
Redmineでいこう
Redmineでいこう
Behind-the-Scenes and Goals of LINE Summer Internship Program
Behind-the-Scenes and Goals of LINE Summer Internship Program
Jsugプレゼン資料new
Jsugプレゼン資料new
Scotty + Aeson + Persistentで作るJSON Web API
Scotty + Aeson + Persistentで作るJSON Web API
iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側
[jaws days 2014]ELB/AutoScaling
[jaws days 2014]ELB/AutoScaling
COOKPAD tab 勉強会 2014.04.24
COOKPAD tab 勉強会 2014.04.24
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
iOSエンジニア in ハードウェア・プロジェクト
iOSエンジニア in ハードウェア・プロジェクト
iOSエンジニアの最近 株式会社マネーフォワード
iOSエンジニアの最近 株式会社マネーフォワード
iOSアプリエンジニアの最近
iOSアプリエンジニアの最近
WatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったこと
マルチデバイス時代だからこそ a-blog cms 2.0
マルチデバイス時代だからこそ a-blog cms 2.0
Cowboyとelixir
Cowboyとelixir
パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"
Similar to running-elixir-in-production
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key
泰 増田
minneで学ぶクラウド脳
minneで学ぶクラウド脳
Uchio Kondo
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
Hideki Takase
RubyのDir、File、IO について
RubyのDir、File、IO について
Tomoya Kawanishi
テスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめ
kinunori
SORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップ
SORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップ
SORACOM,INC
Deep learning reading club @ nimiri for SWEST
Deep learning reading club @ nimiri for SWEST
Kiyoshi Ogawa
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Deploy with EB CLI編~
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Deploy with EB CLI編~
Amazon Web Services Japan
Openshift 20191121
Openshift 20191121
Yasushi Osonoi
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
uchan_nos
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Ryo Nakamaru
ElixirをIoTボードで動かしてみた ~ラズパイ・big.LITTLE・Zynq編~
ElixirをIoTボードで動かしてみた ~ラズパイ・big.LITTLE・Zynq編~
Hideki Takase
GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介
Dai Utsui
SocketStream入門
SocketStream入門
Kohei Kadowaki
Play jjug2012spring
Play jjug2012spring
Takafumi Ikeda
Weeklycms20120218
Weeklycms20120218
Yoshi Sakai
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
Hideki Takase
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Masahiro Nagano
Osaka Venture Meetup #3
Osaka Venture Meetup #3
Kiyotaka Oku
Similar to running-elixir-in-production
(20)
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key
minneで学ぶクラウド脳
minneで学ぶクラウド脳
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
RubyのDir、File、IO について
RubyのDir、File、IO について
テスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめ
SORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップ
SORACOM Conference Discovery 2017 ナイトイベント | Discovery ラップアップ
Deep learning reading club @ nimiri for SWEST
Deep learning reading club @ nimiri for SWEST
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Deploy with EB CLI編~
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Deploy with EB CLI編~
Openshift 20191121
Openshift 20191121
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
ElixirをIoTボードで動かしてみた ~ラズパイ・big.LITTLE・Zynq編~
ElixirをIoTボードで動かしてみた ~ラズパイ・big.LITTLE・Zynq編~
GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介
SocketStream入門
SocketStream入門
Play jjug2012spring
Play jjug2012spring
Weeklycms20120218
Weeklycms20120218
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Osaka Venture Meetup #3
Osaka Venture Meetup #3
More from Tsunenori Oohara
Elixirハンズオン2
Elixirハンズオン2
Tsunenori Oohara
meguro.rb LT
meguro.rb LT
Tsunenori Oohara
Elixir解答
Elixir解答
Tsunenori Oohara
Elixir言語紹介
Elixir言語紹介
Tsunenori Oohara
パンチラに関する考察
パンチラに関する考察
Tsunenori Oohara
how-to-learn-elixir
how-to-learn-elixir
Tsunenori Oohara
Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486
Tsunenori Oohara
Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11
Tsunenori Oohara
Re:デブ デブナイト vol.2 LT
Re:デブ デブナイト vol.2 LT
Tsunenori Oohara
失敗という概念が存在しない退屈なweb開発
失敗という概念が存在しない退屈なweb開発
Tsunenori Oohara
tokyo.ex3 LT
tokyo.ex3 LT
Tsunenori Oohara
Elixir lang bootstrap
Elixir lang bootstrap
Tsunenori Oohara
Elixirと他言語の比較的紹介ver.2
Elixirと他言語の比較的紹介ver.2
Tsunenori Oohara
Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄
Tsunenori Oohara
elixir in production
elixir in production
Tsunenori Oohara
地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)
Tsunenori Oohara
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Tsunenori Oohara
地獄Spec
地獄Spec
Tsunenori Oohara
More from Tsunenori Oohara
(18)
Elixirハンズオン2
Elixirハンズオン2
meguro.rb LT
meguro.rb LT
Elixir解答
Elixir解答
Elixir言語紹介
Elixir言語紹介
パンチラに関する考察
パンチラに関する考察
how-to-learn-elixir
how-to-learn-elixir
Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486
Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11
Re:デブ デブナイト vol.2 LT
Re:デブ デブナイト vol.2 LT
失敗という概念が存在しない退屈なweb開発
失敗という概念が存在しない退屈なweb開発
tokyo.ex3 LT
tokyo.ex3 LT
Elixir lang bootstrap
Elixir lang bootstrap
Elixirと他言語の比較的紹介ver.2
Elixirと他言語の比較的紹介ver.2
Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄
elixir in production
elixir in production
地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
地獄Spec
地獄Spec
Recently uploaded
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Recently uploaded
(9)
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
running-elixir-in-production
1.
Running Elixir in
Production 2016-09-03 RubySapporo.beam おおはら つねの Ooharabeamlang.tokyo Elixi r Productio n 使 う 正気 ? 癖チョッ ト 筋 良 い 通っ た言語 いやい や
2.
子曰、学而時習之、不亦説乎、 有朋自遠方来、不亦楽、 人不知而不慍、不亦君子乎。 『論語』
3.
提供 株式会社えにしテック http://www.enishi-tech.com/ 株式会社ファームノート http://farmnote.jp/ From Sapporo, with
Love for Ruby & Beam. RubySapporo.beam From Tokyo, with Love for Elixir. beamlang.tokyo tokyo.ex
4.
Agenda 自己紹介 |> 趣旨 |> 開発環境 |>
開発 |> (負荷)テスト |> 運用初期〜 |> 運用中後期 |> コミュニティ |> まとめ
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.
趣旨 • 今日のゴール – Elixirのプロダクション運用/開発事例を紹介 –
(私が)運用/開発フェーズで踏んだ地雷と地雷処 理内容を紹介 – 導入にあたって気をつけると捗るポイントを知る • 目論見 – Elixirの導入の一助に – コミュニティの活性化の一助に
9.
開発環境 • vim/atom (IDEを使ってるメンバーは居ない –
特に理由はない、公式的にはemacs推奨(らしい) – plugin: vim-elixir • バージョン管理 – 開発: kerl + exenv ※elixirのバージョンはerlangのバージョンに依存 – 本番: ansible + AMI • CI – Jenkins + mix test
10.
開発環境 • バージョンアップ、deployment周りについては – http://www.slideshare.net/ohr486/running-web- app-on-elixir
をご参照ください • 基本的な考え方はRailsとあまり変わらない – 強いて言うなら、Elixirだけでなく、Erlangのバー ジョンも一緒に上げていく所 • ElixirのバージョンはErlangのバージョンに依存する為
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.
(負荷)テスト • observerがとても手軽&便利 – observer監視をネットワーク越しにやると捗る –
アイデア • ローカルのErlangノードと、サーバー上のErlangノード に名前をつけて、cookie(セキュリティ用のキー)を設定 • ローカルのErlangノードと、サーバー上のErlangノード を通信可能にする(sshでトンネルを掘る) • ガリガリやるなら専用のベンチツールを
14.
(負荷)テスト:tips • observer – GUIサーバーモニタリングツール –
利用するにはErlangのコンパイル時に、 ws(wxWidgetsのErlangバインディング)を有効にし ないと利用できない – iex(1)> :bserver.start – erl –run observer
15.
(負荷)テスト:tips • empd: Erlang
Port Mapper Daemon – 分散Erlang環境におけるノードの名前解決を行う – 使用ポートはデフォルトで4369 • ノード間の通信ポート – inet_dist_listen_min, inet_dist_listen_max で指定 可能、VMのパラメータとして起動時に渡す
16.
(負荷)テスト:tips • 分散Erlangのノード間の通信ポート – inet_dist_listen_min、inet_dist_listen_maxで使用 するポートの範囲を指定可能 –
VMの起動オプションとして引き渡す
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.
運用初期:tips(redis) Our App front P P RedisP
P P P P Request Handling process Redis Client worker pool pool boy 予めClient(worker)を プーリングしておく プールの中のworkerを使い回す
22.
運用初期:tips(log1) • ログのローテーション – (exrmでreleaseした場合、デフォルトだと)ログファ イルは、erlang.log.1,erlang.log.2,…
と吐かれる – デフォルトの設定だと • 100キロバイト毎に新しいファイルに • 世代数は5、それ以上はローテ(古いのが消える)する – 高トラフィック(ログが大量に吐かれる)と古いログ が消えてしまう
23.
運用初期:tips(log1) • ログのローテーションの設定 – 環境変数で変更可能 •
http://www.erlang.org/doc/man/run_erl.html – RUN_ERL_LOG_MAXSIZE • ログローテーションが走るサイズ – RUN_ERL_LOG_GENERATIONS • 世代管理数 – 上の2つの設定値を調整してログが消えないよう にする
24.
運用初期:tips(log2) • ログ出力に伴うI/O負荷 – ElixirのLoggerはバックエンドを指定できる •
現状、backendはconsoleのみ(fileはない) • デフォルトのままログを出力すると、consoleモードでロ グが出力される • consoleモードだと、ログを同期書き込み(o_sync)を行う (ので負荷が高い) – logger_file_backend を使おう • https://github.com/onkel-dirtus/logger_file_backend
25.
運用初期:tips(画像) • 前提: AWSのEC2上のphoenixアプリ •
Phoenixアプリの画像の実態は、 – APP_ROOT/priv/images 以下のファイル AWS Private Network EC2 instance ROOT/priv/imag es/xxxxx G W Image files データ転送量、すご く・・・お高いです・・・
26.
運用初期:tips(画像) • priv以下のアセットファイルをCDNに転送 • phoenixのstatic_pathの参照先をCDNに –
https://github.com/ohr486/asset_sync AWS Private Network EC2 instance ROOT/priv/imag es/xxxxx G W AWS CloudFront priv/images/x xxxx asset_sync
27.
運用中後期 • 日々のチェック – エラー検知 •
sentryでエラーを通知 • Clientはravenを使用 – https://hex.pm/packages/raven – サーバーメトリクス • AWS CloudWatch で取得 • NewRelic (erlangのライブラリ) – https://github.com/wooga/newrelic-erlang
28.
運用中後期:tips(sentry) • Setnryへの通知 – スタックトレースは、erlangのget_stacktrace/0で取得 –
http://erlang.org/doc/man/erlang.html#get_stacktra ce-0 – 最後に起こった例外を取得できる
29.
運用中後期:tips(sentry)
30.
運用中後期:tips(newrelic) • NewRelicのクライアント – https://github.com/wooga/newrelic-erlang –
Newrelicのメトリクスendpointをhttpで叩いてるけ ど、正式なものではないので使わない方が無難 • https://discuss.newrelic.com/t/erlang-interaction-with- collector-newrelic-com/4900/2 • CのAgentSDKがあるのでそちらを使ってくれとのこと – https://docs.newrelic.com/docs/agents/agent-sdk/getting- started/new-relic-agent-sdk – (datadogで良いのでは・・・)
31.
コミュニティ • 少ない – 知見共有の場や、どうしても困ったときの駆け込み寺 になるので多い方が良い(よね?) –
ruby: コンサルいっぱい、xxx.rbで相談 – Erlang: 時雨堂、コンサル数人 – Elixir: コンサル数人 • Elixir – 徐々に増えつつある • Erlang – 定期開催はsapporo.beamくらい? – (計画中(tokyo.erl?))
32.
まとめ • プロダクション運用の中で踏んだ地雷につい て紹介しました • 地雷の処理について紹介しました •
Elixirのプロダクション導入の一助になれば幸 いです
Download now