Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
イベントストリーミング入門 〜Apache Kafkaを活用した大規模リアルタイムデータ処理〜
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Akio SHIMIZU
October 29, 2022
Technology
0
1.3k
イベントストリーミング入門 〜Apache Kafkaを活用した大規模リアルタイムデータ処理〜
OSC 2022 Online Fallの発表資料です。初心者向けにApache Kafkaの概要を解説しています。
Akio SHIMIZU
October 29, 2022
Tweet
Share
More Decks by Akio SHIMIZU
See All by Akio SHIMIZU
Kafkaを利用したIcebergへのデータストリーミング
shmza
0
1.1k
Apache Kafka最新アップデート (2023年6月16日版)
shmza
2
1.4k
イベントストリーミング入門 〜Apache Kafkaを活用した大規模リアルタイムデータ処理〜
shmza
0
1.1k
Other Decks in Technology
See All in Technology
モジュラモノリス導入から4年間の総括:アーキテクチャと組織の相互作用について / Architecture and Organizational Interaction
nazonohito51
6
3k
TUNA Camp 2026 京都Stage ヒューリスティックアルゴリズム入門
terryu16
0
370
夢の無限スパゲッティ製造機 #phperkaigi
o0h
PRO
0
360
開発チームとQAエンジニアの新しい協業モデル -年末調整開発チームで実践する【QAリード施策】-
kaomi_wombat
0
240
スピンアウト講座04_ルーティン処理
overflowinc
0
1.2k
Phase06_ClaudeCode実践
overflowinc
0
2k
ADK + Gemini Enterprise で 外部 API 連携エージェント作るなら OAuth の仕組みを理解しておこう
kaz1437
0
190
AIエージェント勉強会第3回 エージェンティックAIの時代がやってきた
ymiya55
0
120
Datadog で実現するセキュリティ対策 ~オブザーバビリティとセキュリティを 一緒にやると何がいいのか~
a2ush
0
130
CloudFrontのHost Header転送設定でパケットの中身はどう変わるのか?
nagisa53
1
180
君はジョシュアツリーを知っているか?名前をつけて事象を正しく認識しよう / Do you know Joshua Tree?
ykanoh
4
130
Agent Skill 是什麼?對軟體產業帶來的變化
appleboy
0
230
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
330
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
91
Darren the Foodie - Storyboard
khoart
PRO
3
3k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
280
Thoughts on Productivity
jonyablonski
75
5.1k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
75
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
Done Done
chrislema
186
16k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Technical Leadership for Architectural Decision Making
baasie
3
300
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Transcript
イベントストリーミング入門 〜Apache Kafkaを活用した大規模リアルタイムデータ処理〜 Confluent Japan合同会社 シニアソリューションエンジニア 清水 亮夫
2 世界は変わってきています
新しいビジネスの現実 テクノロジーこそがビジネス イノベーションが必要なのは 生き残るため 昨日のデータ = 障害 モダンなリアルタイムデータ インフラストラクチャが必要 テクノロジーは
サポート機能 イノベーションが必要なのは 成長のため “必要十分”なデータの鮮度は 昨日のデータ
「店舗」はソフトウェアに
「銀行」はソフトウェアに
「タクシー」はソフトウェアに 2 min
「自動車」はソフトウェアに
この変革を可能にするもの は何でしょうか。
クラウド 機械学習 モバイル Data in Motion 意思決定の再考 ユーザーエクスペ リエンスの再考 データの再考
データセンターの 再考
Data at RestはData in Motionに変わっていく 輸送機関 リアルタイムのセンサー 診断 運転手-乗客のマッチング 到着予想時刻のリアル
タイム更新 銀行 不正使用の検出 取引・リスクの管理 モバイルアプリ / 顧客体験の向上 小売 リアルタイム在庫管理 リアルタイムPOS レポート パーソナライゼーション 娯楽 リアルタイムの リコメンデーション パーソナライズされた お薦め アプリ内決済
Data in Motionとは?
Data in Motionとは あらゆる場所から絶え間なく発生し、 常に進化するデータに対する 連続的なストリーム処理 12
Data in Motionは エンタープライズ企業の 中枢神経系 Apache Kafka® はそのテクノロジー
Data in Motionによるお客様価値 あらゆる データソースから DB、ログ、メトリクス、 モバイルアプリ、マイク ロサービス、IoTセンサー など In-Transit
Processing 仕入/販売データ 在庫/流通データ トランザクション データ 顧客行動/興味 データ あらゆる データ活用先へ DB、モバイルアプリ、マ イクロサービス、APIエン ドポイント、アナリティ クス、BIツール、MLなど In-Transit ガバナンス セキュリティと一貫性のためにフ ローを一元的に管理 - アクセスコン トロール、データ保護、スキーマの 一貫性、DR、BC、など データを最適変換 データは移動中に必要に応じて形を 変えます- すべてのソースからの データは平等に扱われ、違いは Confluentによって抽象化されます 14
15 Data in Motionは 消費者が日常的に 使用するアプリを 動かす基盤に不可欠な データインフラです Acme Retailerから$1000の請求がありました
この取引を確認してください。 Jun Raoがアプリから100ドルを 送ってきました ご注文のドライバーが来ました 待機料金は3分後にスタートします ご注文いただいた商品がまもなく お手元に届きます
16 “あなたのドライバーは何分後に到着する?” これはData in Motionなしでは実現できません 運転手評価 乗車運賃 支払い 位置情報 利用者情報
複数のリアルタイムイベントを取得 利用者の位置情報に基づき複数の車両情報を取 得して最適な車両をアサインします 過去数年のデータから同条件のみ抽出・融合 距離・都市・天候・時間帯などを組み合わせて 同条件での到着時間を抽出します 課金情報の”確実に一度だけ”の送信保証 重要なトランザクションデータをexactly once で届ける事が可能です
Data in Motionの興盛 2010 Apache Kafka Confluentの創業者によって Linkedinで生まれる 2014 2021
80% のFortune 100 企業がApache Kafkaを信頼し、採 用
18 スマートアナリティク
ス (AI/ML) 異常検出 アプリケーションの モダナイゼーション データ 交換 IT の可観測性と SIEM の最適化 コンプライアンスと 規制 マイクロサービス/ イベントソーシング ストリーミング ETL ログ 集計 IoT / Edge アナリティクス サイバー セキュリティ データインフラストラクチャのユースケース ビジネスアプリケーションのユースケース データ パイプライン ハイブリッドとマルチクラ ウドの統合 Customer 360 メインフレームの強化 データウェアハウスのモ ダナイゼーション メッセージングの モダナイゼーション データベースの モダナイゼーション Apache Kafkaの代表的なユースケース
Apache Kafka® とは?
Apache Kafkaのコア機能 01 一連のイベントを Publish & Subscribe する 02 イベント・ストリーム
を保存する 03 イベント・ストリーム を処理 & 解析する
“Everything is just a series of events.” - Apache Kafka
「イベント」とはビジネスで起きていること 輸送機関 今岡さんの車の TPMSセンサーが午前 7時11分にタイヤの空気圧低下を検 知した Kafka 銀行 金曜日の午後3時47分に赤星さんが藤本さんに 3万円送金した
Kafka 小売 金本さんが注文したデジタルカメラが午前 9時10分に配送された Kafka
Key Value Kafkaにおけるイベント
データの 書込み Kafka クラスター データの 読込み
Producer: 最初のクライアント ポリシー 決済処理 アプリケーション テレメトリーデータ 書込み
Kafka Broker: 繊細だけどパワフル ローカルストレージ リテンション時間 書込み
Consumer: もう一方のクライアント データレコード レポート ダッシュボード 分析 後続処理 永遠に 繰り返す ポーリング
28 • 長いブロックコマンドの連鎖を 断ち切る • 同期アクションと非同期 アクションを区別する • immutableなイベントレベルの ログによるトレーサビリティの
維持 ProducerとConsumerを分離する
Broker
Brokerの基本 • ProducerはイベントをBrokerに送信 • Brokersはイベントを受信して蓄積 • Kafka Clusterは複数のBrokerを持つことが できる •
それぞれのBrokerは複数のTopic、 パーティションを管理
Brokerのレプリケーション Topic, パーティションの 論理セット
Topic • 類似イベントを格納する名前付きコンテナ ◦ システムには多くのTopicが存在する ◦ Topic間でデータが重複することもできる • イベントの耐久性のあるログ ◦
追記(Append)のみ ◦ オフセットによるシークのみ可能で、インデックス化はされない • イベントは不変 (immutable)
Topic • 一連の「関連した」 イベント 33 • 同じような頻度と サイズ • より洗練させられる
顧客プロファイルの更新 更新要求 課金情報の更新 claims-updates new-claims new-claims-O H
Topicのリテンション・ポリシー イベントをどれだけの期間保持する必要があるか ? • どれだけの期間 (デフォルト: 1週間) • Topic単位で設定 ◦
もしくはBorokerのデフォルト値を使用 • 業務要件による決定 • コスト要因 • コンプライアンス要因 (例: GDPR)
Topicのコンパクション
Topic、パーティション、セグメント
セグメントの中身 - ストリーム 無限に続く一連のイベント 過去 未来 現在 ストリーム イベント
イベントの中身
クライアント
Producerのデザイン
Producerの保証
送達の保証
Javaによる基本 的なProducer
パーティショニングの戦略 なぜパーティショニングするのか ? • Consumerは何らかのキーで集計または結合する必要がある • Consumerは順序の保証が必要 • ストレージの効率化やインデックス作成のためのデータの集中化
Partition 0 Partition 1 Partition 2
Partition 0 Partition 1 Partition 2
Partition 0 Partition 1 Partition 2 1 4 7 2
5 8 3 6 9 #
Partition 0 Partition 1 Partition 2 1 2 3 4
5 7 6 8 9 #
Consumerのオフセット ここまで 読み込んだ
Consumerグループ 同じ グループID 自動 ロードバランス
Consumerの リバランス リバランス発生 リバランス発生 Consumer 追加! Consumer 削除!
.NET/C#による 基本的な Consumer
特別なクライアント
Kafka Connect 既存のシステム(データベース、オブジェクトストレージ、キューなど)とApache Kafkaを ノーコードで接続する方法です。 通常であれば、カスタム変換やデータ変換を行うためにはいくつかのコードを書く必要があり ます。Kafka Connectはすぐに利用可能なSingle Message TransformsとConvertersを提供
しています。 Kafka Connect Kafka Connect データ ソース データ シンク
多くの著名なソフトウェアへのコネクターを提供 Data Diode 200+ pre-built connectors 80+ Confluent Supported 60+
Partner Supported, Confluent Verified 24 55
Sink Source KAFKA STREAMS KAFKA CONNECT KAFKA CONNECT Your App
Kafka ConnectとKafka Streams
ストリーム処理のアーキテクチャをシンプルに DB CONNECTOR CONNECTOR APP APP DB STREAM PROCESSING CONNECTOR
APP DB 2 3 4 現状では、3から5にわたる分散システムの構築・インテグレーション・管理が必要 1
Kafkaへの接続 - Data In/Out DB CONNECTOR CONNECTOR APP APP DB
STREAM PROCESSING CONNECTOR APP DB
Stream Processing - Dataをハンドリングする DB CONNECTOR CONNECTOR APP APP DB
STREAM PROCESSING CONNECTOR APP DB
ksqlDBとは DB APP APP DB PULL PUSH CONNECTORS STREAM PROCESSING
MATERIALIZED VIEWS ksqlDB APP
KSQL は、イベントの取得、ストリーム処理、プッシュ/プルクエリの両方を単一のソリューション として提供します ストリーム処理のアーキテクチャをシンプルに DB APP APP DB PULL PUSH
CONNECTORS STREAM PROCESSING STATE STORES KSQL 1 2 APP
イベントとステート- Pull QueryとPush Query Seven Eleven payment: 500 JPY CREATE
STREAM payments AS SELECT Account_id, store, amount FROM transactions EMIT CHANGES; CREATE TABLE payment_sum AS SELECT account_id, SUM (amount) FROM transactions GROUP BY account_id TUMBLING WINDOW (1 DAY) EMIT CHANGES; Yoshinoya payment: 800 JPY AEON payment: 2,400 JPY hashi: 3700 JPY PULL hashi: Seven Eleven, 500 JPY hashi: Yoshinoya, 800 JPY hashi: AEON, 2400 JPY PUSH hashi: 500 JPY hashi: 1300 JPY hashi: 3700 JPY PUSH
-- pq1 CREATE STREAM high_readings AS SELECT sensor, reading, UCASE(location)
AS location FROM readings WHERE reading > 41 EMIT CHANGES;
ハンズオンのご案内
10/29(土) 15時からハンズオンを行います! ご不明なことがありましたら OSPNのSlackで清水宛にDMください
日本のコミュニティのご紹介
ありがとうございました! Confluent: confluent.cloud Developer Site: https://developer.confluent.io/
None