Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介

14,606 views

Published on

Elixirを本番環境で使ってみたという事例紹介

Published in: Engineering

Shibuya.ex #1 Elixirを本番環境で使ってみたという事例紹介

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

×