遅ればせながらせっかくなので devsumi2015 で参加してきたセッションのメモを公開していきます。
まずは、「20-C-2 14,000 件 /sec の配信を実現したリクルートのモバイル・アプリを支えるプッシュ通知基盤」から。 ひと言で言ってしまうと AWS ( DynamoDB とSQS ) と Elasticsearch の活用事例といったところだったかな、と。
では以降、メモです。
20-C-2 14,000 件 /sec の配信を実現したリクルートのモバイル・アプリを支えるプッシュ通知基盤
- R-tech スマートデバイスグループ
- グループ横断的なスマートフォンアプリ開発
- Pusna 開発 (プッシュ通知基盤) の進化と変化
- Push 通知の特徴
- メルマガに比べて開封率が高く、リアルタイム性も高い -> 効果的な販促ツール
- 情報レコメンド
- 休眠ユーザの再起
- メルマガに比べて開封率が高く、リアルタイム性も高い -> 効果的な販促ツール
- Recruit の取り組みは 201106 から
- 当初のシステム構成
- FW: Rails 2.3
- DB: MySQL
- デバイス登録数が増えて限界に
- 処理スピードが遅い
- 特定時間を狙った訴求ができない
- 高負荷に耐えられない
- 各アプリが好きな時間にプッシュ通知を設定できない
- 処理スピードが遅い
- 当初のシステム構成
- スケーラビリティーを求めて再構築
- 2013 Summer, Pusna の再構築
- 結果的に内製を決めた
- セキュリティの観点も大きかった
- Realtime & Scalable をコンセプト
- Realtime
- 各機能の高速化
- 機能分割
- AWS の SQS を利用
- IO の高速化
- AWS DynamoDB を利用
- SSD
- Schema-less
- 条件配信は elasticsearch を利用
- AWS DynamoDB を利用
- 非同期 IO
- node.js
- 機能分割
- 各機能の高速化
- Scalability
- 単純化と分散
- Realtime
- システム構成は資料公開を期待
- @IT に詳細説明の記事があるそう
- 運用を通じて得た知見
- 事例 (1) デバイス登録キューが詰まる (閾値 1,000)
- エンキュー処理 < デキュー処理 なら起きない
- DynamoDB のスループットエラーが起こると逆になる
- リトライ処理が起こると処理が遅延し、キュー詰まる
- 該当アプリの DynamoDB のスループット値 (Write) を上げる
- スマホアプリの実装ミスもあって解決しなかった (無限ループ)
- スマホアプリの修正版を緊急リリース
- 再現しないようにアプリごとにキューを用意するようにした
- DynamoDB のスループットエラーが起こると逆になる
- エンキュー処理 < デキュー処理 なら起きない
- 事例 (2) プッシュ後にサーバ側のサーバにアクセス集中
- Pusna の捌きが後続に比べて速すぎた
- 事例 (3) 登録デバイス数が想定の 2 倍
- Elasticsearch のキャパ不足が発生
- シャード数を増やした構成に再構成しようと試みている (現在進行形)
- シャード数の変更は Elasticsearch はできないが、 Pusna として考慮折込済み
- デバイス登録ワーカーを止め、更新処理を遅らせている間に ES を再構成するようにしてある
- Elasticsearch のキャパ不足が発生
- 事例 (1) デバイス登録キューが詰まる (閾値 1,000)
- まとめ
- エンジニアは最新技術に挑戦すべき
- 楽しさ
- 可能性
- リスクの見立てて前進
- 運用には想定外があるし、みえなかったリスクが顕在化してくることがあるが、それを乗り越えることによってエンジニアとしてさらなる成長ができる
- エンジニアは最新技術に挑戦すべき
資料
[Developers Summit 2015 講演資料] リクルートテクノロジーズ 14,000件/秒の配信を実現した リクルートのモバイルアプリを支える プッシュ通知基盤 ~AWS上での開発・運用の中で見えてきた課題と�� from Recruit Technologies
あわせて読まれたい
- #devsumiC 積ん読状態のドメイン駆動設計をちゃんと読むきっかけづくりに「ドメイン駆動設計再入門」に参加してきました
- #devsumiC 「IT アーキテクトの役割と責任」は大変エモしろかった
- 「HBase は素晴らしい!言うならばそれは SKVS !」という台詞に最後は全て喰われていた HBase 徹底入門刊行記念セミナーで著者の方々のサインをもらってきた #hbase_ca
- 帰ってきたネ申プレゼン! #dbts2014 で @nippondanji 氏の「あなたが知らないリレーショナルモデル」と #meet_wow してきた。
- Cloudera World Tokyo 2014 の LT セッションで聞いてきたメモ #cwt2014