Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
株式会社リクルートテクノロジーズ
ITマネジメント統括部
ITマネジメント1部
スマートデバイスグループ
樋口 勝彦
14,000件/秒の配信を実現した
リクルートのモバイルアプリを支える
プッシュ通知基盤
~AWS上での開発・運用の中で見えて...
2
ひぐち かつひこ
樋口 勝彦
株式会社リクルートテクノロジーズ
ITマネジメント統括部
ITマネジメント1部
スマートデバイスグループ
自己紹介
3年間SIer 2年間決済系
システム開発
リクルート 2013/5~
Tizen
アプリ開発...
R-Tech スマートデバイスGは
リクルートグループのネイティブアプリ領域における
開発/ビジネスを牽引する横断組織
プラットフォーマーとの密な
リレーション構築・情報収集
アプリ戦略の
実現
3(C) Recruit Technologie...
4(C) Recruit Technologies Co.,Ltd. All rights reserved.
話すこと
ここ3年半の
モバイル領域の急激な変化と
共に歩んできた
あるプッシュ通知基盤システム
の変化/進化について
5(C) Recruit Technologies Co.,Ltd. All rights reserved.
目次
リクルートとプッシュ通知との歩み
第1章 旧システムの限界に直面
第2章 スケーラビリティを求めての再構築
第3章 運用を通し...
6(C) Recruit Technologies Co.,Ltd. All rights reserved.
目次
リクルートとプッシュ通知との歩み
第1章 旧システムの限界に直面
第2章 スケーラビリティを求めての再構築
第3章 運用を通し...
7
Push通知とは?
(C) Recruit Technologies Co.,Ltd. All rights reserved.
8(C) Recruit Technologies Co.,Ltd. All rights reserved.
Push!
APNs
Apple Push Notification Service
スマートデバイスの待ち受け画面に送る通知
(ア...
9(C) Recruit Technologies Co.,Ltd. All rights reserved.
メルマガに比べて開封率が高く、リアルタイム性があり
効果的な販促ツールとして認知されている
プッシュ通知の特徴
ユーザのアクティブ率...
10
リクルートのプッシュ通知への
取り組みは2011年6月から
(C) Recruit Technologies Co.,Ltd. All rights reserved.
11
プッシュ通知対応の工数削減を目的に
プッシュ通知基盤を
フィジビリ・サービスとして
各アプリに展開
(C) Recruit Technologies Co.,Ltd. All rights reserved.
12
プッシュ通知対応の工数削減を目的に
プッシュ通知基盤を
フィジビリ・サービスとして
各アプリに展開
Pusna
Push Notification Aggregator
プッシュ通知基盤
13
当時のシステム構成
開発言語 Ruby 1.8系
FW Rails 2.3系
DB MySQL 5.4系
APNs
デバイス登録
プッシュ依頼
Pusna
GCM
14
デバイス登録数の遷移
11年6月
プッシュ通知基盤 Pusna
フィジビリ・サービス化
時間
登
録
デ
バ
イ
ス
数
2011.06
15
デバイス登録数の遷移
11年6月 時間
登
録
デ
バ
イ
ス
数
プッシュ通知基盤 Pusna
フィジビリ・サービス化
2011.06
16
デバイス登録数の遷移
X,000,000
11年6月 13年5月 13年7月12年8月 時間
17
デバイス登録数の遷移
X,000,000
11年6月 13年5月 13年7月12年8月
X00万デバイス越
時間
2012.08
18
デバイス登録数の遷移
X5,000,000
11年6月 13年5月 時間
19
デバイス登録数の遷移
X5,000,000
11年6月 13年5月 時間
樋口
リクルートテクノロジーズ入社
2013.05
20
デバイス登録数の遷移
X5,000,000
11年6月 13年5月
2013.05 樋口 入社
この頃樋口は、
21
デバイス登録数の遷移
X5,000,000
11年6月 13年5月
2013.05 樋口 入社
(幻の)
アプリ開発に。
22
デバイス登録数の遷移
X5,000,000
11年6月 13年5月
2013.05 樋口 入社
(幻の)
アプリ開発に。
23(C) Recruit Technologies Co.,Ltd. All rights reserved.
2ヶ月後
24
デバイス登録数の遷移
X0,000,000
11年6月 13年7月
25
デバイス登録数の遷移
X0,000,000
11年6月 13年7月
樋口
Pusna のチームリーダーに。
2013.07
26
デバイス登録数の遷移
X0,000,000
11年6月 13年7月
樋口
Pusna のチームリーダーに。
2013.07
当時システムは既に
限界を迎えていた
27
デバイス登録数の遷移
X0,000,000
11年6月 13年7月
樋口
Pusna のチームリーダーに。
2013.07
(システム構成図)
デバイス登録
APNs
Pusna
GCM
プッシュ依頼
28
デバイス登録数の遷移
X0,000,000
11年6月 12年8月 13年5月 13年7月
2013.07 樋口 チームリーダー 抜擢
デバイス数 急増
APNs
Pusna
GCM
プッシュ依頼
デバイス登録
29
デバイス登録数の遷移
X0,000,000
11年6月 12年8月 13年5月 13年7月
2013.07 樋口 チームリーダー 抜擢
デバイス数 急増
APNs
Pusna
GCM
プッシュ依頼
デバイス登録
30
デバイス登録数の遷移
X0,000,000
11年6月 12年8月 13年5月 13年7月
2013.07 樋口 チームリーダー 抜擢
デバイス数 急増
APNs
Pusna
GCM
プッシュ依頼
デバイス登録
31(C) Recruit Technologies Co.,Ltd. All rights reserved.
当時のシステムで発生していた問題
問題1:
「配信スピードが遅く、
届けたいタイミングでメッセージが送れない。」
└1000万件の...
32(C) Recruit Technologies Co.,Ltd. All rights reserved.
当時のシステムで発生していた問題
問題1:
「配信スピードが遅く、
届けたいタイミングでメッセージが送れない。」
└1000万件の...
33(C) Recruit Technologies Co.,Ltd. All rights reserved.
当時のシステムで発生していた問題
問題1:
「配信スピードが遅く、
届けたいタイミングでメッセージが送れない。」
└1000万件の...
34(C) Recruit Technologies Co.,Ltd. All rights reserved.
当時のシステムで発生していた問題
問題1:
「配信スピードが遅く、
届けたいタイミングでメッセージが送れない。」
└1000万件の...
35(C) Recruit Technologies Co.,Ltd. All rights reserved.
当時のシステムで発生していた問題
問題1:
「配信スピードが遅く、
届けたいタイミングでメッセージが送れない。」
└1000万件の...
36(C) Recruit Technologies Co.,Ltd. All rights reserved.
当時のシステムで発生していた問題
問題1:
「高負荷にシステムが耐えられないため、
各アプリが好きな時間にプッシュ依頼できない。」...
37(C) Recruit Technologies Co.,Ltd. All rights reserved.
当時のシステムで発生していた問題
問題1:
「高負荷にシステムが耐えられないため、
各アプリが好きな時間にプッシュ依頼できない。」...
38(C) Recruit Technologies Co.,Ltd. All rights reserved.
当時のシステムで発生していた問題
問題1:
「高負荷にシステムが耐えられないため、
各アプリが好きな時間にプッシュ依頼できない。」...
39(C) Recruit Technologies Co.,Ltd. All rights reserved.
当時のシステムで発生していた問題
問題1:
「高負荷にシステムが耐えられないため、
各アプリが好きな時間にプッシュ依頼できない。」...
40(C) Recruit Technologies Co.,Ltd. All rights reserved.
当時のシステムで発生していた問題
問題1:
「高負荷にシステムが耐えられないため、
各アプリが好きな時間にプッシュ依頼できない。」...
41(C) Recruit Technologies Co.,Ltd. All rights reserved.
当時のシステムで発生していた問題
問題1:
「高負荷にシステムが耐えられないため、
各アプリが好きな時間にプッシュ依頼できない。」...
42(C) Recruit Technologies Co.,Ltd. All rights reserved.
当時のシステムで発生していた問題
問題1:
「高負荷にシステムが耐えられないため、
各アプリが好きな時間にプッシュ依頼できない。」...
43(C) Recruit Technologies Co.,Ltd. All rights reserved.
当時のシステムで発生していた問題
問題1:
「高負荷にシステムが耐えられないため、
各アプリが好きな時間にプッシュ依頼できない。」...
44(C) Recruit Technologies Co.,Ltd. All rights reserved.
当時のシステムで発生していた問題
問題1:
「高負荷にシステムが耐えられないため、
各アプリが好きな時間にプッシュ依頼できない。」...
45(C) Recruit Technologies Co.,Ltd. All rights reserved.
当時のシステムで発生していた問題
問題1:
「配信スピードが遅く、
届けたいタイミングでメッセージが送れない。」
└1000万件の...
46(C) Recruit Technologies Co.,Ltd. All rights reserved.
目次
リクルートとプッシュ通知との歩み
第1章 旧システムの限界に直面
第2章 スケーラビリティを求めての再構築
第3章 運用を通...
47(C) Recruit Technologies Co.,Ltd. All rights reserved.
プッシュ配信基盤の再構築
2013年夏
Pusnaの再構築が決定!
48(C) Recruit Technologies Co.,Ltd. All rights reserved.
再構築の背景
Pusnaの再構築が決定!2013.夏
論点
・外部ASPの利用も考慮に入れ検討。
└各アプリチームの要望に迅速対応...
49(C) Recruit Technologies Co.,Ltd. All rights reserved.
再構築で解決する課題
課題1:
届けたいタイミングでメッセージが送りきれない
└Realtime
課題2:
各アプリ担当が好きな時...
50
Realtime
&
Scalable
再構築のコンセプト
51
Realtime
&
Scalable
数千万台デバイスのアクセスに耐える
1000万人に15分以内に配信できる
再構築のコンセプト
52
Pusna
Push Notification Aggregator
旧プッシュ通知基盤
53
Pusna
Realtime
Scalable
54
Pusna-RS
Push Notification Aggregator
Realtime & Scalable
新プッシュ通知基盤
55(C) Recruit Technologies Co.,Ltd. All rights reserved.
Realtime & Scalable 実現のため
基本アイディア
Scalable
└単純化と分散
Realtime
└高速化
...
機能間の
非同期連携
56(C) Recruit Technologies Co.,Ltd. All rights reserved.
Realtime & Scalable 実現のため
基本アイディア
利用ツール
Scalable
└単純化と...
機能間の
非同期連携
57(C) Recruit Technologies Co.,Ltd. All rights reserved.
Realtime & Scalable 実現のため
基本アイディア
利用ツール
Scalable
└単純化と...
機能間の
非同期連携
58(C) Recruit Technologies Co.,Ltd. All rights reserved.
Realtime & Scalable 実現のため
基本アイディア
利用ツール
Scalable
└単純化と...
機能間の
非同期連携
59(C) Recruit Technologies Co.,Ltd. All rights reserved.
Realtime & Scalable 実現のため
基本アイディア
利用ツール
Scalable
└単純化と...
機能間の
非同期連携
60(C) Recruit Technologies Co.,Ltd. All rights reserved.
Realtime & Scalable 実現のため
基本アイディア
利用ツール
Scalable
└単純化と...
61(C) Recruit Technologies Co.,Ltd. All rights reserved.
• Amazon Simple Queue Service(SQS)はAWSが提供する
分散キューサービス。
• 高速で信頼性・ス...
機能間の
非同期連携
62(C) Recruit Technologies Co.,Ltd. All rights reserved.
Realtime & Scalable 実現のため
基本アイディア
利用ツール
Scalable
└単純化と...
機能間の
非同期連携
63(C) Recruit Technologies Co.,Ltd. All rights reserved.
Realtime & Scalable 実現のため
基本アイディア
利用ツール
Scalable
└単純化と...
機能間の
非同期連携
64(C) Recruit Technologies Co.,Ltd. All rights reserved.
Realtime & Scalable 実現のため
基本アイディア
利用ツール
Scalable
└単純化と...
機能間の
非同期連携
65(C) Recruit Technologies Co.,Ltd. All rights reserved.
Realtime & Scalable 実現のため
基本アイディア
利用ツール
Scalable
└単純化と...
66(C) Recruit Technologies Co.,Ltd. All rights reserved.
DynamoDBとは
• Amazon DynamoDBはAWSにて提供される分散KVS。
• 複数のAZ(データセンター)にわた...
機能間の
非同期連携
67(C) Recruit Technologies Co.,Ltd. All rights reserved.
Realtime & Scalable 実現のため
基本アイディア
利用ツール
Scalable
└単純化と...
機能間の
非同期連携
68(C) Recruit Technologies Co.,Ltd. All rights reserved.
Realtime & Scalable 実現のため
基本アイディア
利用ツール
Scalable
└単純化と...
機能間の
非同期連携
69(C) Recruit Technologies Co.,Ltd. All rights reserved.
Realtime & Scalable 実現のため
基本アイディア
利用ツール
Scalable
└単純化と...
70(C) Recruit Technologies Co.,Ltd. All rights reserved.
積極的に最新技術を採用
AWSの機能をふんだんに利用
71(C) Recruit Technologies Co.,Ltd. All rights reserved.
積極的に最新技術を採用
AWSの機能をふんだんに利用
リクルート内サービスで運用実績のない
ソフトウェアも積極採用 ※2013年秋...
72
Pusna-RS
Push Notification Aggregator
Realtime & Scalable
アーキテクチャについて
73(C) Recruit Technologies Co.,Ltd. All rights reserved.
DynamoDB
elasticsearch
クラスタ
デバイス登録
リクエスト
APNs/GCM
サーバ
登録API
データ登録...
74(C) Recruit Technologies Co.,Ltd. All rights reserved.
DynamoDB
elasticsearch
クラスタ
デバイス登録
リクエスト
APNs/GCM
サーバ
登録API
データ登録...
75(C) Recruit Technologies Co.,Ltd. All rights reserved.
DynamoDB
elasticsearch
クラスタ
デバイス登録
リクエスト
APNs/GCM
サーバ
登録API
データ登録...
76(C) Recruit Technologies Co.,Ltd. All rights reserved.
DynamoDB
elasticsearch
クラスタ
デバイス登録
リクエスト
APNs/GCM
サーバ
登録API
データ登録...
77(C) Recruit Technologies Co.,Ltd. All rights reserved.
DynamoDB
elasticsearch
クラスタ
デバイス登録
リクエスト
APNs/GCM
サーバ
登録API
データ登録...
78(C) Recruit Technologies Co.,Ltd. All rights reserved.
DynamoDB
elasticsearch
クラスタ
デバイス登録
リクエスト
APNs/GCM
サーバ
登録API
データ登録...
79(C) Recruit Technologies Co.,Ltd. All rights reserved.
DynamoDB
elasticsearch
クラスタ
デバイス登録
リクエスト
APNs/GCM
サーバ
登録API
データ登録...
80
DynamoDB
elasticsearch
クラスタ
デバイス登録
リクエスト
APNs/GCM
サーバ
登録API
データ登録
配信worker
SQS
登録worker
システム管理・操作用
Web UI
管理API
データ参照
事...
81(C) Recruit Technologies Co.,Ltd. All rights reserved.
DynamoDB
elasticsearch
クラスタ
デバイス登録
リクエスト
APNs/GCM
サーバ
登録API
データ登録...
82(C) Recruit Technologies Co.,Ltd. All rights reserved.
DynamoDB
elasticsearch
クラスタ
デバイス登録
リクエスト
APNs/GCM
サーバ
登録API
データ登録...
83(C) Recruit Technologies Co.,Ltd. All rights reserved.
DynamoDB
elasticsearch
クラスタ
デバイス登録
リクエスト
APNs/GCM
サーバ
登録API
データ登録...
84(C) Recruit Technologies Co.,Ltd. All rights reserved.
DynamoDB
elasticsearch
クラスタ
デバイス登録
リクエスト
APNs/GCM
サーバ
登録API
データ登録...
85(C) Recruit Technologies Co.,Ltd. All rights reserved.
DynamoDB
elasticsearch
クラスタ
デバイス登録
リクエスト
APNs/GCM
サーバ
登録API
データ登録...
86(C) Recruit Technologies Co.,Ltd. All rights reserved.
DynamoDB
elasticsearch
クラスタ
デバイス登録
リクエスト
APNs/GCM
サーバ
登録API
データ登録...
87
[PR]詳細については@IT連載記事を参照
http://www.atmarkit.co.jp/ait/articles/1412/18/news022.html
(C) Recruit Technologies Co.,Ltd. All...
88
結果
89
再構築 BEFORE / AFTER
✔□ Realtime
配信スピード:
(旧) 秒間最大41件 (新) 秒間最大 14,000件
1000万台配信実績:
(旧) 1週間 ※(分割配信) (新) 12分
90
再構築 BEFORE / AFTER
✔
✔
□ Realtime
配信スピード:
(旧) 秒間最大41件 (新) 秒間最大 14,000件
1000万台配信実績:
(旧) 1週間 ※(分割配信) (新) 12分
□ Scalable
登...
91
再構築 BEFORE / AFTER
✔
✔
□ Realtime
配信スピード:
(旧) 秒間最大41件 (新) 秒間最大 14,000件
1000万台配信実績:
(旧) 1週間 ※(分割配信) (新) 12分
□ Scalable
登...
92
そのシステムがスマートデバイスの
急速な普及により大変な状況に!
そして
平穏な日々を手に入れた
93(C) Recruit Technologies Co.,Ltd. All rights reserved.
目次
リクルートとプッシュ通知との歩み
第1章 旧システムの限界に直面
第2章 スケーラビリティを求めての再構築
第3章 運用を通...
94(C) Recruit Technologies Co.,Ltd. All rights reserved.
目次
リクルートとプッシュ通知との歩み
第1章 旧システムの限界に直面
第2章 スケーラビリティを求めての再構築
第3章 運用を通...
95
そのシステムがスマートデバイスの
急速な普及により大変な状況に!
平穏な日々を手に入れた
96
そのシステムがスマートデバイスの
急速な普及により大変な状況に!
平穏な日々を手に入れた
はずだった・・・
97
ある日の定時後。。
完璧に作りきった
Pusna-RS だったが、
本格運用中に発覚した
事例を3つ紹介
この章で話すこと
(C) Recruit Technologies Co.,Ltd. All rights reserved.
98
事例①
(C) Recruit Technologies Co.,Ltd. All rights reserved.
99
ある日の定時後
アラートメールを受信
100
ある日の定時後
アラートメールを受信
デバイス登録キュー
が詰まっている (閾値1,000)
※ 稀に発生していた
(C) Recruit Technologies Co.,Ltd. All rights reserved.
101
ある日の定時後
アラートメールを受信
デバイス登録キュー
が詰まっている (閾値1,000)
※ 稀に発生していた
説明
(C) Recruit Technologies Co.,Ltd. All rights reserved.
102
デバイス登録のキュー詰まりについて
登録
API
登録
Worker
キューの処理スピード
≦
登録
キュー
エンキュー処理
デバイス登録API
リクエスト
デキュー処理
DynamoDBへの
書込み
(C) Recruit Techn...
103
デバイス登録のキュー詰まりについて
登録
API
登録
Worker
キューの処理スピード
≦
登録
キュー
エンキュー処理
デバイス登録API
リクエスト
デキュー処理
DynamoDBへの
書込み
DynamoDBで書込みエラーが発...
104
デバイス登録のキュー詰まりについて
キューの処理スピード
>
エンキュー処理
デバイス登録API
リクエスト
デキュー処理
DynamoDBへの
書込み
登録API 登録Worker登録キュー
(C) Recruit Technolog...
105
デバイス登録のキュー詰まりについて
キューの処理スピード
>
エンキュー処理
デバイス登録API
リクエスト
デキュー処理
DynamoDBへの
書込み
スループットエラーが発生
登録API 登録Worker登録キュー
リトライ処理開始...
106
デバイス登録のキュー詰まりについて
キューの処理スピード
>
エンキュー処理
デバイス登録API
リクエスト
デキュー処理
DynamoDBへの
書込み
登録API 登録Worker登録キュー
(C) Recruit Technolog...
107
デバイス登録のキュー詰まりについて
キューの処理スピード
>
エンキュー処理
デバイス登録API
リクエスト
デキュー処理
DynamoDBへの
書込み
DynamoDBで書込みエラーが発生し
処理が止まるため、キューが詰まりが発生する...
登録キュー 登録Worker
108
デバイス登録のキュー詰まりについて
登録API
キュー詰まり対策
(C) Recruit Technologies Co.,Ltd. All rights reserved.
スループットエラー発生中
登録キュー 登録Worker
109
デバイス登録のキュー詰まりについて
登録API
該当アプリのDynamoDB
スループット値(Write)を上げる
キュー詰まり対策
(C) Recruit Technologies Co.,Ltd. Al...
登録キュー 登録Worker
110
デバイス登録のキュー詰まりについて
登録API
該当アプリのDynamoDB
スループット値(Write)を上げる
キュー詰まり対策
アプリC
アプリB
アプリA
(C) Recruit Technolog...
登録キュー 登録Worker
111
デバイス登録のキュー詰まりについて
登録API
該当アプリのDynamoDB
スループット値(Write)を上げる
キュー詰まり対策
アプリC
アプリB
アプリA
スループット値を上げる
(C) Recru...
登録キュー 登録Worker
112
デバイス登録のキュー詰まりについて
登録API
該当アプリのDynamoDB
スループット値(Write)を上げる
キュー詰まり対策
アプリC
アプリB
アプリA
スループットエラー発生中スループットエラー...
登録キュー 登録Worker
113
デバイス登録のキュー詰まりについて
登録API
該当アプリのDynamoDB
スループット値(Write)を上げる
キュー詰まり対策
(C) Recruit Technologies Co.,Ltd. Al...
登録キュー 登録Worker
114
デバイス登録のキュー詰まりについて
登録API
該当アプリのDynamoDB
スループット値(Write)を上げる
キュー詰まり対策
(C) Recruit Technologies Co.,Ltd. Al...
115
ある日の定時後
アラートメールを受信
デバイス登録キュー
が詰まっている (閾値1,000)
[再掲]
(C) Recruit Technologies Co.,Ltd. All rights reserved.
116
ある日の定時後
アラートメールを受信
デバイス登録キュー
が詰まっている (閾値1,000)
[再掲]
(型化されている運用通り)
該当アプリのDynamoDB
スループット値(write)を上げた。
対応
117
ある日の定時後
アラートメールを受信
デバイス登録キュー
が詰まっている (閾値1,000)
[再掲]
(型化されている運用通り)
該当アプリのDynamoDB
スループット値(write)を上げた。
想定
対応
118
ある日の定時後
アラートメールを受信
デバイス登録キュー
が詰まっている (閾値1,000)
[再掲]
(型化されている運用通り)
該当アプリのDynamoDB
スループット値(write)を上げた。
閾値
t
キューの深さ
Write...
119
ある日の定時後
アラートメールを受信
デバイス登録キュー
が詰まっている (閾値1,000)
[再掲]
(型化されている運用通り)
該当アプリのDynamoDB
スループット値(write)を上げた。
実際
対応
120
ある日の定時後
アラートメールを受信
デバイス登録キュー
が詰まっている (閾値1,000)
[再掲]
(型化されている運用通り)
該当アプリのDynamoDB
スループット値(write)を上げた。
実際
対応
閾値 (1,000)
...
121
ある日の定時後
アラートメールを受信
デバイス登録キュー
が詰まっている (閾値1,000)
[再掲]
(型化されている運用通り)
該当アプリのDynamoDB
スループット値(write)を上げた。
実際
対応 キューの深さ
140万...
122
該当アプリ以外の処理も
遅延することに
デバイス登録処理遅れています
123
起きていた現象
スマホアプリの実装ミス
デバイス登録完了のコールバックで
再度デバイス登録をする実装に。
原
因
登録API 登録Worker登録キュー
(C) Recruit Technologies Co.,Ltd. All rig...
リクエスト
124
起きていた現象
レスポンス
スマホアプリの実装ミス
デバイス登録完了のコールバックで
再度デバイス登録をする実装に。
原
因
デバイス登録の無限ループ
が起きていた
登録API 登録Worker登録キュー
(C) Recru...
125
起きていた現象
スマホアプリの実装ミス
デバイス登録完了のコールバックで
再度デバイス登録をする実装に。
原
因
登録API 登録Worker登録キュー
(C) Recruit Technologies Co.,Ltd. All rig...
126
起きていた現象
登録API
スマホアプリの実装ミス
デバイス登録完了のコールバックで
再度デバイス登録をする実装に。
原
因
スループットエラーが発生
登録キュー 登録Worker
(C) Recruit Technologies Co...
127
起きていた現象
登録API
スマホアプリの実装ミス
デバイス登録完了のコールバックで
再度デバイス登録をする実装に。
原
因
スループットエラーが発生
ループ端末も増え続ける
登録キュー 登録Worker
(C) Recruit Tec...
128
起きていた現象
登録API
スマホアプリの実装ミス
デバイス登録完了のコールバックで
再度デバイス登録をする実装に。
原
因
スループットエラーが発生
キュー詰まり発生ループ端末も増え続ける
登録キュー 登録Worker
(C) Rec...
129
起きていた現象
登録API 登録キュー 登録Worker
(C) Recruit Technologies Co.,Ltd. All rights reserved.
誤った打ち手1
130
起きていた現象
登録API 登録キュー 登録Worker
(C) Recruit Technologies Co.,Ltd. All rights reserved.
DynamoDBスループット値を上げる
誤った打ち手1
131
起きていた現象
登録API 登録キュー 登録Worker
(C) Recruit Technologies Co.,Ltd. All rights reserved.
スループット値を上げる
DynamoDBスループット値を上げる
誤っ...
132
起きていた現象
登録API 登録キュー 登録Worker
(C) Recruit Technologies Co.,Ltd. All rights reserved.
デバイス登録リクエストのループは継続するため
キュー詰まりは解消しな...
133
起きていた現象
登録API 登録キュー 登録Worker
(C) Recruit Technologies Co.,Ltd. All rights reserved.
134
起きていた現象
登録API 登録キュー 登録Worker
(C) Recruit Technologies Co.,Ltd. All rights reserved.
ループ端末も増え続ける
135
起きていた現象
登録API 登録キュー 登録Worker
(C) Recruit Technologies Co.,Ltd. All rights reserved.
ループ端末も増え続ける
負荷が高まる
136
起きていた現象
登録API 登録キュー 登録Worker
(C) Recruit Technologies Co.,Ltd. All rights reserved.
誤った打ち手2
137
起きていた現象
登録API 登録キュー 登録Worker
(C) Recruit Technologies Co.,Ltd. All rights reserved.
登録APIサーバーのスケールアウト(2台->10台)
誤った打ち手2
138
起きていた現象
登録API 登録キュー 登録Worker
(C) Recruit Technologies Co.,Ltd. All rights reserved.
登録APIサーバーのスケールアウト(2台->10台)
誤った打ち手2
139
起きていた現象
登録API 登録キュー 登録Worker
(C) Recruit Technologies Co.,Ltd. All rights reserved.
登録APIサーバーのスケールアウト(2台->10台)
誤った打ち手2...
140
起きていた現象
登録キュー
(詰まり中)
登録APIサーバーのスケールアウト(2台->10台)
誤った打ち手2
さらに無限ループが加速
141
起きていた現象
登録キュー
(詰まり中)
登録APIサーバーのスケールアウト(2台->10台)
誤った打ち手2
さらに無限ループが加速
無限ループの影響で
他アプリのデバイス登録の遅延が発生した
142
単体のスマホアプリのミスによる影響が
他アプリにも生じてしまうアーキテクチャであること
着目した問題点
スマホアプリの修正版を緊急リリース
暫定対応
デバイス登録キューをアプリ毎に分割
打ち手
事象「無限デバイス登録」のまとめ
(C) ...
143(C) Recruit Technologies Co.,Ltd. All rights reserved.
登録API 登録Worker
デバイス登録キューELB
DynamoDB
elasticsearch
デバイス登録
アプリA
ア...
144(C) Recruit Technologies Co.,Ltd. All rights reserved.
登録API 登録Worker
アプリA登録キュー
ELB
DynamoDB
elasticsearch
デバイス登録
アプリA
...
145
事例からの学び
プラットフォームとして
単体アプリの影響が
全体におよぶ構成にしてはならない
146
事例②
(C) Recruit Technologies Co.,Ltd. All rights reserved.
147
ある日の午後
あるサービス担当者からの訴え
(C) Recruit Technologies Co.,Ltd. All rights reserved.
148
ある日の午後
あるサービス担当者からの訴え
プッシュ後
サービス側のサーバに
アクセス集中して
耐えられません!何とかして!
(C) Recruit Technologies Co.,Ltd. All rights reserved.
149
起きていた現象
APNs/GCM Pusna-RS
プッシュ依頼
(C) Recruit Technologies Co.,Ltd. All rights reserved.
150
起きていた現象
APNs/GCM Pusna-RS
配信
(C) Recruit Technologies Co.,Ltd. All rights reserved.
151
起きていた現象
APNs/GCM Pusna-RS
(C) Recruit Technologies Co.,Ltd. All rights reserved.
152
起きていた現象
APNs/GCM Pusna-RS
デバイス登録
リクエスト
153
起きていた現象
APNs/GCM
デバイス登録
リクエスト
プッシュ後
アプリ起動時に発生する
デバイス登録の一斉リクエスト
問題なく捌けていた
Pusna-RS
154
起きていた現象
APNs/GCM Pusna-RS
デバイス登録
リクエスト
一方で
サービス側のサーバは
悲鳴を挙げていた
しかし
サービス
155
起きていた現象
APNs/GCM Pusna-RS
サービス
(C) Recruit Technologies Co.,Ltd. All rights reserved.
156
起きていた現象
APNs/GCM Pusna-RS
サービスに対する
リクエスト
サービス
(C) Recruit Technologies Co.,Ltd. All rights reserved.
157
起きていた現象
APNs/GCM Pusna-RS
サービスに対する
リクエスト
サービス
(C) Recruit Technologies Co.,Ltd. All rights reserved.
158
起きていた現象
APNs/GCM Pusna-RS
サービスに対する
リクエスト
サービス
例えば、500万デバイスに
プッシュする場合
7分弱※1の間に
アプリのアクティブユーザが
50万※2増えることになる
※1 配信スピード: 秒...
スピード
違反
スピード
違反ではなく
考慮不足
161
対応
配信Worker配信キュー APNs/GCM
READ
配信ごとに大まかな
秒間配信数を指定できるように修正
打ち手
修正内容
プログラム内でデータソースへのScan間隔を制御
することで配信速度をコントロール
一定間隔を置いて
...
162
事例からの学び
サービス全体のユースケースを
考慮したアーキテクチャにすべき
163
事例③
(C) Recruit Technologies Co.,Ltd. All rights reserved.
164
今取り組んでいる話
当初想定していた2倍のスピードで
登録デバイス数が
想定のX千万に到達!
(C) Recruit Technologies Co.,Ltd. All rights reserved.
165
想定Doc数 5,000万
シャード 4
レプリカ数 3
ノード数 6
Elasticsearchの構成
クラスター情報
想定Doc数を超え
1シャード当たり
1000万を超える
データ量
(C) Recruit Technologie...
166
想定Doc数 5,000万
シャード 4
レプリカ数 3
ノード数 6
Elasticsearchの構成
クラスター情報
想定Doc数を超え
1シャード当たり
1000万を超える
データ量
当然、1回1回の検索時間
も長くなり、負荷が高...
167
想定Doc数 5,000万
シャード 4
レプリカ数 3
ノード数 6
Elasticsearchの構成
クラスター情報
想定Doc数を超え
1シャード当たり
1000万を超える
データ量
セグメンテーションプッシュの
利用頻度も上がり...
168
想定Doc数 5,000万
シャード 4
レプリカ数 3
ノード数 6
Elasticsearchの構成
クラスター情報
想定Doc数を超え
1シャード当たり
1000万を超える
データ量
OutOfMemoryが発生!
そんな時
169
想定Doc数 5,000万
シャード 4
レプリカ数 3
ノード数 6
Elasticsearchの構成
クラスター情報
想定Doc数を超え
1シャード当たり
1000万を超える
データ量
OutOfMemoryが発生!
一部のプッシュ...
170
打ち手
1シャード当たりのドキュメント数が多く検索負荷が高い
問題
事象「Elasticsearch高負荷」のまとめ
シャード
想定Doc数
Doc数/
シャード
4
5,000万
現
1,250万
(C) Recruit Techno...
171
シャード数を増やした構成に再構築する
打ち手
1シャード当たりのドキュメント数が多く検索負荷が高い
問題
事象「Elasticsearch高負荷」のまとめ
シャード
想定Doc数
Doc数/
シャード
4
5,000万
現
1,250万...
172
シャード数を増やした構成に再構築する
打ち手
1シャード当たりのドキュメント数が多く検索負荷が高い
問題
事象「Elasticsearch高負荷」のまとめ
シャード 10↑
-想定Doc数
変更後すぐ
500万↓Doc数/
シャード
4...
173
シャード数を増やした構成に再構築する
打ち手
1シャード当たりのドキュメント数が多く検索負荷が高い
問題
事象「Elasticsearch高負荷」のまとめ
シャード 10↑
-想定Doc数
変更後すぐ
500万↓Doc数/
シャード
未...
174
想定Doc数 5,000万
シャード 4
レプリカ数 3
ノード数 6
Elasticsearchの構成
クラスター情報
想定Doc数を超え
1シャード当たり
1000万を超える
データ量
シャード数の変更は
オンラインではできない。
...
175
想定Doc数 5,000万
シャード 4
レプリカ数 3
ノード数 6
Elasticsearchの構成
クラスター情報
想定Doc数を超え
1シャード当たり
1000万を超える
データ量
シャード数の変更は
オンラインではできない。
...
176
オンラインでのESシャード数変更
デバイス登録ワーカーを止め、更新処理を
遅らせている間にESクラスターを再構成
登録
API
登録
キュー
登録
Worker
旧ES
(C) Recruit Technologies Co.,Ltd....
177
オンラインでのESシャード数変更
デバイス登録ワーカーを止め、更新処理を
遅らせている間にESクラスターを再構成
登録
API
登録
キュー
登録
Worker
旧ES
新ES
新しいESクラスターを用意
(C) Recruit Tec...
178
オンラインでのESシャード数変更
デバイス登録ワーカーを止め、更新処理を
遅らせている間にESクラスターを再構成
登録
API
登録
キュー
登録
Worker
旧ES
新ES
登録Workerを停止
(C) Recruit Techn...
179
オンラインでのESシャード数変更
デバイス登録ワーカーを止め、更新処理を
遅らせている間にESクラスターを再構成
登録
API
登録
キュー
登録
Worker
旧ES
新ES
データ移行開始
(C) Recruit Technolog...
180
オンラインでのESシャード数変更
デバイス登録ワーカーを止め、更新処理を
遅らせている間にESクラスターを再構成
登録
API
登録
キュー
登録
Worker
旧ES
新ES
データ移行開始データ移行完了!
(C) Recruit T...
181
オンラインでのESシャード数変更
デバイス登録ワーカーを止め、更新処理を
遅らせている間にESクラスターを再構成
登録
API
登録
キュー
登録
Worker
旧ES
新ES
登録Workerを再起動
(C) Recruit Tech...
182
事例からの学び
継続的にシステムをモニタリングし
再度未来を見立て
常にアーキテクチャを
最適な状態に変化させていくべき
183(C) Recruit Technologies Co.,Ltd. All rights reserved.
目次
リクルートとプッシュ通知との歩み
第1章 旧システムの限界に直面
第2章 スケーラビリティを求めての再構築
第3章 運用を...
184
エンジニアは
新技術に挑戦すべき
伝えたいこと
(C) Recruit Technologies Co.,Ltd. All rights reserved.
185
楽しい
186
可能性
187
新技術に挑戦すべき理由
リスク
188
新技術に挑戦すべき理由
見えない
189
新技術に挑戦すべき理由
リスク
を見立てる
190
新技術に挑戦すべき理由
前進
191
新技術に挑戦すべき理由
行き
止まり
192
行き
止まりリリース
193
新技術に挑戦すべき理由
運用
194
新技術に挑戦すべき理由
想定外
195
新技術に挑戦すべき理由
リスク
顕在化
196
新技術に挑戦すべき理由
リスクと向き合う
197
新技術に挑戦すべき理由
向き合う
198
新技術に挑戦すべき理由
向き合い
続ける
199
新技術に挑戦すべき理由
チーム
が強くなる
200
新技術に挑戦すべき理由
貢献
201
伝えたいこと(再掲)
エンジニアは
新技術に挑戦すべき
伝えたいこと
(C) Recruit Technologies Co.,Ltd. All rights reserved.
機能間の
非同期連携
202(C) Recruit Technologies Co.,Ltd. All rights reserved.
Pusna-RS アーキテクチャのポイント
基本アイディア
利用ツール
Scalable
└単純化と分散
...
機能間の
非同期連携
203(C) Recruit Technologies Co.,Ltd. All rights reserved.
Pusna-RS アーキテクチャのポイント
基本アイディア
利用ツール
Scalable
└単純化と分散
...
204(C) Recruit Technologies Co.,Ltd. All rights reserved.
205
リクルートテクノロジーズでは
新技術に挑戦したくてウズウズしてる
一緒に働く仲間を募集中です!!
(C) Recruit Technologies Co.,Ltd. All rights reserved.
206
ご清聴ありがとうございました!
(C) Recruit Technologies Co.,Ltd. All rights reserved.
Prochain SlideShare
Chargement dans…5
×

[Developers Summit 2015 講演資料] リクルートテクノロジーズ 14,000件/秒の配信を実現した リクルートのモバイルアプリを支える プッシュ通知基盤 ~AWS上での開発・運用の中で見えてきた課題と

9 362 vues

Publié le

Developers Summit 2015において、リクルートテクノロジーズの樋口が講演をしたスライドになります。『14,000件/secの配信を実現したリクルートのモバイルアプリを支えるプッシュ通知基盤 ~AWS上での開発・運用の中で見えてきた課題と解』

Publié dans : Mobile
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici

[Developers Summit 2015 講演資料] リクルートテクノロジーズ 14,000件/秒の配信を実現した リクルートのモバイルアプリを支える プッシュ通知基盤 ~AWS上での開発・運用の中で見えてきた課題と

  1. 1. 株式会社リクルートテクノロジーズ ITマネジメント統括部 ITマネジメント1部 スマートデバイスグループ 樋口 勝彦 14,000件/秒の配信を実現した リクルートのモバイルアプリを支える プッシュ通知基盤 ~AWS上での開発・運用の中で見えてきた課題と解~ 2015/2/20
  2. 2. 2 ひぐち かつひこ 樋口 勝彦 株式会社リクルートテクノロジーズ ITマネジメント統括部 ITマネジメント1部 スマートデバイスグループ 自己紹介 3年間SIer 2年間決済系 システム開発 リクルート 2013/5~ Tizen アプリ開発 Pusna開発 (プッシュ通知基盤) FirefoxOS アプリ開発 幻の (C) Recruit Technologies Co.,Ltd. All rights reserved.
  3. 3. R-Tech スマートデバイスGは リクルートグループのネイティブアプリ領域における 開発/ビジネスを牽引する横断組織 プラットフォーマーとの密な リレーション構築・情報収集 アプリ戦略の 実現 3(C) Recruit Technologies Co.,Ltd. All rights reserved. リクルートテクノロジーズのアプリ開発 R-tech スマートデバイスG
  4. 4. 4(C) Recruit Technologies Co.,Ltd. All rights reserved. 話すこと ここ3年半の モバイル領域の急激な変化と 共に歩んできた あるプッシュ通知基盤システム の変化/進化について
  5. 5. 5(C) Recruit Technologies Co.,Ltd. All rights reserved. 目次 リクルートとプッシュ通知との歩み 第1章 旧システムの限界に直面 第2章 スケーラビリティを求めての再構築 第3章 運用を通して顕在化した課題 第4章 まとめ
  6. 6. 6(C) Recruit Technologies Co.,Ltd. All rights reserved. 目次 リクルートとプッシュ通知との歩み 第1章 旧システムの限界に直面 第2章 スケーラビリティを求めての再構築 第3章 運用を通して顕在化した課題 第4章 まとめ
  7. 7. 7 Push通知とは? (C) Recruit Technologies Co.,Ltd. All rights reserved.
  8. 8. 8(C) Recruit Technologies Co.,Ltd. All rights reserved. Push! APNs Apple Push Notification Service スマートデバイスの待ち受け画面に送る通知 (アプリ起動しなくても表示される) プッシュ通知とは? Push! GCM Google Cloud Messaging アプリチーム
  9. 9. 9(C) Recruit Technologies Co.,Ltd. All rights reserved. メルマガに比べて開封率が高く、リアルタイム性があり 効果的な販促ツールとして認知されている プッシュ通知の特徴 ユーザのアクティブ率向上に効果的: • リアルタイム性を考慮した情報推薦 • 休眠ユーザの再起 アプリでの利用例: 新鮮度がある/話題になる ニュースをお届け! 登録条件に合致する 新着物件をお知らせ! 自分に 好意を持った人 をお知らせ!
  10. 10. 10 リクルートのプッシュ通知への 取り組みは2011年6月から (C) Recruit Technologies Co.,Ltd. All rights reserved.
  11. 11. 11 プッシュ通知対応の工数削減を目的に プッシュ通知基盤を フィジビリ・サービスとして 各アプリに展開 (C) Recruit Technologies Co.,Ltd. All rights reserved.
  12. 12. 12 プッシュ通知対応の工数削減を目的に プッシュ通知基盤を フィジビリ・サービスとして 各アプリに展開 Pusna Push Notification Aggregator プッシュ通知基盤
  13. 13. 13 当時のシステム構成 開発言語 Ruby 1.8系 FW Rails 2.3系 DB MySQL 5.4系 APNs デバイス登録 プッシュ依頼 Pusna GCM
  14. 14. 14 デバイス登録数の遷移 11年6月 プッシュ通知基盤 Pusna フィジビリ・サービス化 時間 登 録 デ バ イ ス 数 2011.06
  15. 15. 15 デバイス登録数の遷移 11年6月 時間 登 録 デ バ イ ス 数 プッシュ通知基盤 Pusna フィジビリ・サービス化 2011.06
  16. 16. 16 デバイス登録数の遷移 X,000,000 11年6月 13年5月 13年7月12年8月 時間
  17. 17. 17 デバイス登録数の遷移 X,000,000 11年6月 13年5月 13年7月12年8月 X00万デバイス越 時間 2012.08
  18. 18. 18 デバイス登録数の遷移 X5,000,000 11年6月 13年5月 時間
  19. 19. 19 デバイス登録数の遷移 X5,000,000 11年6月 13年5月 時間 樋口 リクルートテクノロジーズ入社 2013.05
  20. 20. 20 デバイス登録数の遷移 X5,000,000 11年6月 13年5月 2013.05 樋口 入社 この頃樋口は、
  21. 21. 21 デバイス登録数の遷移 X5,000,000 11年6月 13年5月 2013.05 樋口 入社 (幻の) アプリ開発に。
  22. 22. 22 デバイス登録数の遷移 X5,000,000 11年6月 13年5月 2013.05 樋口 入社 (幻の) アプリ開発に。
  23. 23. 23(C) Recruit Technologies Co.,Ltd. All rights reserved. 2ヶ月後
  24. 24. 24 デバイス登録数の遷移 X0,000,000 11年6月 13年7月
  25. 25. 25 デバイス登録数の遷移 X0,000,000 11年6月 13年7月 樋口 Pusna のチームリーダーに。 2013.07
  26. 26. 26 デバイス登録数の遷移 X0,000,000 11年6月 13年7月 樋口 Pusna のチームリーダーに。 2013.07 当時システムは既に 限界を迎えていた
  27. 27. 27 デバイス登録数の遷移 X0,000,000 11年6月 13年7月 樋口 Pusna のチームリーダーに。 2013.07 (システム構成図) デバイス登録 APNs Pusna GCM プッシュ依頼
  28. 28. 28 デバイス登録数の遷移 X0,000,000 11年6月 12年8月 13年5月 13年7月 2013.07 樋口 チームリーダー 抜擢 デバイス数 急増 APNs Pusna GCM プッシュ依頼 デバイス登録
  29. 29. 29 デバイス登録数の遷移 X0,000,000 11年6月 12年8月 13年5月 13年7月 2013.07 樋口 チームリーダー 抜擢 デバイス数 急増 APNs Pusna GCM プッシュ依頼 デバイス登録
  30. 30. 30 デバイス登録数の遷移 X0,000,000 11年6月 12年8月 13年5月 13年7月 2013.07 樋口 チームリーダー 抜擢 デバイス数 急増 APNs Pusna GCM プッシュ依頼 デバイス登録
  31. 31. 31(C) Recruit Technologies Co.,Ltd. All rights reserved. 当時のシステムで発生していた問題 問題1: 「配信スピードが遅く、 届けたいタイミングでメッセージが送れない。」 └1000万件の配信に1週間を要した。 問題2: 「高負荷にシステムが耐えられないため、 各アプリが好きな時間にプッシュ依頼できない。」 └各アプリ担当者のプッシュ時間を調整する必要あった。
  32. 32. 32(C) Recruit Technologies Co.,Ltd. All rights reserved. 当時のシステムで発生していた問題 問題1: 「配信スピードが遅く、 届けたいタイミングでメッセージが送れない。」 └1000万件の配信に1週間を要した。 問題2: 「高負荷にシステムが耐えられないため、 各アプリが好きな時間にプッシュ依頼できない。」 └各アプリ担当者のプッシュ時間を調整する必要あった。
  33. 33. 33(C) Recruit Technologies Co.,Ltd. All rights reserved. 当時のシステムで発生していた問題 問題1: 「配信スピードが遅く、 届けたいタイミングでメッセージが送れない。」 └1000万件の配信に1週間を要した。 問題2: 「高負荷にシステムが耐えられないため、 各アプリが好きな時間にプッシュ依頼できない。」 └各アプリ担当者のプッシュ時間を調整する必要あった。 配信 処理開始 配信 処理終了 問題1 特定時間帯を狙った訴求ができない (例: 昼休み) 昼休み 終了 効果的 効果が期待できない
  34. 34. 34(C) Recruit Technologies Co.,Ltd. All rights reserved. 当時のシステムで発生していた問題 問題1: 「配信スピードが遅く、 届けたいタイミングでメッセージが送れない。」 └1000万件の配信に1週間を要した。 問題2: 「高負荷にシステムが耐えられないため、 各アプリが好きな時間にプッシュ依頼できない。」 └各アプリ担当者のプッシュ時間を調整する必要あった。
  35. 35. 35(C) Recruit Technologies Co.,Ltd. All rights reserved. 当時のシステムで発生していた問題 問題1: 「配信スピードが遅く、 届けたいタイミングでメッセージが送れない。」 └1000万件の配信に1週間を要した。 問題2: 「高負荷にシステムが耐えられないため、 各アプリが好きな時間にプッシュ依頼できない。」 └各アプリ担当者のプッシュ時間を調整する必要あった。 当時、樋口の仕事 問題2 好きな時間にプッシュ依頼ができない。
  36. 36. 36(C) Recruit Technologies Co.,Ltd. All rights reserved. 当時のシステムで発生していた問題 問題1: 「高負荷にシステムが耐えられないため、 各アプリが好きな時間にプッシュ依頼できない。」 各アプリ担当者のプッシュ時間を調整する必要あった。 問題2: 「配信スピードが遅く、 カスタマーに届けたいメッセージが送れない。」 1000万件の配信に1週間を要した。 当時、樋口の仕事 システム担当者 今日のプッシュスケジュール 教えてください
  37. 37. 37(C) Recruit Technologies Co.,Ltd. All rights reserved. 当時のシステムで発生していた問題 問題1: 「高負荷にシステムが耐えられないため、 各アプリが好きな時間にプッシュ依頼できない。」 各アプリ担当者のプッシュ時間を調整する必要あった。 問題2: 「配信スピードが遅く、 カスタマーに届けたいメッセージが送れない。」 1000万件の配信に1週間を要した。 当時、樋口の仕事 Aアプリ担当 12時からプッシュする予定です。 システム担当者 今日のプッシュスケジュール 教えてください
  38. 38. 38(C) Recruit Technologies Co.,Ltd. All rights reserved. 当時のシステムで発生していた問題 問題1: 「高負荷にシステムが耐えられないため、 各アプリが好きな時間にプッシュ依頼できない。」 各アプリ担当者のプッシュ時間を調整する必要あった。 問題2: 「配信スピードが遅く、 カスタマーに届けたいメッセージが送れない。」 1000万件の配信に1週間を要した。 当時、樋口の仕事 Aアプリ担当 12時からプッシュする予定です。 システム担当者 今日のプッシュスケジュール 教えてください Bアプリ担当 12時からプッシュする予定です。
  39. 39. 39(C) Recruit Technologies Co.,Ltd. All rights reserved. 当時のシステムで発生していた問題 問題1: 「高負荷にシステムが耐えられないため、 各アプリが好きな時間にプッシュ依頼できない。」 各アプリ担当者のプッシュ時間を調整する必要あった。 問題2: 「配信スピードが遅く、 カスタマーに届けたいメッセージが送れない。」 1000万件の配信に1週間を要した。 当時、樋口の仕事 Aアプリ担当 12時からプッシュする予定です。 システム担当者 今日のプッシュスケジュール 教えてください Bアプリ担当 12時からプッシュする予定です。 Cアプリ担当 12時からプッシュしたいです。
  40. 40. 40(C) Recruit Technologies Co.,Ltd. All rights reserved. 当時のシステムで発生していた問題 問題1: 「高負荷にシステムが耐えられないため、 各アプリが好きな時間にプッシュ依頼できない。」 各アプリ担当者のプッシュ時間を調整する必要あった。 問題2: 「配信スピードが遅く、 カスタマーに届けたいメッセージが送れない。」 1000万件の配信に1週間を要した。 当時、樋口の仕事Aアプリ担当 12時からプッシュする予定です。 Bアプリ担当 12時からプッシュする予定です。 Cアプリ担当 12時からプッシュしたいです。 システム担当者の頭の中 3アプリ同時は無理。。 Aアプリの規模は大きいから時間かかるし、 Bはニュースアプリだから後回しできない。 Cは…(略)。 B->A->Cで調整してみよう。
  41. 41. 41(C) Recruit Technologies Co.,Ltd. All rights reserved. 当時のシステムで発生していた問題 問題1: 「高負荷にシステムが耐えられないため、 各アプリが好きな時間にプッシュ依頼できない。」 各アプリ担当者のプッシュ時間を調整する必要あった。 問題2: 「配信スピードが遅く、 カスタマーに届けたいメッセージが送れない。」 1000万件の配信に1週間を要した。 当時、樋口の仕事 Bアプリ担当 12時からプッシュする予定です。 Cアプリ担当 12時からプッシュしたいです。 システム担当者 >Aさん プッシュ依頼時刻ですが、14時からに 変更できないでしょうか?? >Cさん お昼はシステムが混み合っておりまして、 夕方頃プッシュが可能になる見込みです。 追って、ご案内させてください。 大変申し訳ございません。
  42. 42. 42(C) Recruit Technologies Co.,Ltd. All rights reserved. 当時のシステムで発生していた問題 問題1: 「高負荷にシステムが耐えられないため、 各アプリが好きな時間にプッシュ依頼できない。」 各アプリ担当者のプッシュ時間を調整する必要あった。 問題2: 「配信スピードが遅く、 カスタマーに届けたいメッセージが送れない。」 1000万件の配信に1週間を要した。 当時、樋口の仕事変更できないでしょうか?? >Cさん お昼はシステムが混み合っておりまして、 夕方頃プッシュが可能になる見込みです。 追って、ご案内させてください。 大変申し訳ございません。 Cアプリ担当
  43. 43. 43(C) Recruit Technologies Co.,Ltd. All rights reserved. 当時のシステムで発生していた問題 問題1: 「高負荷にシステムが耐えられないため、 各アプリが好きな時間にプッシュ依頼できない。」 各アプリ担当者のプッシュ時間を調整する必要あった。 問題2: 「配信スピードが遅く、 カスタマーに届けたいメッセージが送れない。」 1000万件の配信に1週間を要した。 当時、樋口の仕事 大変申し訳ございません。 Cアプリ担当 システム担当者 本当に申し訳ございません。。
  44. 44. 44(C) Recruit Technologies Co.,Ltd. All rights reserved. 当時のシステムで発生していた問題 問題1: 「高負荷にシステムが耐えられないため、 各アプリが好きな時間にプッシュ依頼できない。」 各アプリ担当者のプッシュ時間を調整する必要あった。 問題2: 「配信スピードが遅く、 カスタマーに届けたいメッセージが送れない。」 1000万件の配信に1週間を要した。 当時、樋口の仕事 大変申し訳ございません。 Cアプリ担当 システム担当者 本当に申し訳ございません。。 当時、樋口の仕事 プッシュ配信の交通整備人 俺・・・ 何してんだろう
  45. 45. 45(C) Recruit Technologies Co.,Ltd. All rights reserved. 当時のシステムで発生していた問題 問題1: 「配信スピードが遅く、 届けたいタイミングでメッセージが送れない。」 └1000万件の配信に1週間を要した。 問題2: 「高負荷にシステムが耐えられないため、 各アプリが好きな時間にプッシュ依頼できない。」 └各アプリ担当者のプッシュ時間を調整する必要あった。 キャパシティ限界を迎えていた
  46. 46. 46(C) Recruit Technologies Co.,Ltd. All rights reserved. 目次 リクルートとプッシュ通知との歩み 第1章 旧システムの限界に直面 第2章 スケーラビリティを求めての再構築 第3章 運用を通して顕在化した課題 第4章 まとめ
  47. 47. 47(C) Recruit Technologies Co.,Ltd. All rights reserved. プッシュ配信基盤の再構築 2013年夏 Pusnaの再構築が決定!
  48. 48. 48(C) Recruit Technologies Co.,Ltd. All rights reserved. 再構築の背景 Pusnaの再構築が決定!2013.夏 論点 ・外部ASPの利用も考慮に入れ検討。 └各アプリチームの要望に迅速対応できる内製化に。 アプリチームの要望例 ・既存システムとの連携 ・レコメンドプッシュ ・セキュリティ観点 (事業会社間でのアクセス制限など)
  49. 49. 49(C) Recruit Technologies Co.,Ltd. All rights reserved. 再構築で解決する課題 課題1: 届けたいタイミングでメッセージが送りきれない └Realtime 課題2: 各アプリ担当が好きな時間にプッシュ依頼できない └ Scalable キャパシティ問題の解決が最優先
  50. 50. 50 Realtime & Scalable 再構築のコンセプト
  51. 51. 51 Realtime & Scalable 数千万台デバイスのアクセスに耐える 1000万人に15分以内に配信できる 再構築のコンセプト
  52. 52. 52 Pusna Push Notification Aggregator 旧プッシュ通知基盤
  53. 53. 53 Pusna Realtime Scalable
  54. 54. 54 Pusna-RS Push Notification Aggregator Realtime & Scalable 新プッシュ通知基盤
  55. 55. 55(C) Recruit Technologies Co.,Ltd. All rights reserved. Realtime & Scalable 実現のため 基本アイディア Scalable └単純化と分散 Realtime └高速化 └各機能の高速化 └IOの高速化
  56. 56. 機能間の 非同期連携 56(C) Recruit Technologies Co.,Ltd. All rights reserved. Realtime & Scalable 実現のため 基本アイディア 利用ツール Scalable └単純化と分散 Realtime └高速化 └各機能の高速化 └IOの高速化 DynamoDBによる I/Oの高速化 非同期I/Oの活用 I/Oの最適化
  57. 57. 機能間の 非同期連携 57(C) Recruit Technologies Co.,Ltd. All rights reserved. Realtime & Scalable 実現のため 基本アイディア 利用ツール Scalable └単純化と分散 Realtime └高速化 └各機能の高速化 └IOの高速化 DynamoDBによる I/Oの高速化 非同期I/Oの活用 I/Oの最適化APNs 旧Pusna GCM デバイス登録 プッシュ依頼 改善ポイント①
  58. 58. 機能間の 非同期連携 58(C) Recruit Technologies Co.,Ltd. All rights reserved. Realtime & Scalable 実現のため 基本アイディア 利用ツール Scalable └単純化と分散 Realtime └高速化 └各機能の高速化 └IOの高速化 DynamoDBによる I/Oの高速化 非同期I/Oの活用 I/Oの最適化APNs 旧Pusna GCM デバイス登録 プッシュ依頼 改善ポイント①
  59. 59. 機能間の 非同期連携 59(C) Recruit Technologies Co.,Ltd. All rights reserved. Realtime & Scalable 実現のため 基本アイディア 利用ツール Scalable └単純化と分散 Realtime └高速化 └各機能の高速化 └IOの高速化 DynamoDBによる I/Oの高速化 非同期I/Oの活用 I/Oの最適化APNs 旧Pusna GCM デバイス登録 プッシュ依頼 改善ポイント① 機能分割
  60. 60. 機能間の 非同期連携 60(C) Recruit Technologies Co.,Ltd. All rights reserved. Realtime & Scalable 実現のため 基本アイディア 利用ツール Scalable └単純化と分散 Realtime └高速化 └各機能の高速化 └IOの高速化 DynamoDBによる I/Oの高速化 非同期I/Oの活用 I/Oの最適化
  61. 61. 61(C) Recruit Technologies Co.,Ltd. All rights reserved. • Amazon Simple Queue Service(SQS)はAWSが提供する 分散キューサービス。 • 高速で信頼性・スケーラビリティに優れ、低コストに 使うことが出来る。 SQSとは
  62. 62. 機能間の 非同期連携 62(C) Recruit Technologies Co.,Ltd. All rights reserved. Realtime & Scalable 実現のため 基本アイディア 利用ツール Scalable └単純化と分散 Realtime └高速化 └各機能の高速化 └IOの高速化 DynamoDBによる I/Oの高速化 非同期I/Oの活用 I/Oの最適化 改善ポイント② APNs 旧Pusna GCM
  63. 63. 機能間の 非同期連携 63(C) Recruit Technologies Co.,Ltd. All rights reserved. Realtime & Scalable 実現のため 基本アイディア 利用ツール Scalable └単純化と分散 Realtime └高速化 └各機能の高速化 └IOの高速化 DynamoDBによる I/Oの高速化 非同期I/Oの活用 I/Oの最適化 改善ポイント② APNs 旧Pusna GCM
  64. 64. 機能間の 非同期連携 64(C) Recruit Technologies Co.,Ltd. All rights reserved. Realtime & Scalable 実現のため 基本アイディア 利用ツール Scalable └単純化と分散 Realtime └高速化 └各機能の高速化 └IOの高速化 DynamoDBによる I/Oの高速化 非同期I/Oの活用 I/Oの最適化 改善ポイント② I/Oの高速化 APNs 旧Pusna GCM
  65. 65. 機能間の 非同期連携 65(C) Recruit Technologies Co.,Ltd. All rights reserved. Realtime & Scalable 実現のため 基本アイディア 利用ツール Scalable └単純化と分散 Realtime └高速化 └各機能の高速化 └IOの高速化 DynamoDBによる I/Oの高速化 非同期I/Oの活用 I/Oの最適化
  66. 66. 66(C) Recruit Technologies Co.,Ltd. All rights reserved. DynamoDBとは • Amazon DynamoDBはAWSにて提供される分散KVS。 • 複数のAZ(データセンター)にわたってレプリケーション されることで高い信頼性が保証されている。 • SSDで動作しておりデータ量の変化に関係なく 高速に動作する。 • スキーマレスにデータを扱える。
  67. 67. 機能間の 非同期連携 67(C) Recruit Technologies Co.,Ltd. All rights reserved. Realtime & Scalable 実現のため 基本アイディア 利用ツール Scalable └単純化と分散 Realtime └高速化 └各機能の高速化 └IOの高速化 DynamoDBによる I/Oの高速化 非同期I/Oの活用 I/Oの最適化
  68. 68. 機能間の 非同期連携 68(C) Recruit Technologies Co.,Ltd. All rights reserved. Realtime & Scalable 実現のため 基本アイディア 利用ツール Scalable └単純化と分散 Realtime └高速化 └各機能の高速化 └IOの高速化 DynamoDBによる I/Oの高速化 非同期I/Oの活用 I/Oの最適化
  69. 69. 機能間の 非同期連携 69(C) Recruit Technologies Co.,Ltd. All rights reserved. Realtime & Scalable 実現のため 基本アイディア 利用ツール Scalable └単純化と分散 Realtime └高速化 └各機能の高速化 └IOの高速化 DynamoDBによる I/Oの高速化 非同期I/Oの活用 I/Oの最適化 「高速化」&「単純化と分割」で Realtime & Scalable を実現
  70. 70. 70(C) Recruit Technologies Co.,Ltd. All rights reserved. 積極的に最新技術を採用 AWSの機能をふんだんに利用
  71. 71. 71(C) Recruit Technologies Co.,Ltd. All rights reserved. 積極的に最新技術を採用 AWSの機能をふんだんに利用 リクルート内サービスで運用実績のない ソフトウェアも積極採用 ※2013年秋頃当時
  72. 72. 72 Pusna-RS Push Notification Aggregator Realtime & Scalable アーキテクチャについて
  73. 73. 73(C) Recruit Technologies Co.,Ltd. All rights reserved. DynamoDB elasticsearch クラスタ デバイス登録 リクエスト APNs/GCM サーバ 登録API データ登録 配信worker SQS 登録worker システム管理・操作用 Web UI 管理API データ参照 事業サーバ 配信担当者 全体構成 SQS
  74. 74. 74(C) Recruit Technologies Co.,Ltd. All rights reserved. DynamoDB elasticsearch クラスタ デバイス登録 リクエスト APNs/GCM サーバ 登録API データ登録 配信worker 登録worker 管理API データ参照 事業サーバ 配信担当者 全体構成 システム管理・操作用 Web UI SQS SQS SQSを利用した 機能間の非同期連携 を実現
  75. 75. 75(C) Recruit Technologies Co.,Ltd. All rights reserved. DynamoDB elasticsearch クラスタ デバイス登録 リクエスト APNs/GCM サーバ 登録API データ登録 配信worker 登録worker 管理API データ参照 事業サーバ 配信担当者 全体構成 システム管理・操作用 Web UI SQS SQS I/Oの高速化
  76. 76. 76(C) Recruit Technologies Co.,Ltd. All rights reserved. DynamoDB elasticsearch クラスタ デバイス登録 リクエスト APNs/GCM サーバ 登録API データ登録 配信worker SQS 登録worker システム管理・操作用 Web UI 管理API データ参照 事業サーバ 配信担当者 全体構成 ①デバイス登録 SQS
  77. 77. 77(C) Recruit Technologies Co.,Ltd. All rights reserved. DynamoDB elasticsearch クラスタ デバイス登録 リクエスト APNs/GCM サーバ 登録API データ登録 配信worker SQS 登録worker システム管理・操作用 Web UI 管理API データ参照 事業サーバ 配信担当者 全体構成 SQS ②配信登録
  78. 78. 78(C) Recruit Technologies Co.,Ltd. All rights reserved. DynamoDB elasticsearch クラスタ デバイス登録 リクエスト APNs/GCM サーバ 登録API データ登録 配信worker SQS 登録worker システム管理・操作用 Web UI 管理API データ参照 事業サーバ 配信担当者 全体構成 SQS ③配信依頼
  79. 79. 79(C) Recruit Technologies Co.,Ltd. All rights reserved. DynamoDB elasticsearch クラスタ デバイス登録 リクエスト APNs/GCM サーバ 登録API データ登録 配信worker SQS 登録worker システム管理・操作用 Web UI 管理API データ参照 事業サーバ 配信担当者 デバイス登録処理 ①デバイス登録 SQS
  80. 80. 80 DynamoDB elasticsearch クラスタ デバイス登録 リクエスト APNs/GCM サーバ 登録API データ登録 配信worker SQS 登録worker システム管理・操作用 Web UI 管理API データ参照 事業サーバ 配信担当者 デバイス登録処理 (C) Recruit Technologies Co.,Ltd. All rights reserved. SQS スマホアプリ内の PusnaRS用SDK経由で 登録APIにデバイス情報を送信 ①デバイス登録
  81. 81. 81(C) Recruit Technologies Co.,Ltd. All rights reserved. DynamoDB elasticsearch クラスタ デバイス登録 リクエスト APNs/GCM サーバ 登録API データ登録 配信worker SQS 登録worker システム管理・操作用 Web UI 管理API データ参照 事業サーバ 配信担当者 デバイス登録処理 SQS デバイス情報をDynamoDBと Elasticsearchに登録 ①デバイス登録
  82. 82. 82(C) Recruit Technologies Co.,Ltd. All rights reserved. DynamoDB elasticsearch クラスタ デバイス登録 リクエスト APNs/GCM サーバ 登録API データ登録 配信worker SQS 登録worker システム管理・操作用 Web UI 管理API データ参照 事業サーバ 配信担当者 配信登録 SQS ②配信登録
  83. 83. 83(C) Recruit Technologies Co.,Ltd. All rights reserved. DynamoDB elasticsearch クラスタ デバイス登録 リクエスト APNs/GCM サーバ 登録API データ登録 配信worker SQS 登録worker システム管理・操作用 Web UI 管理API 事業サーバ 配信担当者 配信登録 SQS ②配信登録 配信者又は事業サーバから PUSH配信をリクエスト
  84. 84. 84(C) Recruit Technologies Co.,Ltd. All rights reserved. DynamoDB elasticsearch クラスタ デバイス登録 リクエスト APNs/GCM サーバ 登録API データ登録 配信worker SQS 登録worker システム管理・操作用 Web UI 管理API データ参照 事業サーバ 配信担当者 配信依頼処理 SQS ③配信依頼
  85. 85. 85(C) Recruit Technologies Co.,Ltd. All rights reserved. DynamoDB elasticsearch クラスタ デバイス登録 リクエスト APNs/GCM サーバ 登録API データ登録 配信worker SQS 登録worker システム管理・操作用 Web UI 管理API 事業サーバ 配信担当者 配信依頼処理 SQS ③配信依頼 配信要求を元に 対象デバイスを抽出 配信タイプに応じて DynamoDB または elasticsearchから デバイス情報を抽出
  86. 86. 86(C) Recruit Technologies Co.,Ltd. All rights reserved. DynamoDB elasticsearch クラスタ デバイス登録 リクエスト APNs/GCM サーバ 登録API データ登録 配信worker SQS 登録worker システム管理・操作用 Web UI 管理API 事業サーバ 配信担当者 配信依頼処理 SQS ③配信依頼 抽出したデバイス情報を APNs又はGCMへ送信
  87. 87. 87 [PR]詳細については@IT連載記事を参照 http://www.atmarkit.co.jp/ait/articles/1412/18/news022.html (C) Recruit Technologies Co.,Ltd. All rights reserved.
  88. 88. 88 結果
  89. 89. 89 再構築 BEFORE / AFTER ✔□ Realtime 配信スピード: (旧) 秒間最大41件 (新) 秒間最大 14,000件 1000万台配信実績: (旧) 1週間 ※(分割配信) (新) 12分
  90. 90. 90 再構築 BEFORE / AFTER ✔ ✔ □ Realtime 配信スピード: (旧) 秒間最大41件 (新) 秒間最大 14,000件 1000万台配信実績: (旧) 1週間 ※(分割配信) (新) 12分 □ Scalable 登録デバイス数が数千万を超えた現在も リリースから1年以上、完全無停止で安定稼働中
  91. 91. 91 再構築 BEFORE / AFTER ✔ ✔ □ Realtime 配信スピード: (旧) 秒間最大41件 (新) 秒間最大 14,000件 1000万台配信実績: (旧) 1週間 ※(分割配信) (新) 12分 □ Scalable 登録デバイス数が数千万を超えた現在も リリースから1年以上、完全無停止で安定稼働中
  92. 92. 92 そのシステムがスマートデバイスの 急速な普及により大変な状況に! そして 平穏な日々を手に入れた
  93. 93. 93(C) Recruit Technologies Co.,Ltd. All rights reserved. 目次 リクルートとプッシュ通知との歩み 第1章 旧システムの限界に直面 第2章 スケーラビリティを求めての再構築 第3章 運用を通して顕在化した課題 第4章 まとめ
  94. 94. 94(C) Recruit Technologies Co.,Ltd. All rights reserved. 目次 リクルートとプッシュ通知との歩み 第1章 旧システムの限界に直面 第2章 スケーラビリティを求めての再構築 第3章 運用を通して顕在化した課題 第4章 まとめ
  95. 95. 95 そのシステムがスマートデバイスの 急速な普及により大変な状況に! 平穏な日々を手に入れた
  96. 96. 96 そのシステムがスマートデバイスの 急速な普及により大変な状況に! 平穏な日々を手に入れた はずだった・・・
  97. 97. 97 ある日の定時後。。 完璧に作りきった Pusna-RS だったが、 本格運用中に発覚した 事例を3つ紹介 この章で話すこと (C) Recruit Technologies Co.,Ltd. All rights reserved.
  98. 98. 98 事例① (C) Recruit Technologies Co.,Ltd. All rights reserved.
  99. 99. 99 ある日の定時後 アラートメールを受信
  100. 100. 100 ある日の定時後 アラートメールを受信 デバイス登録キュー が詰まっている (閾値1,000) ※ 稀に発生していた (C) Recruit Technologies Co.,Ltd. All rights reserved.
  101. 101. 101 ある日の定時後 アラートメールを受信 デバイス登録キュー が詰まっている (閾値1,000) ※ 稀に発生していた 説明 (C) Recruit Technologies Co.,Ltd. All rights reserved.
  102. 102. 102 デバイス登録のキュー詰まりについて 登録 API 登録 Worker キューの処理スピード ≦ 登録 キュー エンキュー処理 デバイス登録API リクエスト デキュー処理 DynamoDBへの 書込み (C) Recruit Technologies Co.,Ltd. All rights reserved.
  103. 103. 103 デバイス登録のキュー詰まりについて 登録 API 登録 Worker キューの処理スピード ≦ 登録 キュー エンキュー処理 デバイス登録API リクエスト デキュー処理 DynamoDBへの 書込み DynamoDBで書込みエラーが発生しないため キュー詰まりは発生しない (C) Recruit Technologies Co.,Ltd. All rights reserved.
  104. 104. 104 デバイス登録のキュー詰まりについて キューの処理スピード > エンキュー処理 デバイス登録API リクエスト デキュー処理 DynamoDBへの 書込み 登録API 登録Worker登録キュー (C) Recruit Technologies Co.,Ltd. All rights reserved.
  105. 105. 105 デバイス登録のキュー詰まりについて キューの処理スピード > エンキュー処理 デバイス登録API リクエスト デキュー処理 DynamoDBへの 書込み スループットエラーが発生 登録API 登録Worker登録キュー リトライ処理開始 (C) Recruit Technologies Co.,Ltd. All rights reserved.
  106. 106. 106 デバイス登録のキュー詰まりについて キューの処理スピード > エンキュー処理 デバイス登録API リクエスト デキュー処理 DynamoDBへの 書込み 登録API 登録Worker登録キュー (C) Recruit Technologies Co.,Ltd. All rights reserved.
  107. 107. 107 デバイス登録のキュー詰まりについて キューの処理スピード > エンキュー処理 デバイス登録API リクエスト デキュー処理 DynamoDBへの 書込み DynamoDBで書込みエラーが発生し 処理が止まるため、キューが詰まりが発生する。 登録API 登録Worker登録キュー (C) Recruit Technologies Co.,Ltd. All rights reserved.
  108. 108. 登録キュー 登録Worker 108 デバイス登録のキュー詰まりについて 登録API キュー詰まり対策 (C) Recruit Technologies Co.,Ltd. All rights reserved. スループットエラー発生中
  109. 109. 登録キュー 登録Worker 109 デバイス登録のキュー詰まりについて 登録API 該当アプリのDynamoDB スループット値(Write)を上げる キュー詰まり対策 (C) Recruit Technologies Co.,Ltd. All rights reserved. スループットエラー発生中
  110. 110. 登録キュー 登録Worker 110 デバイス登録のキュー詰まりについて 登録API 該当アプリのDynamoDB スループット値(Write)を上げる キュー詰まり対策 アプリC アプリB アプリA (C) Recruit Technologies Co.,Ltd. All rights reserved.
  111. 111. 登録キュー 登録Worker 111 デバイス登録のキュー詰まりについて 登録API 該当アプリのDynamoDB スループット値(Write)を上げる キュー詰まり対策 アプリC アプリB アプリA スループット値を上げる (C) Recruit Technologies Co.,Ltd. All rights reserved.
  112. 112. 登録キュー 登録Worker 112 デバイス登録のキュー詰まりについて 登録API 該当アプリのDynamoDB スループット値(Write)を上げる キュー詰まり対策 アプリC アプリB アプリA スループットエラー発生中スループットエラー緩和される (C) Recruit Technologies Co.,Ltd. All rights reserved.
  113. 113. 登録キュー 登録Worker 113 デバイス登録のキュー詰まりについて 登録API 該当アプリのDynamoDB スループット値(Write)を上げる キュー詰まり対策 (C) Recruit Technologies Co.,Ltd. All rights reserved.
  114. 114. 登録キュー 登録Worker 114 デバイス登録のキュー詰まりについて 登録API 該当アプリのDynamoDB スループット値(Write)を上げる キュー詰まり対策 (C) Recruit Technologies Co.,Ltd. All rights reserved. 詰まり解消
  115. 115. 115 ある日の定時後 アラートメールを受信 デバイス登録キュー が詰まっている (閾値1,000) [再掲] (C) Recruit Technologies Co.,Ltd. All rights reserved.
  116. 116. 116 ある日の定時後 アラートメールを受信 デバイス登録キュー が詰まっている (閾値1,000) [再掲] (型化されている運用通り) 該当アプリのDynamoDB スループット値(write)を上げた。 対応
  117. 117. 117 ある日の定時後 アラートメールを受信 デバイス登録キュー が詰まっている (閾値1,000) [再掲] (型化されている運用通り) 該当アプリのDynamoDB スループット値(write)を上げた。 想定 対応
  118. 118. 118 ある日の定時後 アラートメールを受信 デバイス登録キュー が詰まっている (閾値1,000) [再掲] (型化されている運用通り) 該当アプリのDynamoDB スループット値(write)を上げた。 閾値 t キューの深さ Writeスループット向上 想定 対応
  119. 119. 119 ある日の定時後 アラートメールを受信 デバイス登録キュー が詰まっている (閾値1,000) [再掲] (型化されている運用通り) 該当アプリのDynamoDB スループット値(write)を上げた。 実際 対応
  120. 120. 120 ある日の定時後 アラートメールを受信 デバイス登録キュー が詰まっている (閾値1,000) [再掲] (型化されている運用通り) 該当アプリのDynamoDB スループット値(write)を上げた。 実際 対応 閾値 (1,000) t キューの深さ Writeスループット向上
  121. 121. 121 ある日の定時後 アラートメールを受信 デバイス登録キュー が詰まっている (閾値1,000) [再掲] (型化されている運用通り) 該当アプリのDynamoDB スループット値(write)を上げた。 実際 対応 キューの深さ 140万件まで膨れ上がる (゚∀゚;)ヤ・・・ャバ. 閾値 (1,000) t キューの深さ Writeスループット向上
  122. 122. 122 該当アプリ以外の処理も 遅延することに デバイス登録処理遅れています
  123. 123. 123 起きていた現象 スマホアプリの実装ミス デバイス登録完了のコールバックで 再度デバイス登録をする実装に。 原 因 登録API 登録Worker登録キュー (C) Recruit Technologies Co.,Ltd. All rights reserved.
  124. 124. リクエスト 124 起きていた現象 レスポンス スマホアプリの実装ミス デバイス登録完了のコールバックで 再度デバイス登録をする実装に。 原 因 デバイス登録の無限ループ が起きていた 登録API 登録Worker登録キュー (C) Recruit Technologies Co.,Ltd. All rights reserved.
  125. 125. 125 起きていた現象 スマホアプリの実装ミス デバイス登録完了のコールバックで 再度デバイス登録をする実装に。 原 因 登録API 登録Worker登録キュー (C) Recruit Technologies Co.,Ltd. All rights reserved. 徐々にループする端末も増える
  126. 126. 126 起きていた現象 登録API スマホアプリの実装ミス デバイス登録完了のコールバックで 再度デバイス登録をする実装に。 原 因 スループットエラーが発生 登録キュー 登録Worker (C) Recruit Technologies Co.,Ltd. All rights reserved.
  127. 127. 127 起きていた現象 登録API スマホアプリの実装ミス デバイス登録完了のコールバックで 再度デバイス登録をする実装に。 原 因 スループットエラーが発生 ループ端末も増え続ける 登録キュー 登録Worker (C) Recruit Technologies Co.,Ltd. All rights reserved.
  128. 128. 128 起きていた現象 登録API スマホアプリの実装ミス デバイス登録完了のコールバックで 再度デバイス登録をする実装に。 原 因 スループットエラーが発生 キュー詰まり発生ループ端末も増え続ける 登録キュー 登録Worker (C) Recruit Technologies Co.,Ltd. All rights reserved.
  129. 129. 129 起きていた現象 登録API 登録キュー 登録Worker (C) Recruit Technologies Co.,Ltd. All rights reserved. 誤った打ち手1
  130. 130. 130 起きていた現象 登録API 登録キュー 登録Worker (C) Recruit Technologies Co.,Ltd. All rights reserved. DynamoDBスループット値を上げる 誤った打ち手1
  131. 131. 131 起きていた現象 登録API 登録キュー 登録Worker (C) Recruit Technologies Co.,Ltd. All rights reserved. スループット値を上げる DynamoDBスループット値を上げる 誤った打ち手1
  132. 132. 132 起きていた現象 登録API 登録キュー 登録Worker (C) Recruit Technologies Co.,Ltd. All rights reserved. デバイス登録リクエストのループは継続するため キュー詰まりは解消しない DynamoDBスループット値を上げる 誤った打ち手1
  133. 133. 133 起きていた現象 登録API 登録キュー 登録Worker (C) Recruit Technologies Co.,Ltd. All rights reserved.
  134. 134. 134 起きていた現象 登録API 登録キュー 登録Worker (C) Recruit Technologies Co.,Ltd. All rights reserved. ループ端末も増え続ける
  135. 135. 135 起きていた現象 登録API 登録キュー 登録Worker (C) Recruit Technologies Co.,Ltd. All rights reserved. ループ端末も増え続ける 負荷が高まる
  136. 136. 136 起きていた現象 登録API 登録キュー 登録Worker (C) Recruit Technologies Co.,Ltd. All rights reserved. 誤った打ち手2
  137. 137. 137 起きていた現象 登録API 登録キュー 登録Worker (C) Recruit Technologies Co.,Ltd. All rights reserved. 登録APIサーバーのスケールアウト(2台->10台) 誤った打ち手2
  138. 138. 138 起きていた現象 登録API 登録キュー 登録Worker (C) Recruit Technologies Co.,Ltd. All rights reserved. 登録APIサーバーのスケールアウト(2台->10台) 誤った打ち手2
  139. 139. 139 起きていた現象 登録API 登録キュー 登録Worker (C) Recruit Technologies Co.,Ltd. All rights reserved. 登録APIサーバーのスケールアウト(2台->10台) 誤った打ち手2 さらに無限ループが加速
  140. 140. 140 起きていた現象 登録キュー (詰まり中) 登録APIサーバーのスケールアウト(2台->10台) 誤った打ち手2 さらに無限ループが加速
  141. 141. 141 起きていた現象 登録キュー (詰まり中) 登録APIサーバーのスケールアウト(2台->10台) 誤った打ち手2 さらに無限ループが加速 無限ループの影響で 他アプリのデバイス登録の遅延が発生した
  142. 142. 142 単体のスマホアプリのミスによる影響が 他アプリにも生じてしまうアーキテクチャであること 着目した問題点 スマホアプリの修正版を緊急リリース 暫定対応 デバイス登録キューをアプリ毎に分割 打ち手 事象「無限デバイス登録」のまとめ (C) Recruit Technologies Co.,Ltd. All rights reserved.
  143. 143. 143(C) Recruit Technologies Co.,Ltd. All rights reserved. 登録API 登録Worker デバイス登録キューELB DynamoDB elasticsearch デバイス登録 アプリA アプリA アプリB アプリB アプリC 全てのアプリのデバイス登録処理を 一つのキュー(SQS)で管理 BEFORE アプリAから大量のアクセスで アプリB,Cの登録処理が遅延しまった
  144. 144. 144(C) Recruit Technologies Co.,Ltd. All rights reserved. 登録API 登録Worker アプリA登録キュー ELB DynamoDB elasticsearch デバイス登録 アプリA アプリA アプリB アプリB アプリC 一つのキューから大量に取得しな いように取得数を制御している アプリB登録キュー アプリC登録キュー アプリ毎にキュー(SQS)を分割することで 遅延リスクを最小限に AFTER
  145. 145. 145 事例からの学び プラットフォームとして 単体アプリの影響が 全体におよぶ構成にしてはならない
  146. 146. 146 事例② (C) Recruit Technologies Co.,Ltd. All rights reserved.
  147. 147. 147 ある日の午後 あるサービス担当者からの訴え (C) Recruit Technologies Co.,Ltd. All rights reserved.
  148. 148. 148 ある日の午後 あるサービス担当者からの訴え プッシュ後 サービス側のサーバに アクセス集中して 耐えられません!何とかして!
  149. 149. (C) Recruit Technologies Co.,Ltd. All rights reserved. 149 起きていた現象 APNs/GCM Pusna-RS プッシュ依頼
  150. 150. (C) Recruit Technologies Co.,Ltd. All rights reserved. 150 起きていた現象 APNs/GCM Pusna-RS 配信
  151. 151. (C) Recruit Technologies Co.,Ltd. All rights reserved. 151 起きていた現象 APNs/GCM Pusna-RS
  152. 152. (C) Recruit Technologies Co.,Ltd. All rights reserved. 152 起きていた現象 APNs/GCM Pusna-RS デバイス登録 リクエスト
  153. 153. 153 起きていた現象 APNs/GCM デバイス登録 リクエスト プッシュ後 アプリ起動時に発生する デバイス登録の一斉リクエスト 問題なく捌けていた Pusna-RS
  154. 154. 154 起きていた現象 APNs/GCM Pusna-RS デバイス登録 リクエスト 一方で サービス側のサーバは 悲鳴を挙げていた しかし サービス
  155. 155. 155 起きていた現象 APNs/GCM Pusna-RS サービス (C) Recruit Technologies Co.,Ltd. All rights reserved.
  156. 156. 156 起きていた現象 APNs/GCM Pusna-RS サービスに対する リクエスト サービス (C) Recruit Technologies Co.,Ltd. All rights reserved.
  157. 157. 157 起きていた現象 APNs/GCM Pusna-RS サービスに対する リクエスト サービス (C) Recruit Technologies Co.,Ltd. All rights reserved.
  158. 158. 158 起きていた現象 APNs/GCM Pusna-RS サービスに対する リクエスト サービス 例えば、500万デバイスに プッシュする場合 7分弱※1の間に アプリのアクティブユーザが 50万※2増えることになる ※1 配信スピード: 秒間14,000件 換算 ※2 プッシュ通知の開封率: 10% 換算
  159. 159. スピード 違反
  160. 160. スピード 違反ではなく 考慮不足
  161. 161. 161 対応 配信Worker配信キュー APNs/GCM READ 配信ごとに大まかな 秒間配信数を指定できるように修正 打ち手 修正内容 プログラム内でデータソースへのScan間隔を制御 することで配信速度をコントロール 一定間隔を置いて アクセス (C) Recruit Technologies Co.,Ltd. All rights reserved. データソース
  162. 162. 162 事例からの学び サービス全体のユースケースを 考慮したアーキテクチャにすべき
  163. 163. 163 事例③ (C) Recruit Technologies Co.,Ltd. All rights reserved.
  164. 164. 164 今取り組んでいる話 当初想定していた2倍のスピードで 登録デバイス数が 想定のX千万に到達! (C) Recruit Technologies Co.,Ltd. All rights reserved.
  165. 165. 165 想定Doc数 5,000万 シャード 4 レプリカ数 3 ノード数 6 Elasticsearchの構成 クラスター情報 想定Doc数を超え 1シャード当たり 1000万を超える データ量 (C) Recruit Technologies Co.,Ltd. All rights reserved.
  166. 166. 166 想定Doc数 5,000万 シャード 4 レプリカ数 3 ノード数 6 Elasticsearchの構成 クラスター情報 想定Doc数を超え 1シャード当たり 1000万を超える データ量 当然、1回1回の検索時間 も長くなり、負荷が高まる
  167. 167. 167 想定Doc数 5,000万 シャード 4 レプリカ数 3 ノード数 6 Elasticsearchの構成 クラスター情報 想定Doc数を超え 1シャード当たり 1000万を超える データ量 セグメンテーションプッシュの 利用頻度も上がり、 高負荷な状態は慢性化していた さらに
  168. 168. 168 想定Doc数 5,000万 シャード 4 レプリカ数 3 ノード数 6 Elasticsearchの構成 クラスター情報 想定Doc数を超え 1シャード当たり 1000万を超える データ量 OutOfMemoryが発生! そんな時
  169. 169. 169 想定Doc数 5,000万 シャード 4 レプリカ数 3 ノード数 6 Elasticsearchの構成 クラスター情報 想定Doc数を超え 1シャード当たり 1000万を超える データ量 OutOfMemoryが発生! 一部のプッシュが遅延した。 そんな時
  170. 170. 170 打ち手 1シャード当たりのドキュメント数が多く検索負荷が高い 問題 事象「Elasticsearch高負荷」のまとめ シャード 想定Doc数 Doc数/ シャード 4 5,000万 現 1,250万 (C) Recruit Technologies Co.,Ltd. All rights reserved.
  171. 171. 171 シャード数を増やした構成に再構築する 打ち手 1シャード当たりのドキュメント数が多く検索負荷が高い 問題 事象「Elasticsearch高負荷」のまとめ シャード 想定Doc数 Doc数/ シャード 4 5,000万 現 1,250万 (C) Recruit Technologies Co.,Ltd. All rights reserved.
  172. 172. 172 シャード数を増やした構成に再構築する 打ち手 1シャード当たりのドキュメント数が多く検索負荷が高い 問題 事象「Elasticsearch高負荷」のまとめ シャード 10↑ -想定Doc数 変更後すぐ 500万↓Doc数/ シャード 4 5,000万 現 1,250万 (C) Recruit Technologies Co.,Ltd. All rights reserved.
  173. 173. 173 シャード数を増やした構成に再構築する 打ち手 1シャード当たりのドキュメント数が多く検索負荷が高い 問題 事象「Elasticsearch高負荷」のまとめ シャード 10↑ -想定Doc数 変更後すぐ 500万↓Doc数/ シャード 未来 10 1億 1,000万 4 5,000万 現 1,250万 (C) Recruit Technologies Co.,Ltd. All rights reserved.
  174. 174. 174 想定Doc数 5,000万 シャード 4 レプリカ数 3 ノード数 6 Elasticsearchの構成 クラスター情報 想定Doc数を超え 1シャード当たり 1000万を超える データ量 シャード数の変更は オンラインではできない。 しかし
  175. 175. 175 想定Doc数 5,000万 シャード 4 レプリカ数 3 ノード数 6 Elasticsearchの構成 クラスター情報 想定Doc数を超え 1シャード当たり 1000万を超える データ量 シャード数の変更は オンラインではできない。 しかし
  176. 176. 176 オンラインでのESシャード数変更 デバイス登録ワーカーを止め、更新処理を 遅らせている間にESクラスターを再構成 登録 API 登録 キュー 登録 Worker 旧ES (C) Recruit Technologies Co.,Ltd. All rights reserved.
  177. 177. 177 オンラインでのESシャード数変更 デバイス登録ワーカーを止め、更新処理を 遅らせている間にESクラスターを再構成 登録 API 登録 キュー 登録 Worker 旧ES 新ES 新しいESクラスターを用意 (C) Recruit Technologies Co.,Ltd. All rights reserved.
  178. 178. 178 オンラインでのESシャード数変更 デバイス登録ワーカーを止め、更新処理を 遅らせている間にESクラスターを再構成 登録 API 登録 キュー 登録 Worker 旧ES 新ES 登録Workerを停止 (C) Recruit Technologies Co.,Ltd. All rights reserved.
  179. 179. 179 オンラインでのESシャード数変更 デバイス登録ワーカーを止め、更新処理を 遅らせている間にESクラスターを再構成 登録 API 登録 キュー 登録 Worker 旧ES 新ES データ移行開始 (C) Recruit Technologies Co.,Ltd. All rights reserved.
  180. 180. 180 オンラインでのESシャード数変更 デバイス登録ワーカーを止め、更新処理を 遅らせている間にESクラスターを再構成 登録 API 登録 キュー 登録 Worker 旧ES 新ES データ移行開始データ移行完了! (C) Recruit Technologies Co.,Ltd. All rights reserved.
  181. 181. 181 オンラインでのESシャード数変更 デバイス登録ワーカーを止め、更新処理を 遅らせている間にESクラスターを再構成 登録 API 登録 キュー 登録 Worker 旧ES 新ES 登録Workerを再起動 (C) Recruit Technologies Co.,Ltd. All rights reserved.
  182. 182. 182 事例からの学び 継続的にシステムをモニタリングし 再度未来を見立て 常にアーキテクチャを 最適な状態に変化させていくべき
  183. 183. 183(C) Recruit Technologies Co.,Ltd. All rights reserved. 目次 リクルートとプッシュ通知との歩み 第1章 旧システムの限界に直面 第2章 スケーラビリティを求めての再構築 第3章 運用を通して顕在化した課題 第4章 まとめ
  184. 184. 184 エンジニアは 新技術に挑戦すべき 伝えたいこと (C) Recruit Technologies Co.,Ltd. All rights reserved.
  185. 185. 185 楽しい
  186. 186. 186 可能性
  187. 187. 187 新技術に挑戦すべき理由 リスク
  188. 188. 188 新技術に挑戦すべき理由 見えない
  189. 189. 189 新技術に挑戦すべき理由 リスク を見立てる
  190. 190. 190 新技術に挑戦すべき理由 前進
  191. 191. 191 新技術に挑戦すべき理由 行き 止まり
  192. 192. 192 行き 止まりリリース
  193. 193. 193 新技術に挑戦すべき理由 運用
  194. 194. 194 新技術に挑戦すべき理由 想定外
  195. 195. 195 新技術に挑戦すべき理由 リスク 顕在化
  196. 196. 196 新技術に挑戦すべき理由 リスクと向き合う
  197. 197. 197 新技術に挑戦すべき理由 向き合う
  198. 198. 198 新技術に挑戦すべき理由 向き合い 続ける
  199. 199. 199 新技術に挑戦すべき理由 チーム が強くなる
  200. 200. 200 新技術に挑戦すべき理由 貢献
  201. 201. 201 伝えたいこと(再掲) エンジニアは 新技術に挑戦すべき 伝えたいこと (C) Recruit Technologies Co.,Ltd. All rights reserved.
  202. 202. 機能間の 非同期連携 202(C) Recruit Technologies Co.,Ltd. All rights reserved. Pusna-RS アーキテクチャのポイント 基本アイディア 利用ツール Scalable └単純化と分散 Realtime └高速化 └各機能の高速化 └IOの高速化 DynamoDBによる I/Oの高速化 非同期I/Oの活用 I/Oの最適化
  203. 203. 機能間の 非同期連携 203(C) Recruit Technologies Co.,Ltd. All rights reserved. Pusna-RS アーキテクチャのポイント 基本アイディア 利用ツール Scalable └単純化と分散 Realtime └高速化 └各機能の高速化 └IOの高速化 DynamoDBによる I/Oの高速化 非同期I/Oの活用 I/Oの最適化 DynamoDB elasticsearch クラスタ デバイス登録 リクエスト APNs/GCM サーバ 登録API データ登録 配信worker 登録worker 管理API データ参照 事業サーバ 配信担当者 システム管理・操作用 Web UI SQS SQS SQSを利用した 機能間の非同期連携 を実現 I/Oの高速化
  204. 204. 204(C) Recruit Technologies Co.,Ltd. All rights reserved.
  205. 205. 205 リクルートテクノロジーズでは 新技術に挑戦したくてウズウズしてる 一緒に働く仲間を募集中です!! (C) Recruit Technologies Co.,Ltd. All rights reserved.
  206. 206. 206 ご清聴ありがとうございました! (C) Recruit Technologies Co.,Ltd. All rights reserved.

×