Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Event Driven Architecture by Red Hat

5df7b3418b4b5528ddfe514d73008883?s=47 Taku Sugimoto
November 20, 2020

Event Driven Architecture by Red Hat

Application Services Newsletter 2020/12月号
『今注目の「イベント駆動アーキテクチャ」を理解する! Red Hatの最新ソリューションを紹介』

Iot、AI、マシン、人など、様々なイベントソースからデータが大量に生成されるようになり、それをリアルタイムに処理する必要性からイベント駆動アーキテクチャに注目が集まっています。
ここではイベント駆動アーキテクチャの基本的なことからRed Hatが提供するApache Kafkaを含めたRed Hat Integrationをベースとしたソリューションについても紹介しています。

5df7b3418b4b5528ddfe514d73008883?s=128

Taku Sugimoto

November 20, 2020
Tweet

Transcript

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

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

  3. イベント駆動アーキテクチャ (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
  4. なぜイベント駆動アーキテクチャなのか? イベント駆動アーキテクチャ 4 Source:https://developers.redhat.com/topics/event-driven/ 現実の世界を反映 結合度を低減 現実の世界というのはイベント駆動になっています。日々 の生活において様々なイベントが生成され、システムはそ れに応答しています (人間の中枢神経系など

    )。 従来のRPCスタイルのサービスアーキテクチャでは、サー ビスは密結合となりがちです。アプリケーションの処理に 変更が発生した場合、ソースコードへの変更が必要となり ます。EDAでは、既存のイベントストリームを利用する サー ビスを追加することによって、新機能の追加が可能となり ます。 カプセル化 細かい粒度でのスケーリング サービスの開発チームが独立して開発できるようになること から、マイクロサービスの考え方が広まってきています。 EDAでは、サービスの設計担当者はイベントがどのように利 用されるかを意識する必要がなくなります。 イベントの量に応じて、サービスのスケールアップ /ダウンが 個別に可能です。 ほぼリアルタイムの遅延 顧客はますますリアルタイムに近いエクスペリエンスを求め ています。APIをポーリングする方式にはレスポンスの速さ と負荷に考慮すべきトレードオフがあります。 EDAでは、アプ リケーションは妥協することなくほぼリアルタイムに対応する ことが可能になります。
  5. イベントとは? 5 Image: https://foto.wuestenigel.com/hand-ready-to-push-domino-pieces/ イベントとは、ソフトウェアによっ て認識されるアクションや事象 であり、通常、外部環境から非 同期に発生し、それをイベントと して受け取ったソフトウェアに よって処理される。

    イベント駆動アーキテクチャ
  6. イベントとは? 6 Source: https://developers.redhat.com/topics/event-driven/ クエリ コマンド 非同期型のRPC。 受信者が何をすべきかの指示を含み、 状態の変更が発生する場合がある。 イベント

    コマンドと似ているが、クエリは 結果を返す応答があることを想定。 ただし状態の変更は伴わない。 サービス間の処理において発生した ある特定エンティティの イミュータブルな状態と値。 イベント駆動アーキテクチャ
  7. イベントの利用パターンの分類 7 Source: https://developers.redhat.com/topics/event-driven/ 再送可能 イベントは登録済みのすべてのコンシュー マによって読み込まれるまで持続的に保存 される。従来型のストアアンドフォワード形 式のブローカ。 持続性

    イベントは指定された期間あるいはスト レージ容量まで持続的に保存される。 コンシューマはストリーム内を 前後に移動が可能。 揮発性 イベントはパブリッシュ時にオンライン状態 にあるすべてのコンシューマに伝播される 必要がある。永続化はされない。 イベント駆動アーキテクチャ
  8. 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 コマンド クエリ 揮発性イベント 持続性イベント 再送可能イベント イベント駆動アーキテクチャ
  9. イベント駆動 マイクロサービス イベント駆動アーキテクチャ 9

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

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

    複合イベント処理 (CEP) Source: イベント駆動アーキテクチャ
  12. リクエスト-リプライ型 vs イベント駆動 12 Source: イベント駆動アーキテクチャ 同期型 & 一時的 組み合わせの自由度が低い

    単純な方式 障害に対する耐性が低い RESTなどベストプラクティスが豊富 非同期 & 永続化 疎結合 組み合わせの自由度が高い 複雑な方式 障害に対する耐性が高い ベストプラクティスは発展途上
  13. イベント駆動マイクロサービス イベント駆動アーキテクチャ 13 Source: 注文 決済 受注 入金 発送 配送

    在庫 通知
  14. イベントストリーミング ▸ 長期間の永続化, リプレイ, セマンティックなパーティ ショニング, パブリッシャとサブスクライバの数に非依 存、遅れてきたサブスクライバに対してリプレイ ▸ シェアードナッシングのデータ格納方式

    ▸ 大量のメッセージ処理時であっても順序を保持 トレードオフ ▸ 確認応答 (ack) が順序どおりに返される、リクエスト - レスポンスへの対応が不得手 ▸ 大量のデータフットプリントと高速なストレージへのア クセスが必要 ▸ 初期導入コストが高い メッセージング ▸ ストアアンドフォワード ▸ 単一のメッセージ交換 (トランザクション, 確認応答 (ack), エラー処理/DLQ*), P2P/競合コンシューマの サポート ▸ パブリッシャ/サブスクライバのサポート トレードオフ ▸ リプレイには非対応 ▸ 高速かつ高可用性のストレージが必要 ▸ 大量のメッセージ処理時に順序は保持しない 14 イベント駆動アーキテクチャ 従来のメッセージングとイベントストリーミングの比較 Source * DLQ: デッドレターキュー
  15. APAC Microservices Lines of Business Apps Regions システムとデータ中心の考え方 イベントは接続の必要性に応じて アドホックに設計される

    イベント中心の考え方 イベントは企業のあらゆるシステム間でやり取 りされるものとして位置づけられる Events Events Events Microservices Apps LOBs Regions 15 イベント駆動アーキテクチャについての考え方 イベント駆動アーキテクチャ Source Events
  16. イベントストリーム処理 イベント駆動アーキテクチャ 16

  17. ユースケースと利用法 イベント駆動アーキテクチャ 17 ユーザの行動追跡のパイプラインを リアルタイムなパブリッシュ/サブス クライブのデータフィードとして再構 築 Webサイトの行動追跡 メトリクス 分散アプリケーションの統計情報を集約

    し、運用に関する集約データフィードを 生成 ログ収集 ログファイルを可用性の高いストレージに集 約し、ログのアクティビティに対してリアルタ イムなアクセスが可能 ストリーム処理 刻々と発生するデータのストリームに 対し、アプリケーションがリアルタイム に反応し、データの変換や処理を行う ことが可能 イベントやデータ変更のストリームを キャプチャし、他のデータシステムにそ のイベントをフィード データインテグレーション Source: https://kafka.apache.org/uses
  18. 18 Source: イベント駆動アーキテクチャ • ステートレスな処理とステートフルな処理 • 複数のストリームからのデータの読み込み データのストリーミング処理 リプレイ可能なストリームによるデータ処理

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

    イベント駆動アーキテクチャ Source
  20. AMQ Streamsの概要 イベント駆動アーキテクチャ 20 Source Apache Kafkaをベースとしたエンタープ ライズデータストリーミングプラットフォー ム VM/ベアメタルのRHEL上でスタンドア

    ローンとして、またはOpenShift上で (Strimziプロジェクトをベース)利用可能
  21. 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
  22. • 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
  23. 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
  24. イベント管理バス 24 イベント駆動アーキテクチャ Source Event Capture Apache Kafka Kafka Streams

    API ソース システム Fuse / Kafka Connect Decision Manager Event Persistent Storage ターゲット システム Fuse / Kafka Connect Storage / Database Events
  25. エッジ 〜 1,000 データセンター (地域含む) 5 〜 100 ハイブリッド 2

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

  27. コンテナとクラウドネイティブアプリケーションの開発 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
  28. linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat Thank you 28