SlideShare a Scribd company logo
ヤフー発のメッセージキュー
「Pulsar」のご紹介
ヤフー株式会社 システム統括本部
坂本 雅宏
2017/11/18
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 2
自己紹介
坂本 雅宏
経歴:
▪ 2013/04 ヤフー入社
▪ 2013/07~ ユーザの属性情報を扱うシステムを担当
▪ 2015/10~ 社内向けのWebAPI実行環境を担当
▪ 2016/04~ メッセージキュー「Pulsar」を担当
▪ 2017/06~ 「Pulsar」のコミッター
扱う事が多い言語:日本語、Java、PHP、Node.js
扱うのに困難が伴う言語:英語
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 3
Apache Pulsar
Yahoo! Inc.(現:Oath)で開発されたJava製の新しいメッセージキュー
▪ Pub-Subメッセージングモデルを採用
▪ 特徴
› 高速 / スケーラブル
› マルチテナント
› ジオレプリケーション
▪ 歴史
› 2014秋 Yahoo! Inc. が開発
› 2016/09 OSSとして公開
› 2017/06 Apache Software Foundationに移管(Incubatorプロジェクト)
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
アジェンダ
4
アジェンダ
1. メッセージキューとは?
2. Pulsar導入の背景
3. インターフェースとアーキテクチャ
4. Pulsar on Kubernetes
5. Kafkaとの比較
6. Pulsarの近況
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 5
メッセージキューとは?
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 6
メッセージキュー(MQ)とは?
送信側
システム
受信側
システム
1
2345
メッセージキュー
6
システム間のメッセージのやり取りに使用されるソフトウェアの総称
▪ メッセージ … 他のシステムへの通知情報、処理して欲しいデータ、ログ etc.
▪ キュー … 先に入れたものから順に出てくるデータ構造
› メッセージの送信 = キューの最後尾にメッセージを追加する
› メッセージの受信 = キューの先頭からメッセージを取り出す
MQにメッセージを
送信すると…
送った通りの順番で
非同期に相手に届く!
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 7
メッセージキューを使わなかったら…
送信側
システム
受信側
システム
23
56
4
7
10 9 8
フロントエンド
サーバ
バックエンド
サーバ
エンドユーザの
Webブラウザなど
リクエストがいっぱい来てるよ!
早く次のメッセージ受け取って!
今は忙しいんだ
後にしてくれ
1
応答が全然
返ってこない…
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 8
メッセージキューを使えば…
245
メッセージキュー
3
ちゃんとリクエストは
受け付けてくれたみたい
送信側
システム
フロントエンド
サーバ
受信側
システム
バックエンド
サーバ
1
エンドユーザの
Webブラウザなど
とりあえずキューに追加だけ
しておいてユーザに応答!
手が空き次第
順番に受け取っていくよ
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 9
Pub-Subメッセージングとは?
トピックと呼ばれる宛先に対してメッセージの送受信が行われる方式
▪ メッセージの送信側 = Producer / Publisher / 出版者
▪ メッセージの受信側 = Consumer / Subscriber / 購読者
トピックProducer
Consumer 1
Consumer 2
Consumer 3
メッセージキューあるトピックに対して
メッセージを送信すると…
そのトピックを購読している
相手にメッセージが届く!
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 10
Pub-Subメッセージングをしなかったら…
送信側
システム1
送信側
システム2
送信側
システム3
送信側
システム4
受信側
システム1
受信側
システム2
受信側
システム3
受信側
システム4
1対1の通信なら問題ないが、1対多や多対多になると複雑で管理も大変
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 11
Pub-Subメッセージングをすれば…
トピック1
トピック2
トピック3
送信側も受信側もお互いを意識する必要がない → シンプルかつスケーラブルに
送信側
システム1
送信側
システム2
送信側
システム3
送信側
システム4
受信側
システム1
受信側
システム2
受信側
システム3
受信側
システム4
メッセージキュー
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 12
代表的なメッセージキュー
▪ Kafka
› 2011年にLinkedInから公開
› 大量のデータを高速に処理する事を目指し設計
› ストリームデータの処理によく使用される
▪ RabbitMQ
› 2007年にRabbit Technologiesから公開
› 通信プロトコルにAMQPを採用
› どちらかと言えばパフォーマンスよりも信頼性を重視
▪ ActiveMQ
› 2004年から使用されている歴史あるプロダクト
› 様々なプロトコルをサポートし、多数の言語から利用可能なのが強み
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 13
Pulsar導入の背景
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 14
社内プラットフォームとしてのMQを提供したい
■背景:
▪ ヤフーには100程度のサービスがあり、それぞれに開発/運用チームが存在
▪ バックエンドの処理(システム連携、データ解析 etc.)にMQを利用したい
■課題:
▪ 設備・運用コストが増え、本来やりたかったサービス開発に集中できない
▪ ナレッジが社内で分散する
→ サービス横断で利用可能な「社内プラットフォームとしてのMQ」を提供したい
■求められる要件:
1. 高いパフォーマンス / スケーラビリティ
2. 複数のサービスが同居できる
3. 複数のデータセンター間でのレプリケーション
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 15
要件1 – 高いパフォーマンス / スケーラビリティ
▪ ヤフーで提供しているサービスは数が多く、それぞれの利用者数も膨大
▪ 例えばトップページ(PC)の1日あたりの利用者数は…
› PV(Webページの参照回数):2億以上
› UB(ユニークなWebブラウザ数):3千万以上
▪ それを支えるMQも大量のメッセージを高速に処理できる事が求められる
▪ 利用者数の増大に対応できるようにスケーラブルである事も重要
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 16
要件2 - 複数のサービスが同居できる
サービスごとに専用のMQを用意するのはコストがかかる
1つのMQに複数のサービスが同居できる(=マルチテナント)事が求められる
MQ
サービスA
ConsumerProducer MQ
サービスB
ConsumerProducer
MQ
サービスC
ConsumerProducer MQ
サービスD
ConsumerProducer
ProducerサービスA Consumer
Producer Consumer
Producer Consumer
Producer Consumer
トピックA
トピックB
トピックC
トピックD
サービスB
サービスC
サービスD
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 17
要件3 – 複数のデータセンター間でのレプリケーション
データセンターA
Consumer
▪ ヤフーは地理的に離れた複数のデータセンターでサービスを展開
▪ 全てのデータセンターで同じメッセージを受けて同じ処理を実行したい場合:
› 全てのデータセンターにメッセージをpublish? → 非効率的、手間がかかる
› 特定のデータセンターのMQに全てのConsumerが接続? → レイテンシ大
→ MQの中でデータセンターをまたいだレプリケーションして欲しい
Producer Consumer
Consumer
MQ
データセンターB
Consumer
Producer Consumer
Consumer
MQ
データセンターC
Consumer
Consumer
Consumer
全てのDSでPublish
するのは非効率的
DCをまたぐので
レイテンシが大きい
それぞれのDCでpublish
するのは非効率的
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 18
Pulsarは前述の要件を全て満たす
前述の要件を全て満たすソリューションが存在しなかった
▪ パフォーマンスが低い…
▪ トピック数が膨大になるとスケールがうまくいかなくなる…
▪ オペレーションが不便…
そこで要件を満たすために1から作られたのがPulsar
1. 高いパフォーマンス / スケーラビリティ
2. 複数のサービスが同居できる
3. 複数のデータセンター間でのレプリケーション
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 19
特徴1 – 高速 / スケーラブル
Producer
大量のメッセージを高速に送受信可能
▪ Yahoo! Inc. での実績
› トピック数:140万
› メッセージ数:1,000億 [msg/day]
› メッセージの送信に要する時間(平均):5 [ms]
▪ サーバの台数を増やせばその分だけキャパシティを増やせる → スケーラブル
Consumer
Pulsar
Consumer
Pulsar
Producer
Producer
Producer
Producer
Producer
Producer
Consumer
Consumer
Consumer
Consumer
Consumer
スケール
アウト
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 20
特徴2 - マルチテナント
ProducerサービスA Consumer
Producer Consumer
Producer Consumer
Producer Consumer
トピックA
トピックB
トピックC
トピックD
サービスB
サービスC
サービスD
複数のサービスが1つのPulsarインスタンスを共用可能
▪ ヤフーでは全社で共有するインスタンスを専用のチームが提供・運用
▪ 各サービスはサービス開発に集中できる 各サービスが利用可能な
リソースを個別に設定可能
他のサービスのトピックへの
アクセスは認証・認可機構で
ブロック
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 21
特徴3 – ジオレプリケーション
Producer トピック
あるデータセンターのトピックに送信したメッセージを他のDCに複製・配信可能
▪ Producerは自分と同じデータセンターのPulsarにメッセージを送ればいい
▪ Consumerは自分と同じデータセンターのPulsarからメッセージを受け取れる
Pulsar クラスタ A
Consumer
Consumer
Consumer
データセンターA
トピック Consumer
Consumer
Consumer
データセンターB
ジオ
レプリケーション Pulsar クラスタ B
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 22
利用事例1 - コンテンツ入稿プラットフォーム
▪ ヤフーには外部のコンテンツプロバイダから様々なファイルが入稿される
▪ 入稿サーバへのファイル転送を検知したら入稿ログをPulsarに流す
▪ トピックを購読している各サービスがファイルを取得して処理する
Producer
Consumer
トピック
サービスA
Pulsar
コンテンツの入稿ログ
をPulsarに流す
ファイルを取得
Consumer
サービスB
Consumer
サービスC
入稿サーバ
コンテンツ
プロバイダ
天気情報、地図情報、
ニュース etc.
ログサーバ
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 23
利用事例2 - Yahoo!メールのBEシステム
▪ メールの検索インデックスの生成/修正といった時間のかかるジョブを非同期に
処理するために利用
▪ ProducerはPulsarにジョブをキューイング
▪ ConsumerはPulsarからジョブを取り出して順番に処理
Producer
Consumer
Producer
トピック
ジョブを処理する
ハンドラ
メールBEサーバ
メールBEサーバ
Pulsar
リクエスト
ジョブを登録
忙しい時やジョブが
失敗した時は再登録
ジョブを
取り出して処理
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 24
インターフェース
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 25
Pulsarのインターフェース
▪ クライアントライブラリはJava, C++, Pythonを提供
▪ 他の言語からもWebSocket APIを利用可能
▪ Producer/Consumerは次のようなトピックURIを指定してPulsarに接続
▪ さらにConsumerはサブスクリプションの名前を指定する必要がある
▪ 用途に応じて3種類のサブスクリプションモード(メッセージの配信方式)を選択可能
persistent://property/cluster/namespace/destination
サービス名など
データセンターなど
用途など
用途の詳細などメッセージを永続化
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 26
サブスクリプションとは?
Producer
Consumer
Consumer
1
2345
Consumerがトピックの購読を開始した時に作成される購読の管理単位
▪ 「メッセージがどこまで受け取られたか?」はサブスクリプションごとに管理される
▪ Consumerとの接続が切れても削除されず、再接続までの間メッセージを溜め続ける
123
トピック
subscription-A
subscription-B
6
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 27
サブスクリプションタイプ1 - Exclusive
Producer
Consumer
Consumer
Consumer
12345
12345
▪ 1つのサブスクリプションには1つのConsumerだけが接続可能
▪ 既にConsumerが存在するサブスクリプションに接続を試みるとエラーになる
▪ デフォルトのサブスクリプションタイプ
subscription-A
(Exclusive)
subscription-B
(Exclusive)
12345
トピック
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 29
サブスクリプションタイプ2 - Shared
Producer
12345
Consumer
Consumer
Consumer
25
3
4
1
subscription
(Shared)
▪ 1つのサブスクリプションに複数のConsumerが接続可能
▪ メッセージは各Consumerにラウンドロビンで配信される
▪ 複数のシステムで処理を分担させたい場合に有用
トピック
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 31
サブスクリプションタイプ3 - Failover
Producer
12345
Consumer
Consumer
Consumer
345
▪ 複数のConsumerが接続可能だが、メッセージを受け取るのはその内1つだけ
▪ そのConsumerがダウンすると別のConsumerがメッセージを受け取るようになる
▪ アクティブ・スタンバイ構成を実現可能
subscription
(Failover)
トピック
2
1
1と2の受け取り後
にダウン
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 33
// PulsarのURIを指定してクライアントを作成
PulsarClient client = PulsarClient.create(
"pulsar://broker.usw.example.com:6650");
// トピックを指定してProducerを作成
Producer producer = client.createProducer(
"persistent://my-property/us-west/my-namespace/my-topic");
// メッセージを送信
producer.send("my-message".getBytes());
Javaのサンプルコード - Producer
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 34
PulsarClient client = PulsarClient.create(
"pulsar://broker.usw.example.com:6650");
// トピックとサブスクリプションを指定してConsumerを作成
Consumer consumer = client.subscribe(
"persistent://my-property/us-west/my-namespace/my-topic",
"my-subscription-name");
// メッセージを受信して画面に表示
Message msg = consumer.receive();
System.out.println(new String(msg.getData()));
// メッセージに対するACKを返信(キューからメッセージを削除)
consumer.acknowledge(msg);
Javaのサンプルコード - Consumer
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 35
PulsarClient client = PulsarClient.create(
"pulsar://broker.usw.example.com:6650");
// Consumerの設定にサブスクリプションタイプを追加
ConsumerConfiguration conf = new ConsumerConfiguration();
conf.setSubscriptionType(SubscriptionType.Shared);
Consumer consumer = client.subscribe(
"persistent://my-property/us-west/my-namespace/my-topic",
"my-subscription-name", conf);
Javaのサンプルコード - サブスクリプションタイプの指定
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 36
アーキテクチャ
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 37
システム構成図 ■Broker
‣ クライアントとのメッセージの
やり取りを担当
‣ 「状態」を持たないため増設が容易
■Bookie
‣ BookKeeperのストレージノード
‣ トピックに送信されたメッセージや
それに関連するデータを保存
■ZooKeeper
‣ トピックの管理に必要なメタ情報を
保存
‣ Local ZKはクラスタ内に閉じた
情報を担当
‣ Global ZKは全てのクラスタで
共有すべき情報を担当
Producer Consumer
Broker 1 Broker 2 Broker 3
Bookie
1
Local
ZooKeeper
Bookie
2
Bookie
3
Pulsar クラスタ
Global
ZooKeeper
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 38
Apache BookKeeperとは?
▪ オープンソースの分散型ログストレージサービス
▪ データを複製し複数のノード(Bookie)に分散して保存 → 強い耐障害性
▪ ノード数を増やせば容量と速度の向上が可能 → スケーラブル
A
Bookie2 Bookie3
D
C
A
B
D
B
C
Bookie1
データの複製数は自由に変更可能
Apache BookKeeperはApache Software Foundationの
米国およびその他の国における登録商標または商標です。
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 39
BookKeeperのアーキテクチャ
▪ 先行書き込みログ
› ストレージに対する「操作」を先に書き込む
› ストレージへの反映は後からバックグラウンドで
› 途中で電源が落ちても「操作」を再開可能
› 容量より速度を重視したいので高速なSSDを使用
▪ 永続化ストレージ
› 連続するデータをまとめてキャッシュに読み込んでおく
› 一般にメッセージキューは連続するデータを扱うため効率がよい
› 速度より容量を重視したいので大容量なHDDを使用
速度と永続性の両立を実現
先行書き込みログ
(SSD)
永続化ストレージ
(HDD)
Bookie
書き込み
キャッシュ
先行読み込み
キャッシュ
Write
Read
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 40
Pulsar on Kubernetes
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 41
Kubernetesとは?
▪ コンテナ型仮想化技術「Docker」のためのオーケストレーションツール
› コンテナ = 隔離されたアプリケーション実行環境
› VM型仮想化とは違ってOSの仮想化などはしないため軽量
コンテナ
App
ホストOS
ハードウェア
コンテナ
App
複数の仮想的なホストが
動いているように見える
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 42
Dockerの問題点の例
コンテナ
App
コンテナ
App
Private IP
ホスト1
コンテナ
App
コンテナ
App
❓
ホスト2
Private IP
NATなどによる変換が必要 → 管理が煩雑、スケールアウトが困難
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 43
Kubernetesを使うと…
コンテナ
App
コンテナ
App
Cluster IP
Kubernetesクラスタ (複数台のホストから構成)
コンテナ
App
コンテナ
App
Cluster IPCluster IP
あたかも1台の実行環境であるかのように利用可能
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 44
Pulsar on Kubernetes
▪ Pulsarは様々なKubernetesクラスタに簡単にデプロイ可能
› Google Container Engine (GKE)
› Amazon Web Service (AWS)
› 独自クラスタ
▪ 今回はGKEでのデプロイ方法をご紹介
› 詳細な手順はこちら:
https://pulsar.incubator.apache.org/ja/deployment/Kubernetes/
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 45
Google Cloud Platformの準備
▪ 事前準備として以下が必要
› cloud.google.comにサインアップできるGoogle Cloud Platformのアカウント
› 既存のCloud Platformプロジェクト
› Google Cloud SDK (特にgcloudとkubectlツール)
無料トライアルアカウントでも可
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 46
Google Cloud Platformの準備
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 47
新しいKubernetesクラスタの作成
$ gcloud container clusters create ¥
pulsar-gke-cluster ¥ # クラスタ名
--zone=us-central1-a ¥ # リージョンとゾーン
--machine-type=n1-standard-4 ¥ # マシンの種類
--num-nodes=2 ¥ # ノード数
--local-ssd-count=2 # ローカルSSDの数
※無料トライアルアカウント用に
ドキュメントよりスペックを下げています
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 48
Kubernetesダッシュボードの表示
$ gcloud container clusters get-credentials ¥
pulsar-gke-cluster ¥
--zone=us-central1-a ¥
--project=<project-id>
$ kubectl proxy
上記コマンドの入力後
http://localhost:8001/uiにブラウザからアクセス可
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 49
Pulsarのデプロイ – ZooKeeperのデプロイ1
# yaml定義のあるディレクトリに移動
$ cd /path/to/incubator-
pulsar/kubernetes/google-container-engine
# デプロイ
$ kubectl apply -f zookeeper.yaml
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 50
Pulsarのデプロイ – ZooKeeperのデプロイ2
# クラスタメタデータの初期化
$ kubectl exec -it zk-0 -- ¥
bin/pulsar initialize-cluster-metadata ¥
--cluster us-central ¥
--zookeeper zookeeper ¥
--global-zookeeper zookeeper ¥
--web-service-url
http://broker.default.svc.cluster.local:8080/ ¥
--broker-service-url
pulsar://broker.default.svc.cluster.local:6650/
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 51
以上でデプロイは完了
# Bookie, Broker, 監視ツールのデプロイ
$ kubectl apply -f bookie.yaml
$ kubectl apply -f broker.yaml
$ kubectl apply -f monitoring.yaml
Pulsarのデプロイ – 残りのコンポーネントのデプロイ
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 52
デプロイ完了後のKubernetesダッシュボード
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 53
Grafana
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 54
Pulsarダッシュボード
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
▪ 以下のコマンドで管理ツールを実行するためのコンソールにアクセス可能
▪ コンソールからパフォーマンステストも実行可能
55
管理ツール
$ kubectl exec pulsar-admin -it -- bash
$ bin/pulsar-perf produce --rate 150000 ¥
persistent://prop/us-central/ns/my-topic
# 実行結果
2017-09-28 05:35:30,398 - INFO -
[main:PerformanceProducer@341] - Throughput
produced: 149979.1 msg/s --- 1171.7 Mbit/s --
- Latency: mean: 46.952 ms (後略)
毎秒15万メッセージ!レイテンシ50ms!
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 56
Kafkaとの比較
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 57
PulsarとKafka
▪ スケーラブルな分散Pub-Subメッセージングシステム
▪ 大量のデータを高速処理する事を目指し設計
▪ ストリームデータの処理に使用可能
PulsarとKafkaには被る部分が多い
ではPulsar持つアドバンテージとは何か?
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 58
マルチテナントの実現しやすさ
log-stream-for-log-a
job-queue-for-job-a
job-queue-for-job-b
service-a
job-
queue
job-a
log-
stream
job-b
log-a
log-b
プロパティ
log-stream-for-log-b
ネームスペース デスティネーション
Kafka
Pulsar
ACL
ACL
ACL
ACL
ACL
ACL
ACL
トピック名が階層化されていない
↓
トピックごとに設定が必要
トピック名が階層化されている
↓
管理を利用者側に委任しやすい
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 59
Brokerの負荷分散
Pulsar
◯ 負荷に応じて自動的にBrokerが担当するトピックが移動
◯ Brokerを増設した際、トピックの再割り当ては不要
Kafka
△ Brokerが担当するパーティションは固定
△ Brokerを増設した際、パーティションの再割り当てが必要
PulsarはBrokerにデータを保持しないため、負荷分散が自動的に行われる
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 60
クラスタ間のメッセージの複製
Pulsar
◯ ジオレプリケーション機能
◯ Broker内部でReplicatorが自動的に起動
○ 複製対象のトピックは利用者がネームスペース単位で指定可能
Kafka
△ ミラーリング機能
△ MirrorMakerという独立したプロセスを起動
△ 複製対象のトピックをMirrorMaker起動時に指定する必要あり
Pulsarの方がオペレーションが容易でより柔軟な設定が可能
$ bin/kafka-mirror-maker.sh ¥
--consumer.config consumer.properties ¥
--producer.config producer.properties --whitelist my-topic
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 61
Pulsarの近況
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 62
最近マージされた機能
▪ Kafka client Java API wrapper
› KafkaProducer / KafkaConsumerのインターフェースでPulsarを利用するためのラッパー
▪ End-to-Endでの暗号化
› メッセージをproduce時に暗号化 / consume時に復号する機能を追加
▪ non-persistentなトピック
› メッセージを永続化しないことでより高速なproduce / consumeが可能なトピック
▪ produce時の重複排除
› メッセージをproduceする際にBroker側で重複を排除する
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 63
Cloud Native Landscape Projectに追加
Ⓒ 2017 Cloud Native Computing Foundation
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 64
まとめ
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
まとめ
65
まとめ
▪ Pulsar
› Pub-Subメッセージングを採用したメッセージキュー
› 高速、スケーラブル、マルチテナント、ジオレプリケーション
› 特に大規模なサービスでの利用に向く
▪ 公式ドキュメントはこちら:
› 英語 : https://pulsar.incubator.apache.org/docs/latest/getting-started/LocalCluster/
› 日本語 : https://pulsar.incubator.apache.org/ja/getting-started/LocalCluster/
▪ 質問やフィードバックはSlackまたはメーリングリストへ:
› https://apache-pulsar.slack.com/
› users@pulsar.incubator.apache.org
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 66
One more thing…
Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 67
Pulsarの日本ユーザ会ができました
▪ connpassでJapan Pulsar User Groupを作成しました
› https://japan-pulsar-user-group.connpass.com/
▪ 今後ハンズオンなどのイベントの開催を予定
▪ Pulsarにご興味を持たれた方はぜひご参加ください
ヤフー発のメッセージキュー「Pulsar」のご紹介

More Related Content

What's hot

Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
 
Apache Pulsarの概要と近況
Apache Pulsarの概要と近況Apache Pulsarの概要と近況
Apache Pulsarの概要と近況
Yahoo!デベロッパーネットワーク
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
 
Raft
RaftRaft
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
Yuki Morishita
 
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
Hitachi, Ltd. OSS Solution Center.
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Preferred Networks
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
 
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Yahoo!デベロッパーネットワーク
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
NTT DATA Technology & Innovation
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
Preferred Networks
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
 
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
Uptime Technologies LLC (JP)
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
 
Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316
Nozomi Kurihara
 

What's hot (20)

Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
 
Apache Pulsarの概要と近況
Apache Pulsarの概要と近況Apache Pulsarの概要と近況
Apache Pulsarの概要と近況
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Raft
RaftRaft
Raft
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
 
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
SpringBootTest入門
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316
 

Similar to ヤフー発のメッセージキュー「Pulsar」のご紹介

メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007
Nozomi Kurihara
 
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Yahoo!デベロッパーネットワーク
 
AzureでLaravel動かしてみた
AzureでLaravel動かしてみたAzureでLaravel動かしてみた
AzureでLaravel動かしてみた
Keiji Kamebuchi
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo!デベロッパーネットワーク
 
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
Nozomi Kurihara
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Yahoo!デベロッパーネットワーク
 
OSC2013@FUKUOKA
OSC2013@FUKUOKAOSC2013@FUKUOKA
OSC2013@FUKUOKA
Ryuji Egashira
 
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)
Satoshi Konno
 
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃうフレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
株式会社オプト 仙台ラボラトリ
 
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報dstn
 
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
NTT DATA OSS Professional Services
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops
裕貴 荒井
 
メッセージキュー「Pulsar」の紹介 @JJUG_20170927
メッセージキュー「Pulsar」の紹介 @JJUG_20170927メッセージキュー「Pulsar」の紹介 @JJUG_20170927
メッセージキュー「Pulsar」の紹介 @JJUG_20170927
Nozomi Kurihara
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
softlayerjp
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
Koichiro Sumi
 
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
Tomo-o Kubo
 
Unification of the middle scale services by Nuxt.js
Unification of the middle scale services by Nuxt.jsUnification of the middle scale services by Nuxt.js
Unification of the middle scale services by Nuxt.js
HajimeSasanuma
 
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用Abe Junichiro
 
CakePHP × 国産! baserCMS3の深化と今後の拡がり
CakePHP × 国産! baserCMS3の深化と今後の拡がりCakePHP × 国産! baserCMS3の深化と今後の拡がり
CakePHP × 国産! baserCMS3の深化と今後の拡がり
Daisuke Abe
 

Similar to ヤフー発のメッセージキュー「Pulsar」のご紹介 (20)

メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007
 
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
 
AzureでLaravel動かしてみた
AzureでLaravel動かしてみたAzureでLaravel動かしてみた
AzureでLaravel動かしてみた
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
 
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
 
Hadoop ~Yahoo! JAPANの活用について~
Hadoop ~Yahoo! JAPANの活用について~Hadoop ~Yahoo! JAPANの活用について~
Hadoop ~Yahoo! JAPANの活用について~
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
 
OSC2013@FUKUOKA
OSC2013@FUKUOKAOSC2013@FUKUOKA
OSC2013@FUKUOKA
 
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)
 
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃうフレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
 
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
 
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
Ansibleで構成管理始める人のモチベーションをあげたい! (Cloudera World Tokyo 2014LT講演資料)
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops
 
メッセージキュー「Pulsar」の紹介 @JJUG_20170927
メッセージキュー「Pulsar」の紹介 @JJUG_20170927メッセージキュー「Pulsar」の紹介 @JJUG_20170927
メッセージキュー「Pulsar」の紹介 @JJUG_20170927
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
 
Unification of the middle scale services by Nuxt.js
Unification of the middle scale services by Nuxt.jsUnification of the middle scale services by Nuxt.js
Unification of the middle scale services by Nuxt.js
 
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
 
CakePHP × 国産! baserCMS3の深化と今後の拡がり
CakePHP × 国産! baserCMS3の深化と今後の拡がりCakePHP × 国産! baserCMS3の深化と今後の拡がり
CakePHP × 国産! baserCMS3の深化と今後の拡がり
 

More from Yahoo!デベロッパーネットワーク

ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
Yahoo!デベロッパーネットワーク
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
Yahoo!デベロッパーネットワーク
 
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
Yahoo!デベロッパーネットワーク
 
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッション
Yahoo!デベロッパーネットワーク
 
LakeTahoe
LakeTahoeLakeTahoe
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
Yahoo!デベロッパーネットワーク
 
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
Yahoo!デベロッパーネットワーク
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
Yahoo!デベロッパーネットワーク
 
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
Yahoo!デベロッパーネットワーク
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
Yahoo!デベロッパーネットワーク
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo!デベロッパーネットワーク
 
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
Yahoo!デベロッパーネットワーク
 
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
Yahoo!デベロッパーネットワーク
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
Yahoo!デベロッパーネットワーク
 
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo!デベロッパーネットワーク
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
Yahoo!デベロッパーネットワーク
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
Yahoo!デベロッパーネットワーク
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
Yahoo!デベロッパーネットワーク
 
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
Yahoo!デベロッパーネットワーク
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
Yahoo!デベロッパーネットワーク
 

More from Yahoo!デベロッパーネットワーク (20)

ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
 
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッション
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
 
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
 
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
 
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
 
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
 
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
 

Recently uploaded

FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
atsushi061452
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 

Recently uploaded (15)

FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 

ヤフー発のメッセージキュー「Pulsar」のご紹介

  • 2. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 2 自己紹介 坂本 雅宏 経歴: ▪ 2013/04 ヤフー入社 ▪ 2013/07~ ユーザの属性情報を扱うシステムを担当 ▪ 2015/10~ 社内向けのWebAPI実行環境を担当 ▪ 2016/04~ メッセージキュー「Pulsar」を担当 ▪ 2017/06~ 「Pulsar」のコミッター 扱う事が多い言語:日本語、Java、PHP、Node.js 扱うのに困難が伴う言語:英語
  • 3. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 3 Apache Pulsar Yahoo! Inc.(現:Oath)で開発されたJava製の新しいメッセージキュー ▪ Pub-Subメッセージングモデルを採用 ▪ 特徴 › 高速 / スケーラブル › マルチテナント › ジオレプリケーション ▪ 歴史 › 2014秋 Yahoo! Inc. が開発 › 2016/09 OSSとして公開 › 2017/06 Apache Software Foundationに移管(Incubatorプロジェクト)
  • 4. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 アジェンダ 4 アジェンダ 1. メッセージキューとは? 2. Pulsar導入の背景 3. インターフェースとアーキテクチャ 4. Pulsar on Kubernetes 5. Kafkaとの比較 6. Pulsarの近況
  • 5. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 5 メッセージキューとは?
  • 6. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 6 メッセージキュー(MQ)とは? 送信側 システム 受信側 システム 1 2345 メッセージキュー 6 システム間のメッセージのやり取りに使用されるソフトウェアの総称 ▪ メッセージ … 他のシステムへの通知情報、処理して欲しいデータ、ログ etc. ▪ キュー … 先に入れたものから順に出てくるデータ構造 › メッセージの送信 = キューの最後尾にメッセージを追加する › メッセージの受信 = キューの先頭からメッセージを取り出す MQにメッセージを 送信すると… 送った通りの順番で 非同期に相手に届く!
  • 7. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 7 メッセージキューを使わなかったら… 送信側 システム 受信側 システム 23 56 4 7 10 9 8 フロントエンド サーバ バックエンド サーバ エンドユーザの Webブラウザなど リクエストがいっぱい来てるよ! 早く次のメッセージ受け取って! 今は忙しいんだ 後にしてくれ 1 応答が全然 返ってこない…
  • 8. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 8 メッセージキューを使えば… 245 メッセージキュー 3 ちゃんとリクエストは 受け付けてくれたみたい 送信側 システム フロントエンド サーバ 受信側 システム バックエンド サーバ 1 エンドユーザの Webブラウザなど とりあえずキューに追加だけ しておいてユーザに応答! 手が空き次第 順番に受け取っていくよ
  • 9. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 9 Pub-Subメッセージングとは? トピックと呼ばれる宛先に対してメッセージの送受信が行われる方式 ▪ メッセージの送信側 = Producer / Publisher / 出版者 ▪ メッセージの受信側 = Consumer / Subscriber / 購読者 トピックProducer Consumer 1 Consumer 2 Consumer 3 メッセージキューあるトピックに対して メッセージを送信すると… そのトピックを購読している 相手にメッセージが届く!
  • 10. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 10 Pub-Subメッセージングをしなかったら… 送信側 システム1 送信側 システム2 送信側 システム3 送信側 システム4 受信側 システム1 受信側 システム2 受信側 システム3 受信側 システム4 1対1の通信なら問題ないが、1対多や多対多になると複雑で管理も大変
  • 11. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 11 Pub-Subメッセージングをすれば… トピック1 トピック2 トピック3 送信側も受信側もお互いを意識する必要がない → シンプルかつスケーラブルに 送信側 システム1 送信側 システム2 送信側 システム3 送信側 システム4 受信側 システム1 受信側 システム2 受信側 システム3 受信側 システム4 メッセージキュー
  • 12. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 12 代表的なメッセージキュー ▪ Kafka › 2011年にLinkedInから公開 › 大量のデータを高速に処理する事を目指し設計 › ストリームデータの処理によく使用される ▪ RabbitMQ › 2007年にRabbit Technologiesから公開 › 通信プロトコルにAMQPを採用 › どちらかと言えばパフォーマンスよりも信頼性を重視 ▪ ActiveMQ › 2004年から使用されている歴史あるプロダクト › 様々なプロトコルをサポートし、多数の言語から利用可能なのが強み
  • 13. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 13 Pulsar導入の背景
  • 14. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 14 社内プラットフォームとしてのMQを提供したい ■背景: ▪ ヤフーには100程度のサービスがあり、それぞれに開発/運用チームが存在 ▪ バックエンドの処理(システム連携、データ解析 etc.)にMQを利用したい ■課題: ▪ 設備・運用コストが増え、本来やりたかったサービス開発に集中できない ▪ ナレッジが社内で分散する → サービス横断で利用可能な「社内プラットフォームとしてのMQ」を提供したい ■求められる要件: 1. 高いパフォーマンス / スケーラビリティ 2. 複数のサービスが同居できる 3. 複数のデータセンター間でのレプリケーション
  • 15. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 15 要件1 – 高いパフォーマンス / スケーラビリティ ▪ ヤフーで提供しているサービスは数が多く、それぞれの利用者数も膨大 ▪ 例えばトップページ(PC)の1日あたりの利用者数は… › PV(Webページの参照回数):2億以上 › UB(ユニークなWebブラウザ数):3千万以上 ▪ それを支えるMQも大量のメッセージを高速に処理できる事が求められる ▪ 利用者数の増大に対応できるようにスケーラブルである事も重要
  • 16. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 16 要件2 - 複数のサービスが同居できる サービスごとに専用のMQを用意するのはコストがかかる 1つのMQに複数のサービスが同居できる(=マルチテナント)事が求められる MQ サービスA ConsumerProducer MQ サービスB ConsumerProducer MQ サービスC ConsumerProducer MQ サービスD ConsumerProducer ProducerサービスA Consumer Producer Consumer Producer Consumer Producer Consumer トピックA トピックB トピックC トピックD サービスB サービスC サービスD
  • 17. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 17 要件3 – 複数のデータセンター間でのレプリケーション データセンターA Consumer ▪ ヤフーは地理的に離れた複数のデータセンターでサービスを展開 ▪ 全てのデータセンターで同じメッセージを受けて同じ処理を実行したい場合: › 全てのデータセンターにメッセージをpublish? → 非効率的、手間がかかる › 特定のデータセンターのMQに全てのConsumerが接続? → レイテンシ大 → MQの中でデータセンターをまたいだレプリケーションして欲しい Producer Consumer Consumer MQ データセンターB Consumer Producer Consumer Consumer MQ データセンターC Consumer Consumer Consumer 全てのDSでPublish するのは非効率的 DCをまたぐので レイテンシが大きい それぞれのDCでpublish するのは非効率的
  • 18. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 18 Pulsarは前述の要件を全て満たす 前述の要件を全て満たすソリューションが存在しなかった ▪ パフォーマンスが低い… ▪ トピック数が膨大になるとスケールがうまくいかなくなる… ▪ オペレーションが不便… そこで要件を満たすために1から作られたのがPulsar 1. 高いパフォーマンス / スケーラビリティ 2. 複数のサービスが同居できる 3. 複数のデータセンター間でのレプリケーション
  • 19. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 19 特徴1 – 高速 / スケーラブル Producer 大量のメッセージを高速に送受信可能 ▪ Yahoo! Inc. での実績 › トピック数:140万 › メッセージ数:1,000億 [msg/day] › メッセージの送信に要する時間(平均):5 [ms] ▪ サーバの台数を増やせばその分だけキャパシティを増やせる → スケーラブル Consumer Pulsar Consumer Pulsar Producer Producer Producer Producer Producer Producer Consumer Consumer Consumer Consumer Consumer スケール アウト
  • 20. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 20 特徴2 - マルチテナント ProducerサービスA Consumer Producer Consumer Producer Consumer Producer Consumer トピックA トピックB トピックC トピックD サービスB サービスC サービスD 複数のサービスが1つのPulsarインスタンスを共用可能 ▪ ヤフーでは全社で共有するインスタンスを専用のチームが提供・運用 ▪ 各サービスはサービス開発に集中できる 各サービスが利用可能な リソースを個別に設定可能 他のサービスのトピックへの アクセスは認証・認可機構で ブロック
  • 21. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 21 特徴3 – ジオレプリケーション Producer トピック あるデータセンターのトピックに送信したメッセージを他のDCに複製・配信可能 ▪ Producerは自分と同じデータセンターのPulsarにメッセージを送ればいい ▪ Consumerは自分と同じデータセンターのPulsarからメッセージを受け取れる Pulsar クラスタ A Consumer Consumer Consumer データセンターA トピック Consumer Consumer Consumer データセンターB ジオ レプリケーション Pulsar クラスタ B
  • 22. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 22 利用事例1 - コンテンツ入稿プラットフォーム ▪ ヤフーには外部のコンテンツプロバイダから様々なファイルが入稿される ▪ 入稿サーバへのファイル転送を検知したら入稿ログをPulsarに流す ▪ トピックを購読している各サービスがファイルを取得して処理する Producer Consumer トピック サービスA Pulsar コンテンツの入稿ログ をPulsarに流す ファイルを取得 Consumer サービスB Consumer サービスC 入稿サーバ コンテンツ プロバイダ 天気情報、地図情報、 ニュース etc. ログサーバ
  • 23. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 23 利用事例2 - Yahoo!メールのBEシステム ▪ メールの検索インデックスの生成/修正といった時間のかかるジョブを非同期に 処理するために利用 ▪ ProducerはPulsarにジョブをキューイング ▪ ConsumerはPulsarからジョブを取り出して順番に処理 Producer Consumer Producer トピック ジョブを処理する ハンドラ メールBEサーバ メールBEサーバ Pulsar リクエスト ジョブを登録 忙しい時やジョブが 失敗した時は再登録 ジョブを 取り出して処理
  • 24. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 24 インターフェース
  • 25. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 25 Pulsarのインターフェース ▪ クライアントライブラリはJava, C++, Pythonを提供 ▪ 他の言語からもWebSocket APIを利用可能 ▪ Producer/Consumerは次のようなトピックURIを指定してPulsarに接続 ▪ さらにConsumerはサブスクリプションの名前を指定する必要がある ▪ 用途に応じて3種類のサブスクリプションモード(メッセージの配信方式)を選択可能 persistent://property/cluster/namespace/destination サービス名など データセンターなど 用途など 用途の詳細などメッセージを永続化
  • 26. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 26 サブスクリプションとは? Producer Consumer Consumer 1 2345 Consumerがトピックの購読を開始した時に作成される購読の管理単位 ▪ 「メッセージがどこまで受け取られたか?」はサブスクリプションごとに管理される ▪ Consumerとの接続が切れても削除されず、再接続までの間メッセージを溜め続ける 123 トピック subscription-A subscription-B 6
  • 27. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 27 サブスクリプションタイプ1 - Exclusive Producer Consumer Consumer Consumer 12345 12345 ▪ 1つのサブスクリプションには1つのConsumerだけが接続可能 ▪ 既にConsumerが存在するサブスクリプションに接続を試みるとエラーになる ▪ デフォルトのサブスクリプションタイプ subscription-A (Exclusive) subscription-B (Exclusive) 12345 トピック
  • 28. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 29 サブスクリプションタイプ2 - Shared Producer 12345 Consumer Consumer Consumer 25 3 4 1 subscription (Shared) ▪ 1つのサブスクリプションに複数のConsumerが接続可能 ▪ メッセージは各Consumerにラウンドロビンで配信される ▪ 複数のシステムで処理を分担させたい場合に有用 トピック
  • 29. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 31 サブスクリプションタイプ3 - Failover Producer 12345 Consumer Consumer Consumer 345 ▪ 複数のConsumerが接続可能だが、メッセージを受け取るのはその内1つだけ ▪ そのConsumerがダウンすると別のConsumerがメッセージを受け取るようになる ▪ アクティブ・スタンバイ構成を実現可能 subscription (Failover) トピック 2 1 1と2の受け取り後 にダウン
  • 30. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 33 // PulsarのURIを指定してクライアントを作成 PulsarClient client = PulsarClient.create( "pulsar://broker.usw.example.com:6650"); // トピックを指定してProducerを作成 Producer producer = client.createProducer( "persistent://my-property/us-west/my-namespace/my-topic"); // メッセージを送信 producer.send("my-message".getBytes()); Javaのサンプルコード - Producer
  • 31. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 34 PulsarClient client = PulsarClient.create( "pulsar://broker.usw.example.com:6650"); // トピックとサブスクリプションを指定してConsumerを作成 Consumer consumer = client.subscribe( "persistent://my-property/us-west/my-namespace/my-topic", "my-subscription-name"); // メッセージを受信して画面に表示 Message msg = consumer.receive(); System.out.println(new String(msg.getData())); // メッセージに対するACKを返信(キューからメッセージを削除) consumer.acknowledge(msg); Javaのサンプルコード - Consumer
  • 32. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 35 PulsarClient client = PulsarClient.create( "pulsar://broker.usw.example.com:6650"); // Consumerの設定にサブスクリプションタイプを追加 ConsumerConfiguration conf = new ConsumerConfiguration(); conf.setSubscriptionType(SubscriptionType.Shared); Consumer consumer = client.subscribe( "persistent://my-property/us-west/my-namespace/my-topic", "my-subscription-name", conf); Javaのサンプルコード - サブスクリプションタイプの指定
  • 33. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 36 アーキテクチャ
  • 34. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 37 システム構成図 ■Broker ‣ クライアントとのメッセージの やり取りを担当 ‣ 「状態」を持たないため増設が容易 ■Bookie ‣ BookKeeperのストレージノード ‣ トピックに送信されたメッセージや それに関連するデータを保存 ■ZooKeeper ‣ トピックの管理に必要なメタ情報を 保存 ‣ Local ZKはクラスタ内に閉じた 情報を担当 ‣ Global ZKは全てのクラスタで 共有すべき情報を担当 Producer Consumer Broker 1 Broker 2 Broker 3 Bookie 1 Local ZooKeeper Bookie 2 Bookie 3 Pulsar クラスタ Global ZooKeeper
  • 35. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 38 Apache BookKeeperとは? ▪ オープンソースの分散型ログストレージサービス ▪ データを複製し複数のノード(Bookie)に分散して保存 → 強い耐障害性 ▪ ノード数を増やせば容量と速度の向上が可能 → スケーラブル A Bookie2 Bookie3 D C A B D B C Bookie1 データの複製数は自由に変更可能 Apache BookKeeperはApache Software Foundationの 米国およびその他の国における登録商標または商標です。
  • 36. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 39 BookKeeperのアーキテクチャ ▪ 先行書き込みログ › ストレージに対する「操作」を先に書き込む › ストレージへの反映は後からバックグラウンドで › 途中で電源が落ちても「操作」を再開可能 › 容量より速度を重視したいので高速なSSDを使用 ▪ 永続化ストレージ › 連続するデータをまとめてキャッシュに読み込んでおく › 一般にメッセージキューは連続するデータを扱うため効率がよい › 速度より容量を重視したいので大容量なHDDを使用 速度と永続性の両立を実現 先行書き込みログ (SSD) 永続化ストレージ (HDD) Bookie 書き込み キャッシュ 先行読み込み キャッシュ Write Read
  • 37. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 40 Pulsar on Kubernetes
  • 38. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 41 Kubernetesとは? ▪ コンテナ型仮想化技術「Docker」のためのオーケストレーションツール › コンテナ = 隔離されたアプリケーション実行環境 › VM型仮想化とは違ってOSの仮想化などはしないため軽量 コンテナ App ホストOS ハードウェア コンテナ App 複数の仮想的なホストが 動いているように見える
  • 39. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 42 Dockerの問題点の例 コンテナ App コンテナ App Private IP ホスト1 コンテナ App コンテナ App ❓ ホスト2 Private IP NATなどによる変換が必要 → 管理が煩雑、スケールアウトが困難
  • 40. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 43 Kubernetesを使うと… コンテナ App コンテナ App Cluster IP Kubernetesクラスタ (複数台のホストから構成) コンテナ App コンテナ App Cluster IPCluster IP あたかも1台の実行環境であるかのように利用可能
  • 41. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 44 Pulsar on Kubernetes ▪ Pulsarは様々なKubernetesクラスタに簡単にデプロイ可能 › Google Container Engine (GKE) › Amazon Web Service (AWS) › 独自クラスタ ▪ 今回はGKEでのデプロイ方法をご紹介 › 詳細な手順はこちら: https://pulsar.incubator.apache.org/ja/deployment/Kubernetes/
  • 42. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 45 Google Cloud Platformの準備 ▪ 事前準備として以下が必要 › cloud.google.comにサインアップできるGoogle Cloud Platformのアカウント › 既存のCloud Platformプロジェクト › Google Cloud SDK (特にgcloudとkubectlツール) 無料トライアルアカウントでも可
  • 43. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 46 Google Cloud Platformの準備
  • 44. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 47 新しいKubernetesクラスタの作成 $ gcloud container clusters create ¥ pulsar-gke-cluster ¥ # クラスタ名 --zone=us-central1-a ¥ # リージョンとゾーン --machine-type=n1-standard-4 ¥ # マシンの種類 --num-nodes=2 ¥ # ノード数 --local-ssd-count=2 # ローカルSSDの数 ※無料トライアルアカウント用に ドキュメントよりスペックを下げています
  • 45. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 48 Kubernetesダッシュボードの表示 $ gcloud container clusters get-credentials ¥ pulsar-gke-cluster ¥ --zone=us-central1-a ¥ --project=<project-id> $ kubectl proxy 上記コマンドの入力後 http://localhost:8001/uiにブラウザからアクセス可
  • 46. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 49 Pulsarのデプロイ – ZooKeeperのデプロイ1 # yaml定義のあるディレクトリに移動 $ cd /path/to/incubator- pulsar/kubernetes/google-container-engine # デプロイ $ kubectl apply -f zookeeper.yaml
  • 47. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 50 Pulsarのデプロイ – ZooKeeperのデプロイ2 # クラスタメタデータの初期化 $ kubectl exec -it zk-0 -- ¥ bin/pulsar initialize-cluster-metadata ¥ --cluster us-central ¥ --zookeeper zookeeper ¥ --global-zookeeper zookeeper ¥ --web-service-url http://broker.default.svc.cluster.local:8080/ ¥ --broker-service-url pulsar://broker.default.svc.cluster.local:6650/
  • 48. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 51 以上でデプロイは完了 # Bookie, Broker, 監視ツールのデプロイ $ kubectl apply -f bookie.yaml $ kubectl apply -f broker.yaml $ kubectl apply -f monitoring.yaml Pulsarのデプロイ – 残りのコンポーネントのデプロイ
  • 49. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 52 デプロイ完了後のKubernetesダッシュボード
  • 50. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 53 Grafana
  • 51. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 54 Pulsarダッシュボード
  • 52. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 ▪ 以下のコマンドで管理ツールを実行するためのコンソールにアクセス可能 ▪ コンソールからパフォーマンステストも実行可能 55 管理ツール $ kubectl exec pulsar-admin -it -- bash $ bin/pulsar-perf produce --rate 150000 ¥ persistent://prop/us-central/ns/my-topic # 実行結果 2017-09-28 05:35:30,398 - INFO - [main:PerformanceProducer@341] - Throughput produced: 149979.1 msg/s --- 1171.7 Mbit/s -- - Latency: mean: 46.952 ms (後略) 毎秒15万メッセージ!レイテンシ50ms!
  • 53. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 56 Kafkaとの比較
  • 54. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 57 PulsarとKafka ▪ スケーラブルな分散Pub-Subメッセージングシステム ▪ 大量のデータを高速処理する事を目指し設計 ▪ ストリームデータの処理に使用可能 PulsarとKafkaには被る部分が多い ではPulsar持つアドバンテージとは何か?
  • 55. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 58 マルチテナントの実現しやすさ log-stream-for-log-a job-queue-for-job-a job-queue-for-job-b service-a job- queue job-a log- stream job-b log-a log-b プロパティ log-stream-for-log-b ネームスペース デスティネーション Kafka Pulsar ACL ACL ACL ACL ACL ACL ACL トピック名が階層化されていない ↓ トピックごとに設定が必要 トピック名が階層化されている ↓ 管理を利用者側に委任しやすい
  • 56. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 59 Brokerの負荷分散 Pulsar ◯ 負荷に応じて自動的にBrokerが担当するトピックが移動 ◯ Brokerを増設した際、トピックの再割り当ては不要 Kafka △ Brokerが担当するパーティションは固定 △ Brokerを増設した際、パーティションの再割り当てが必要 PulsarはBrokerにデータを保持しないため、負荷分散が自動的に行われる
  • 57. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 60 クラスタ間のメッセージの複製 Pulsar ◯ ジオレプリケーション機能 ◯ Broker内部でReplicatorが自動的に起動 ○ 複製対象のトピックは利用者がネームスペース単位で指定可能 Kafka △ ミラーリング機能 △ MirrorMakerという独立したプロセスを起動 △ 複製対象のトピックをMirrorMaker起動時に指定する必要あり Pulsarの方がオペレーションが容易でより柔軟な設定が可能 $ bin/kafka-mirror-maker.sh ¥ --consumer.config consumer.properties ¥ --producer.config producer.properties --whitelist my-topic
  • 58. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 61 Pulsarの近況
  • 59. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 62 最近マージされた機能 ▪ Kafka client Java API wrapper › KafkaProducer / KafkaConsumerのインターフェースでPulsarを利用するためのラッパー ▪ End-to-Endでの暗号化 › メッセージをproduce時に暗号化 / consume時に復号する機能を追加 ▪ non-persistentなトピック › メッセージを永続化しないことでより高速なproduce / consumeが可能なトピック ▪ produce時の重複排除 › メッセージをproduceする際にBroker側で重複を排除する
  • 60. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 63 Cloud Native Landscape Projectに追加 Ⓒ 2017 Cloud Native Computing Foundation
  • 61. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 64 まとめ
  • 62. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 まとめ 65 まとめ ▪ Pulsar › Pub-Subメッセージングを採用したメッセージキュー › 高速、スケーラブル、マルチテナント、ジオレプリケーション › 特に大規模なサービスでの利用に向く ▪ 公式ドキュメントはこちら: › 英語 : https://pulsar.incubator.apache.org/docs/latest/getting-started/LocalCluster/ › 日本語 : https://pulsar.incubator.apache.org/ja/getting-started/LocalCluster/ ▪ 質問やフィードバックはSlackまたはメーリングリストへ: › https://apache-pulsar.slack.com/ › users@pulsar.incubator.apache.org
  • 63. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 66 One more thing…
  • 64. Copyright (C) 2017 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 67 Pulsarの日本ユーザ会ができました ▪ connpassでJapan Pulsar User Groupを作成しました › https://japan-pulsar-user-group.connpass.com/ ▪ 今後ハンズオンなどのイベントの開催を予定 ▪ Pulsarにご興味を持たれた方はぜひご参加ください