Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

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

14.788 Aufrufe

Veröffentlicht am

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

Veröffentlicht in: Ingenieurwesen
  • Als Erste(r) kommentieren

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]

×