Share
Embed
Event Driven Architecture by Red Hat
Application Services Newsletter 2020/12月号
『今注目の「イベント駆動アーキテクチャ」を理解する! Red Hatの最新ソリューションを紹介』
Iot、AI、マシン、人など、様々なイベントソースからデータが大量に生成されるようになり、それをリアルタイムに処理する必要性からイベント駆動アーキテクチャに注目が集まっています。
ここではイベント駆動アーキテクチャの基本的なことからRed Hatが提供するApache Kafkaを含めたRed Hat Integrationをベースとしたソリューションについても紹介しています。
Taku Sugimoto
November 20, 2020
Transcript
28 slides
-
イベント駆動アーキテクチャ (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 Source:https://developers.redhat.com/topics/event-driven/ 現実の世界を反映 結合度を低減 現実の世界というのはイベント駆動になっています。日々 の生活において様々なイベントが生成され、システムはそ れに応答しています (人間の中枢神経系など
)。 従来のRPCスタイルのサービスアーキテクチャでは、サー ビスは密結合となりがちです。アプリケーションの処理に 変更が発生した場合、ソースコードへの変更が必要となり ます。EDAでは、既存のイベントストリームを利用する サー ビスを追加することによって、新機能の追加が可能となり ます。 カプセル化 細かい粒度でのスケーリング サービスの開発チームが独立して開発できるようになること から、マイクロサービスの考え方が広まってきています。 EDAでは、サービスの設計担当者はイベントがどのように利 用されるかを意識する必要がなくなります。 イベントの量に応じて、サービスのスケールアップ /ダウンが 個別に可能です。 ほぼリアルタイムの遅延 顧客はますますリアルタイムに近いエクスペリエンスを求め ています。APIをポーリングする方式にはレスポンスの速さ と負荷に考慮すべきトレードオフがあります。 EDAでは、アプ リケーションは妥協することなくほぼリアルタイムに対応する ことが可能になります。 -
イベントとは? 6 Source: https://developers.redhat.com/topics/event-driven/ クエリ コマンド 非同期型のRPC。 受信者が何をすべきかの指示を含み、 状態の変更が発生する場合がある。 イベント
コマンドと似ているが、クエリは 結果を返す応答があることを想定。 ただし状態の変更は伴わない。 サービス間の処理において発生した ある特定エンティティの イミュータブルな状態と値。 イベント駆動アーキテクチャ -
イベントの利用パターンの分類 7 Source: https://developers.redhat.com/topics/event-driven/ 再送可能 イベントは登録済みのすべてのコンシュー マによって読み込まれるまで持続的に保存 される。従来型のストアアンドフォワード形 式のブローカ。 持続性
イベントは指定された期間あるいはスト レージ容量まで持続的に保存される。 コンシューマはストリーム内を 前後に移動が可能。 揮発性 イベントはパブリッシュ時にオンライン状態 にあるすべてのコンシューマに伝播される 必要がある。永続化はされない。 イベント駆動アーキテクチャ -
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 コマンド クエリ 揮発性イベント 持続性イベント 再送可能イベント イベント駆動アーキテクチャ -
イベント駆動アーキテクチャのユースケース 11 データセンターをまたがる ストリーミング リアクティブな通知 コマンドクエリ責務分離 (CQRS) 監査 行動追跡 キャッシュの格納
複合イベント処理 (CEP) Source: イベント駆動アーキテクチャ -
リクエスト-リプライ型 vs イベント駆動 12 Source: イベント駆動アーキテクチャ 同期型 & 一時的 組み合わせの自由度が低い
単純な方式 障害に対する耐性が低い RESTなどベストプラクティスが豊富 非同期 & 永続化 疎結合 組み合わせの自由度が高い 複雑な方式 障害に対する耐性が高い ベストプラクティスは発展途上 -
イベントストリーミング ▸ 長期間の永続化, リプレイ, セマンティックなパーティ ショニング, パブリッシャとサブスクライバの数に非依 存、遅れてきたサブスクライバに対してリプレイ ▸ シェアードナッシングのデータ格納方式
▸ 大量のメッセージ処理時であっても順序を保持 トレードオフ ▸ 確認応答 (ack) が順序どおりに返される、リクエスト - レスポンスへの対応が不得手 ▸ 大量のデータフットプリントと高速なストレージへのア クセスが必要 ▸ 初期導入コストが高い メッセージング ▸ ストアアンドフォワード ▸ 単一のメッセージ交換 (トランザクション, 確認応答 (ack), エラー処理/DLQ*), P2P/競合コンシューマの サポート ▸ パブリッシャ/サブスクライバのサポート トレードオフ ▸ リプレイには非対応 ▸ 高速かつ高可用性のストレージが必要 ▸ 大量のメッセージ処理時に順序は保持しない 14 イベント駆動アーキテクチャ 従来のメッセージングとイベントストリーミングの比較 Source * DLQ: デッドレターキュー -
APAC Microservices Lines of Business Apps Regions システムとデータ中心の考え方 イベントは接続の必要性に応じて アドホックに設計される
イベント中心の考え方 イベントは企業のあらゆるシステム間でやり取 りされるものとして位置づけられる Events Events Events Microservices Apps LOBs Regions 15 イベント駆動アーキテクチャについての考え方 イベント駆動アーキテクチャ Source Events -
ユースケースと利用法 イベント駆動アーキテクチャ 17 ユーザの行動追跡のパイプラインを リアルタイムなパブリッシュ/サブス クライブのデータフィードとして再構 築 Webサイトの行動追跡 メトリクス 分散アプリケーションの統計情報を集約
し、運用に関する集約データフィードを 生成 ログ収集 ログファイルを可用性の高いストレージに集 約し、ログのアクティビティに対してリアルタ イムなアクセスが可能 ストリーム処理 刻々と発生するデータのストリームに 対し、アプリケーションがリアルタイム に反応し、データの変換や処理を行う ことが可能 イベントやデータ変更のストリームを キャプチャし、他のデータシステムにそ のイベントをフィード データインテグレーション Source: https://kafka.apache.org/uses -
AMQ Streamsの概要 イベント駆動アーキテクチャ 20 Source Apache Kafkaをベースとしたエンタープ ライズデータストリーミングプラットフォー ム VM/ベアメタルのRHEL上でスタンドア
ローンとして、またはOpenShift上で (Strimziプロジェクトをベース)利用可能 -
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 -
• 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 -
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 イベント駆動アーキテクチャ Source Event Capture Apache Kafka Kafka Streams
API ソース システム Fuse / Kafka Connect Decision Manager Event Persistent Storage ターゲット システム Fuse / Kafka Connect Storage / Database Events -
エッジ 〜 1,000 データセンター (地域含む) 5 〜 100 ハイブリッド 2
〜 5 マルチクラウド 2 〜 5 レガシーシステム データソース • AI & 機械学習 • 判断エンジン • プロセスの自動化 • インメモリ • アダプタ • データ処理 • サーバーレス • データ変換 • API管理 イベント駆動連携 データサービス 知的エージェント ストリームデータ基盤 (Kafka) & コンテナストレージ (Ceph) 顧客との接点 顧客に関連する コンテンツシステム 顧客体験に基づく ベストなアクション の導出 最適なチャネルを介して 顧客に価値のあるオファーを提案 25 メール Fax Web履歴 テキスト 情報 モバイル 音声 センサー 顧客イベント 行動データ Kubernetes Operator による運用自動化 カスタマーエンゲージメントハブ データを活用し、高度な顧客体験(UX)を実現するレッドハットのソリューション -
コンテナとクラウドネイティブアプリケーションの開発 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