Submit Search
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
•
Download as PPTX, PDF
•
36 likes
•
16,495 views
Tsunenori Oohara
Follow
Elixirを本番環境で使ってみたという事例紹介
Read less
Read more
1 of 16
Download now
Downloaded 22 times
More Related Content
Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介
1.
Elixirを本番環 境で使ってみた という事例紹介 Shibuya.ex #1 (株)ドリコム
@ohrdev
2.
Agenda • 自己紹介 • サービス紹介 •
採用に至る経緯 • どう使っているか • 困った事 • 困らなかった事 • 使ってみての感想 • まとめ
3.
自己紹介 • @ohrdev (おーはら) •
(株)ドリコム 広告チームADエンジニア • 仕事 – ADネットワークシステムの開発、メンテ – 広告サービス(事前登録、etc)の開発、メンテ • 趣味 – FF14 (Ridillサーバー,白魔Lv60) – 写経(般若心経的な意味で)、仏像彫り – 丸太、流木収集
4.
サービス紹介 • DreeVee /
poncan – 動画広告ネットワーク – DAU 60万 – 月間動画再生数600万 – 通算 1億6000万再生 – リワード広告
5.
採用に至る経緯 • ADネットワークシステムのリニューアル – DAU
60万程度、ピークは通常の3-5倍のスパイク – 旧システムはRails製 – ビジネスロジックが複雑(支払請求、単価計算周り) • やりたいこと – 大量のリクエストを安全にさばきたい – サーバーコストを押さえたい – スケールを楽に行いたい – サービスが止まらない様に(安心睡眠)したい – etc
6.
採用に至る経緯 • 採用言語/ミドル候補 – Ruby,
Scala, Golang – Erlang ★ • Erlang – 性能的には満足、OTPも好評 – Syntaxがエンジニアに不評 • Elixir – SyntaxがRubyチック、OTP使える – 1.0 が出た! – Erlangのエコシステムにのっかれる
7.
どう使っているか • API部分に限定して利用 – リクエスト全体の9x%がAPIサーバー宛 –
複雑なビジネスロジックはRailsバッチシステムで – バッチのSidekiqにElixirからenqueue • DBバックエンドはRedis/Dynamodb – RDBへのアクセスは無し – Redisのコネクション管理はpoolboyを採用 • APIのDSLとしてmaruを採用 – GrapeのElixir実装
8.
どう使っているか • Sidekiqへのenqueueを行う – [API]
Elixir@exq – [Batch] Rails@sidekiq • Deploy – exrm で releaseアーカイブ作成/EC2へ • 監視 – Sentryに raven-elixir を使ってイベントログ送信 – インフラはAWSで組んでいるのでCloudWatchで
9.
どう使っているか API server (Elixir) 管理系 system(RoR) redi s Batch Server (Sidekiq) redi s MySQL Exq (Enqueuer) Cash
Server LB dynamo Ex_aws Sentry Rave-elixir Exredis poolboy Maru Dotenv Uuid … etc
10.
困った事 • ユースケースが少ない – 採用事例、Deploy事例、運用事例 •
Erlangエンジニアが少ない – 社内勉強会/読書会/etc – 本件以外の事例が増えつつある • 本番採用:1件(開発中/phoenix) • プロトサービス:2+α件 • Elixir的なサービスの組み方とは・・・ – アクターモデル脳/関数型脳へのシフト – 『Scala関数型デザイン&プログラミング』
11.
(思ったより)困らなかった事 • 上司説得、採用ハードル – ベンチマーク/アーキ比較/数字を出して説明 –
調査・比較工数はそれなりに – 全社的な方向性/方針にマッチした • ライブラリ – Erlangのエコシステムにのっかれる – ただし、足回り(運用関連のツール、ライブラリ)弱い • 情報収集 – パーフェクトElixir情報収集 – http://www.slideshare.net/keithseahus/elixir- 48878894
12.
使ってみての感想 • Erlang/OTPを知らないと辛い – エラーログはErlangベース –
ErlangをRubyのSyntaxで書いている感じ – ElixirのライブラリはまだErlangのラッパーが殆ど • (日本語の)ドキュメント少ない – web+db vol.88,89 でElixir特集あります • コミュニティ少ない(かったが最近増えてきた? – Sapporo.beamオススメ (idobataで分散開催) • Erlangのコミュニティ/エコシステムは偉大 – 時雨堂さんのドキュメントがかなり参考になった
13.
使ってみての感想 • Elixirならではの機能が便利 – パイプ演算子が無いとやっていけない体に –
Struct、Protocol、遅延処理、etc Erlangで表現で きない良記述 – (Lispの)マクロが強力(ライブラリ書くなら必須 • Debug/Perf関連はErlangのプロダクトが充実 – observer,eper,etc – Elixirプロダクトも徐々に充実していっている • Awesome-elixirのリストが凄い勢いで成長 – remote_consoleでアタッチしてごにょごにょするの が手っ取り早い(Railsでいうところの rails c p)
14.
使ってみての感想 • Erlangの資産を最大限活用してる – Hex(
Rubyで言う所のRubygems ) • Elixirの前にErlangをざっと把握しとくと良い – エンジニアに最初にやってもらった事 • すごいE本/飛行機本 を読んでもらった • 関数型言語について理解してもらった – 2〜3ヶ月でそれなりのコードが書ける様になった • Rubyコミュニティの影響を多分に受けているが、Ruby が書けるからElixirが書き易いというわけでは*ない* • Phoenixに期待している(が結局サーバーDSL だしなぁ・・・)
15.
まとめ • Elixirのプロダクトを開発・リリース・運用して みました • 今後、Elixirのプロダクトや採用事例が増えて いくと感じています •
まだまだ言語や、海外含むコミュニティが若い ので、貢献のチャンスが多分にあります • 不満:テストF/W周りが不十分 • Let’s enjoy Elixir.
16.
ドリコム広告事業部はアドテク好きなエ ンジニアを募集しています。 http://www.drecom.co.jp/recruit/ [PR]
Download