ユーザー情報格納基盤におけるApache Pulsarの利用事例

323 Views

October 05, 21

スライド概要

Apache Pulsar Meetup Japan #4
https://japan-pulsar-user-group.connpass.com/event/222026/

profile-image

エンジニア・デザイナー向けのヤフー公式アカウント。イベント/登壇情報/ブログ記事など、ヤフーの技術・デザインに関わる情報を発信します。

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

ユーザー情報格納基盤における Apache Pulsarの利⽤事例 ヤフー株式会社 データ統括本部データプラットフォーム本部 柏葉夏実 辻祥太 Copyright ©2021 (C)Yahoo 2020 Japan Yahoo Corporation Japan Corporation. All rightsAllreserved. Rights Reserved.

2.

アジェンダ 1. 登壇者紹介 2. システム概要紹介 3. Apache Pulsar 利⽤例 4. Message Queue の選定 ©2021 Yahoo Japan Corporation All rights reserved. 2

3.

アジェンダ 1. 登壇者紹介 2. システム概要紹介 3. Apache Pulsar 利⽤例 4. Message Queue の選定 ©2021 Yahoo Japan Corporation All rights reserved. 3

4.

登壇者紹介 柏葉 夏実 ヤフー株式会社データ統括本部所属 同チームにて主にアプリケーション開発、UI/UX、プロダクトマネジメント業務 に携わる 辻 祥太 ヤフー株式会社データ統括本部所属 同チームにて主にRESTful API機能の開発に携わる ©2021 Yahoo Japan Corporation All rights reserved. 4

5.

アジェンダ 1. 登壇者紹介 2. システム概要紹介 3. Apache Pulsar 利⽤例 4. Message Queue の選定 ©2021 Yahoo Japan Corporation All rights reserved. 5

6.

システム概要紹介 システムの特徴・利⽤技術 ユーザー情報格納基盤 Yahoo! Japan IDに紐づくユーザー情報を格納 データを社内プロダクトへ提供 主機能 ・RESTfulAPIによるデータのWrite /Read ・更新情報のサードパーティーフィード ・Apache Sparkによる任意データ出⼒ ©2021 Yahoo Japan Corporation All rights reserved. 6

7.

システム概要紹介 その他の要件 ・低レイテンシ、⾼パフォーマンス ・24/365無停⽌稼動 ・データベース・アプリケーションの冗⻑化(マルチリージョン) ©2021 Yahoo Japan Corporation All rights reserved. 7

8.

システム概要紹介 ユーザー情報格納基盤 システム概要図 ©2021 Yahoo Japan Corporation All rights reserved. 8

9.

アジェンダ 1. 登壇者紹介 2. システム概要紹介 3. Apache Pulsar 利⽤例 4. Message Queue の選定 ©2021 Yahoo Japan Corporation All rights reserved. 9

10.

Apache Pulsar 利⽤例 更新情報のサードパーティーフィード 機能要件 ・APIのPUTリクエスト成功時にフィード送信 ・アクセス権限を所持しているユーザーのみフィード受信可能 ・Pub-Subメッセージングモデル ・管理ツール(UI)からの申請ごとにトピック作成 ・メッセージ送信失敗時は再送 ・メッセージロストなし ・障害時のみメッセージ重複を許容 ・ユーザー毎にミリ秒単位までの順序性担保 ・LZ4によるデータ圧縮 ©2021 Yahoo Japan Corporation All rights reserved. 10

11.

Apache Pulsar 利⽤例 更新情報のサードパーティーフィード について ©2021 Yahoo Japan Corporation All rights reserved. 11

12.

Apache Pulsar 利⽤例 処理の流れ 1. 社内プロダクトがフィードの受信を申請 2. 申請をトリガーにK8s API, Pulsar Admin API を⽤いて 3rd party feed/Topicを⾃動⽣成 3. 社内プロダクトがRESTfulAPIでデータを書き込む 4. 書き込まれた情報を API Topic で別リージョン、同⼀リージョンにフィード 5. Hub Topic と 3rd party feed で社内プロダクト毎にフィードをフィルタリング 6. 社内プロダクト単位の専⽤のトピックにフィード結果を蓄積 7. 社内プロダクトが申請に応じたフィードを受け取る ©2021 Yahoo Japan Corporation All rights reserved. 12

13.

Apache Pulsar 利⽤例 機能の実現⽅法 1. 利⽤申請をトリガーにk8s API, Pulsar Admin REST API を⽤いて 3rd Party Feed の設定と環境を⾃動構築 2. Pulsarのジオレプリケーションを⽤いて 複数のリージョンに配置された社内プロダクトにフィードを送信 3. アクセス権限に応じたフィード内容のフィルタリングはFeedのProduce処理で実施 4. 順序性のズレはPulsarのKeySharedモードで軽減 ©2021 Yahoo Japan Corporation All rights reserved. 13

14.

アジェンダ 1. 登壇者紹介 2. システム概要紹介 3. Apache Pulsar 利⽤例 4. Message Queue の選定 ©2021 Yahoo Japan Corporation All rights reserved. 14

15.

Message Queue の選定 更新情報のサードパーティーフィード 機能要件 ・APIのPUTリクエスト成功時にフィード送信 ・アクセス権限を所持しているユーザーのみフィード受信可能 ・Pub-Subメッセージングモデル ・管理ツール(UI)からの申請ごとにトピック作成 ・メッセージ送信失敗時は再送 ・メッセージロストなし ・障害時のみメッセージ重複を許容 Yahoo! Japan IDに紐づくユーザー情報を 社内のプロダクトに提供している以上 非常に重要な要件 ・ユーザー毎にミリ秒単位までの順序性担保 ・LZ4によるデータ圧縮 ©2021 Yahoo Japan Corporation All rights reserved. 15

16.

Message Queue の選定 Message Queue の⽐較 背景 • 開発途中、3rdパーティーフィードのパフォーマンス性能が低かった ⇨ ボトルネック解消のためにMessage Queueの⾒直し 選定のポイント • 順序性 • ロスト(k8s のローリングアップデート時など) • パフォーマンス(レイテンシー・スループット) • 運⽤・開発コスト ©2021 Yahoo Japan Corporation All rights reserved. 16

17.

Message Queue の選定 ⽐較結果の概要 項⽬ Apache Pulsar NATS Streaming スループット ○ ◎ レイテンシ ○ ◎ 順序性 ○ ◎ 再送 ◎ ※未Ackのみ可 冗⻑化 ジオレプリケーション有りの構成・ Active/Standbyの構成 運⽤コスト ○ 監視 ○ ○ ◎ 社内ツール適⽤可 △ Cluster構成 △ 復旧時にデータの消込が必要 △ Grafana/Prometheus ⾃作 Redisも最終候補まで上がっていたが、ロストの発生があったため評価比較の対象外とした 21/10/1追記:Apache Kafkaは、検証期間が短期間であり初期実装コストの高さから対象外とした ©2021 Yahoo Japan Corporation All rights reserved. 17

18.

さいごに ©2021 Yahoo Japan Corporation All rights reserved. 18

19.

さいごに Apache Pulsar を選定する理由 他の Message Queue にもそれぞれ特徴がある 軽量、実装コスト、シンプルさ パフォーマンス と などなど…… 何を重要視するか︖が⼤切 ロスト・再送・重複・順序性 と ⇨ これらを全て満たす、わがままに応えてくれるのが 運⽤コスト Apache Pulsar ©2021 Yahoo Japan Corporation All rights reserved. 19

20.

©2021 Yahoo Japan Corporation All rights reserved.

21.

補⾜ 検証時の結果(サマリ) 正常系 レイテンシ(Produce)比較 Apache Pulsar min max NATS Streaming avg min max avg 95th Percentile 5 38 8 3.00 8.95 3.87 99th Percentile 6 209 26 3.99 13.97 7.06 Average 4 9 5 1.95 2.76 2.18 ©2021 Yahoo Japan Corporation All rights reserved. 21

22.

補⾜ 検証時の結果(サマリ) 正常系 スループット(Produce)比較 Apache Pulsar min max NATS Streaming avg min max avg PUT 55 reqps 880 reqps 784 reqps 44 reqps 1.820K reqps 1.643K reqps all 55 reqps 880 reqps 784 reqps 44 reqps 1.820K reqps 1.643K reqps ©2021 Yahoo Japan Corporation All rights reserved. 22

23.

補⾜ 検証時の結果(サマリ) 項⽬名 Apache Pulsar 1パーティションあたりの 最⼤スループット (Consume) NATS Streaming 4447 rps 4035 rps 順序性 (蓄積なし) 3% 0.04% 順序性 (蓄積あり) 0.1% 0.04% ©2021 Yahoo Japan Corporation All rights reserved. 23