Slide 1

Slide 1 text

1 イベント駆動 アーキテクチャ

Slide 2

Slide 2 text

Introduction: イベント イベント駆動アーキテクチャ 2

Slide 3

Slide 3 text

イベント駆動アーキテクチャ (EDA) とは? 3 イベント駆動アーキテクチャ: アプリケーションやサービスがイベ ント通知の送受信に対してリアルタ イムに応答するような設計方式 イベント駆動アーキテクチャ Source: https://www.gartner.com/en/information-technology/glossary/eda-event-driven-architecture : Image: ActiveMQ in Action https://www.manning.com/books/activemq-in-action

Slide 4

Slide 4 text

なぜイベント駆動アーキテクチャなのか? イベント駆動アーキテクチャ 4 Source:https://developers.redhat.com/topics/event-driven/ 現実の世界を反映 結合度を低減 現実の世界というのはイベント駆動になっています。日々 の生活において様々なイベントが生成され、システムはそ れに応答しています (人間の中枢神経系など )。 従来のRPCスタイルのサービスアーキテクチャでは、サー ビスは密結合となりがちです。アプリケーションの処理に 変更が発生した場合、ソースコードへの変更が必要となり ます。EDAでは、既存のイベントストリームを利用する サー ビスを追加することによって、新機能の追加が可能となり ます。 カプセル化 細かい粒度でのスケーリング サービスの開発チームが独立して開発できるようになること から、マイクロサービスの考え方が広まってきています。 EDAでは、サービスの設計担当者はイベントがどのように利 用されるかを意識する必要がなくなります。 イベントの量に応じて、サービスのスケールアップ /ダウンが 個別に可能です。 ほぼリアルタイムの遅延 顧客はますますリアルタイムに近いエクスペリエンスを求め ています。APIをポーリングする方式にはレスポンスの速さ と負荷に考慮すべきトレードオフがあります。 EDAでは、アプ リケーションは妥協することなくほぼリアルタイムに対応する ことが可能になります。

Slide 5

Slide 5 text

イベントとは? 5 Image: https://foto.wuestenigel.com/hand-ready-to-push-domino-pieces/ イベントとは、ソフトウェアによっ て認識されるアクションや事象 であり、通常、外部環境から非 同期に発生し、それをイベントと して受け取ったソフトウェアに よって処理される。 イベント駆動アーキテクチャ

Slide 6

Slide 6 text

イベントとは? 6 Source: https://developers.redhat.com/topics/event-driven/ クエリ コマンド 非同期型のRPC。 受信者が何をすべきかの指示を含み、 状態の変更が発生する場合がある。 イベント コマンドと似ているが、クエリは 結果を返す応答があることを想定。 ただし状態の変更は伴わない。 サービス間の処理において発生した ある特定エンティティの イミュータブルな状態と値。 イベント駆動アーキテクチャ

Slide 7

Slide 7 text

イベントの利用パターンの分類 7 Source: https://developers.redhat.com/topics/event-driven/ 再送可能 イベントは登録済みのすべてのコンシュー マによって読み込まれるまで持続的に保存 される。従来型のストアアンドフォワード形 式のブローカ。 持続性 イベントは指定された期間あるいはスト レージ容量まで持続的に保存される。 コンシューマはストリーム内を 前後に移動が可能。 揮発性 イベントはパブリッシュ時にオンライン状態 にあるすべてのコンシューマに伝播される 必要がある。永続化はされない。 イベント駆動アーキテクチャ

Slide 8

Slide 8 text

Source: https://developers.redhat.com/topics/event-driven 適切な実現方式の選択方法 8 例 最適なパターン 可能なパターン 不適切なパターン キューイングやPub/Subなどの従来型のメッセージブローカ JMS 2.0など、機能が豊富 メッセージブローカの例: Apache ActiveMQ Artemis 持続性イベント 揮発性イベント コマンド クエリ 再送可能イベント メッセージルーター 1:1 (anycast) / 1:many (multicast) ハイブリッドクラウドのための安全なメッセージング メッセージルーターの例: Apache Qpid Dispatch Router コマンド クエリ 揮発性イベント 持続性イベント 再送可能イベント Apache Kafkaのエンタープライズ向けディストリビューション Kubernetes/OpenShiftへの容易なデプロイ 例:StrimziをベースとしたKafka on Kubernetes 再送可能イベント 持続性イベント コマンド クエリ 揮発性イベント トランザクション /フィルターが必要な イベント Kubernetes/OpenShift上でスケーラブルな、セルフサービスのメッ セージング基盤 Self-managed または Third party-managed 例:EnMasse コマンド クエリ 揮発性イベント 持続性イベント 再送可能イベント イベント駆動アーキテクチャ

Slide 9

Slide 9 text

イベント駆動 マイクロサービス イベント駆動アーキテクチャ 9

Slide 10

Slide 10 text

10 Source: イベント駆動アーキテクチャ ● 高可用性: 他のサービスに依存しない ● 自律的なサービスとして、他に依存せず進化が可能 マイクロサービスの非同期通信 イベント駆動マイクロサービスの基礎

Slide 11

Slide 11 text

イベント駆動アーキテクチャのユースケース 11 データセンターをまたがる ストリーミング リアクティブな通知 コマンドクエリ責務分離 (CQRS) 監査 行動追跡 キャッシュの格納 複合イベント処理 (CEP) Source: イベント駆動アーキテクチャ

Slide 12

Slide 12 text

リクエスト-リプライ型 vs イベント駆動 12 Source: イベント駆動アーキテクチャ 同期型 & 一時的 組み合わせの自由度が低い 単純な方式 障害に対する耐性が低い RESTなどベストプラクティスが豊富 非同期 & 永続化 疎結合 組み合わせの自由度が高い 複雑な方式 障害に対する耐性が高い ベストプラクティスは発展途上

Slide 13

Slide 13 text

イベント駆動マイクロサービス イベント駆動アーキテクチャ 13 Source: 注文 決済 受注 入金 発送 配送 在庫 通知

Slide 14

Slide 14 text

イベントストリーミング ▸ 長期間の永続化, リプレイ, セマンティックなパーティ ショニング, パブリッシャとサブスクライバの数に非依 存、遅れてきたサブスクライバに対してリプレイ ▸ シェアードナッシングのデータ格納方式 ▸ 大量のメッセージ処理時であっても順序を保持 トレードオフ ▸ 確認応答 (ack) が順序どおりに返される、リクエスト - レスポンスへの対応が不得手 ▸ 大量のデータフットプリントと高速なストレージへのア クセスが必要 ▸ 初期導入コストが高い メッセージング ▸ ストアアンドフォワード ▸ 単一のメッセージ交換 (トランザクション, 確認応答 (ack), エラー処理/DLQ*), P2P/競合コンシューマの サポート ▸ パブリッシャ/サブスクライバのサポート トレードオフ ▸ リプレイには非対応 ▸ 高速かつ高可用性のストレージが必要 ▸ 大量のメッセージ処理時に順序は保持しない 14 イベント駆動アーキテクチャ 従来のメッセージングとイベントストリーミングの比較 Source * DLQ: デッドレターキュー

Slide 15

Slide 15 text

APAC Microservices Lines of Business Apps Regions システムとデータ中心の考え方 イベントは接続の必要性に応じて アドホックに設計される イベント中心の考え方 イベントは企業のあらゆるシステム間でやり取 りされるものとして位置づけられる Events Events Events Microservices Apps LOBs Regions 15 イベント駆動アーキテクチャについての考え方 イベント駆動アーキテクチャ Source Events

Slide 16

Slide 16 text

イベントストリーム処理 イベント駆動アーキテクチャ 16

Slide 17

Slide 17 text

ユースケースと利用法 イベント駆動アーキテクチャ 17 ユーザの行動追跡のパイプラインを リアルタイムなパブリッシュ/サブス クライブのデータフィードとして再構 築 Webサイトの行動追跡 メトリクス 分散アプリケーションの統計情報を集約 し、運用に関する集約データフィードを 生成 ログ収集 ログファイルを可用性の高いストレージに集 約し、ログのアクティビティに対してリアルタ イムなアクセスが可能 ストリーム処理 刻々と発生するデータのストリームに 対し、アプリケーションがリアルタイム に反応し、データの変換や処理を行う ことが可能 イベントやデータ変更のストリームを キャプチャし、他のデータシステムにそ のイベントをフィード データインテグレーション Source: https://kafka.apache.org/uses

Slide 18

Slide 18 text

18 Source: イベント駆動アーキテクチャ ● ステートレスな処理とステートフルな処理 ● 複数のストリームからのデータの読み込み データのストリーミング処理 リプレイ可能なストリームによるデータ処理

Slide 19

Slide 19 text

Apache Kafkaとは? 19 Apache Kafkaは、ストリームを対象とした 分散システムです。水平スケールが可能で あり、フォールトトレラントなコミットログとし て設計されており、分散データのストリーム やストリームを処理するアプリケーションを 実現することが可能です。 イベント駆動アーキテクチャ Source

Slide 20

Slide 20 text

AMQ Streamsの概要 イベント駆動アーキテクチャ 20 Source Apache Kafkaをベースとしたエンタープ ライズデータストリーミングプラットフォー ム VM/ベアメタルのRHEL上でスタンドア ローンとして、またはOpenShift上で (Strimziプロジェクトをベース)利用可能

Slide 21

Slide 21 text

Apache Kafka on OpenShift 21 ▸ Red Hat AMQ streamsに含まれるもの: ・ Apache Kafka, Connect, Zookeeper, MirrorMakerのコンテナイメージ ・ Apache Kafkaクラスタ、トピック、ユーザを管理/設定するための Kubernetes Operators ・ Kafka Consumer, Producer, Adminクライアント, Kafka Streams ▸ アップストリームのコミュニティ: Strimzi ・ 100%オープンソースのプロジェクト (Apache License 2.0) ・ Cloud Native Computing Foundation (CNCF)のプロジェクト イベント駆動アーキテクチャ Source

Slide 22

Slide 22 text

● Kafka Core ○ ブローカ ○ Producer API, Consumer API, Admin API ○ 管理用ツール ● Kafka Connect ● Kafka Streams API ● Mirror Maker / Mirror Maker 2 ● HTTPとKafkaのブリッジとなるREST Proxy ● スキーマレジストリ Apache Kafkaのエコシステム 22 Streams API Producer API Consumer API 3rd party tools Mirror Maker Connect イベント駆動アーキテクチャ Source

Slide 23

Slide 23 text

Kafka Connect + Kafka Streams API 23 Other System Other Systems Kafka Application Topic Topic Processing Processing Topic Topic Topic Topic Streams API Kafka Connect Kafka Connect Source Connector Sink Connector イベント駆動アーキテクチャ Source

Slide 24

Slide 24 text

イベント管理バス 24 イベント駆動アーキテクチャ Source Event Capture Apache Kafka Kafka Streams API ソース システム Fuse / Kafka Connect Decision Manager Event Persistent Storage ターゲット システム Fuse / Kafka Connect Storage / Database Events

Slide 25

Slide 25 text

エッジ 〜 1,000 データセンター (地域含む) 5 〜 100 ハイブリッド 2 〜 5 マルチクラウド 2 〜 5 レガシーシステム データソース ● AI & 機械学習 ● 判断エンジン ● プロセスの自動化 ● インメモリ ● アダプタ ● データ処理 ● サーバーレス ● データ変換 ● API管理 イベント駆動連携 データサービス 知的エージェント ストリームデータ基盤 (Kafka) & コンテナストレージ (Ceph) 顧客との接点 顧客に関連する コンテンツシステム 顧客体験に基づく ベストなアクション の導出 最適なチャネルを介して 顧客に価値のあるオファーを提案 25 メール Fax Web履歴 テキスト 情報 モバイル 音声 センサー 顧客イベント 行動データ Kubernetes Operator による運用自動化 カスタマーエンゲージメントハブ データを活用し、高度な顧客体験(UX)を実現するレッドハットのソリューション

Slide 26

Slide 26 text

イベント駆動アーキテクチャ 26 イベント駆動アーキテクチャを実現する製品 Red Hat Integration

Slide 27

Slide 27 text

コンテナとクラウドネイティブアプリケーションの開発 Red Hat Integration 27 Source ▸ Debeziumによるチェンジ データキャプチャ API管理 Events & Messaging Enterprise Integration Data Integration ▸ 多様なコネクタ ▸ マイクロサービスのオーケスト レーション ▸ データ変換 ▸ ローコードのiPaaS ▸ Camel Kによるサーバーレス ▸ JMS Message Broker ▸ 広域でのルーティング ▸ Apache Kafkaによるデー タストリーミング ▸ メッセージングのセルフ サービス化 ▸ API Manager ▸ API Gateway ▸ Istio Service Mesh Adapter ツールとメタデータ管理 ▸ Service Registry ▸ API Designer

Slide 28

Slide 28 text

linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat Thank you 28