Solace PubSub+ Platform を試してみた #EventDrivenArchitecture #eventdriven #pubsub
![](https://www.creationline.com/tech-blog/cms_x3GWkuX/wp-content/uploads/2023/12/solace-logo2-1024x538.png)
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
## はじめに
Solace PubSub+ は、分散型アプリケーションパターンの 1 つであるイベントドリブン型アーキテクチャを実装するためのイベントブローカーサービスです。イベントブローカーの実装は、Solace の PubSub+ の他に、Google Cloud Platform の PubSub や、Amazon Web Service の Kinesis、オープンソースソフトウェアの Apache Kafka などがあります。
イベントブローカーとしての PubSub+ は、アプリケーションから投げられたイベント= メッセージを受け取り保持、そのメッセージを読み取りたいアプリケーションがメッセージを取り出す、というメッセージの仲介の役割を担うものです。
イベントドリブン型アーキテクチャは、イベントをアプリケーション間でやり取りすることにより、そのイベントが発生したタイミングで各アプリケーションが自律的に動作するアーキテクチャを実現します。
Solace は、この PubSub+ を中心とし、イベントドリブン型アーキテクチャを利用者が用意に実現するため、イベントメッシュ、イベントポータルといった機能をプラットフォームとして提供しています。
次章から、「イベントブローカー」「イベントメッシュ」「イベントポータル」それぞれの機能がイベントドリブン型アーキテクチャにおいてどのような役割を担っているのかを説明します。
イベントブローカー: PubSub+
PubSub+ は Solace が提供するプラットフォームの中心となるイベントブローカーです。
イベントブローカーはアプリケーションから投げられる・読み取られるイベントを保持する役割を持っています。イベントを投げるアプリケーションはプロデューサー、イベントを読み取るアプリケーションはサブスクライバーなどと呼ばれます。プロデューサー・コンシューマは、互いの存在を意識する必要がなく、イベントブローカー: PubSub+ に接続するだけで、必要なイベントのやり取りを行うことができます。
PubSub+ は、利用者がクラウドサービス、あるいはプライベートクラウドの環境を選択し、その環境にデプロイして利用します。現在サポートされているクラウドサービスには Google Cloud Service、Amazon Web Service、Azure があります。各クラウドサービスでリージョンを選択することができます。
PubSub+ はイベントをやり取りするためのいくつかのプロトコルを準備しています。現在、独自のプロトコル、AMQP、MQTT、REST に対応しています。それぞれ、プレーンなメッセージをやり取りする方法と、TLS 暗号化されたやり取りの 2 通りの方法が用意されています。実装する環境によって、必要でないプロトコルは使用しないよう指定することもできます。
PubSub+ のデプロイが完了すると、管理画面を見ることができます。
管理画面では PubSub+ のモニタリングの他、PubSub+ とイベントをやり取りするアプリケーションの接続実装方法を確認することができます。サポートされている各プロトコルで、言語毎のライブラリのリンクや、使い方を確認することができます。
また、同じ画面には JavaScript による PubSub+ クライアントアプリケーション実装例があり、イベントを送信する Publisher とイベントを読み取る Subscriber を同じ画面ですぐに試すことができます。このインタフェースから、Publisher は Topic と呼ばれるチャンネル宛にバイナリ形式もしくはテキスト形式でイベント(メッセージ)を送信する、Subscriber はトピックを購読しイベントを読み取るアプリケーションであることがわかります。
イベントメッシュ
イベントドリブン型アーキテクチャに限らず、データを保持している場所、イベントを利用するアプリケーションの場所が同じ場所にあるとは限りません。
Solace のイベントメッシュは、異なる場所にある PubSub+ 同士をつなぎ、アプリケーションが接続している PubSub+ に別の PubSub+ に投入されたイベントを届ける機能を提供します。この機能により、アプリケーションは必要なイベントを取得するために、どのPubSub+に繋げる必要があるか、ということを考える必要はなく、例えば地理的に最も近いPubSub+に繋ぐだけで、必要なイベントは届く、という環境になります。Apache Kafka でいえば、Mirror Maker が提供する機能に近いですが、PubSub+ Platform で提供されるイベントメッシュは、よりインテリジェントな機能と言えるでしょう。
Solace の検証用アカウントでは、作成できる PubSub+ が 1 つに限定されているため、イベントメッシュの機能を試すことはできませんでした。
イベントポータル
PubSub+ でやりとりされるイベントが増えると、「どのようなイベントがあるのか」「そのイベントではどのような内容・スキーマがやりとりされているのか」「そのイベントを参照しているアプリケーションにはどのようなものがあるか」などの観点が必要になってきます。そういった情報が容易に見られなければ、似たようなイベントを投げるアプリケーションが増えたりといった、イベントの再利用効率が悪くなる状況が起こりえます。
そういったイベントの情報の可視化のために、 Solace はイベントポータル画面を提供しています。
イベントは、PubSub+の内部構造としてトピックと呼ばれるチャンネルに保持されます。トピックが同じであればそこでやり取りできるイベントは同一のスキーマを持ちます。トピックの一覧があれば、新たなソリューションが必要な際に、必要なイベントはどのトピックから取得できるのかを見つけることが容易になります。
Solace の利用者は、イベントポータルに入り、手動でトピックとそれに紐づくスキーマを登録します。スキーマは、例えば JSON テキストがイベントとして流れているのであれば、その JSON にはどの要素があるのか、その要素はどういう型の値となるのか、などを情報として記載します。
イベントとスキーマの関係の記載が完了すれば、アプリケーションを定義することができます。アプリケーションは、何らかの 1 つ以上のイベントに関わっている Publisher あるいは Subscriber であり、他のアプリケーションとはイベントを介してつながっていると言えます。
Solace のイベントポータルはこのように記載されたイベント、スキーマ、アプリケーションの関係をネットワーク構造やテーブルで表示することができ、関係性を容易に理解できるインタフェースを提供しています。
また、アプリケーションの一覧があれば、あたらしくアプリケーションを作る必要があるのか、再利用が可能なものが存在しているのかを知ることができます。
おわりに
Solace が提供するイベントドリブン型アーキテクチャについて、その実装に活用するができるプラットフォームの機能について説明しました。
Apache Kafka など、イベントブローカー単体機能の提供はいくつかのサービスでも取り組まれていますが、イベントメッシュやイベントポータルといった、イベントドリブン型アーキテクチャを支える周辺技術まで提供するプラットフォームは限られており、PubSub+ Platform はイベントドリブン型アーキテクチャにシステムをシフトさせる上では大いに役立つのではないかと考えています。
お気軽にご相談ください
マイクロサービス・イベントドリブンについて
興味関心があり、ご相談があれば
以下よりお問い合わせください