これまでのブログ記事で既にご存知かもしれませんが、私はニューヨーク市の架空のタクシー会社(NYC Modern Taxi)を使用して、リアルタイムのデータとモバイル技術をビジネスに統合した場合に、現実の企業が何に苦労するかの特性と課題を示しています。最初は OpenTeleMetry を使用した分散トレースについて話しました。最近の記事では、Salesforce を有効にするイベントの価値について説明しました。
NYC Modern Taxi は、より優れたカスタマーエクスペリエンスと低コストを実現し、イベントルーティングを使用できるように、イベントドリブン型アーキテクチャ(EDA)を使用して(Uber や Lyft と競争するための)新しいライドシェアアプリを実装することにしました。NYC Modern Taxi は、イベントドリブン型アーキテクチャのジャーニーに何らかのサポートが必要であることを認識し、PubSub+ Event Portal を使用してイベントの視覚化、統括、管理、検出、カタログ化を始めました。
NYC Modern Taxi は、PubSub+ Event Portal の主な機能について動画やブログ記事で知っていましたが、イノベーションを容易にする過程で、それ以外の機能も見つけました。ここでは、企業全体でイベントドリブン型アーキテクチャを実装すると効果が発揮される、PubSub+ Event Portal で実現できる 8 つの項目をご紹介します。
- タグを使用してイベントドリブン型のアーキテクチャを理解する
- 詳細検索で詳しく確認する
- アプリケーションに所有権を割り当てる
- リビジョンでの問題を把握する
- 説明フィールドでディープリンクとダイレクトリンクを作成する
- 検索を使用して Kafka 検出のインポートを合理化する
- アプリケーションの AsyncAPI 定義をエクスポートする
- オブジェクトを異なるドメインに割り当てる
1. タグを使用してイベントドリブン型のアーキテクチャを理解する
成熟したイベントドリブン型アーキテクチャを持つ大企業は、数百のイベントやアプリケーションを保有している場合があります。NYC Modern Taxi は、3 つの本番ドメインと 1 つのテストドメインをまたいだおよそ 12 のアプリケーションを持つ比較的単純なシステムを保有していますが、その限られた規模においても、特に 1 対多の特性を持つイベントではイベントフローを理解することが引き続き課題となります。
NYC Modern Taxi のアーキテクトは、アプリケーションを機能ベースのドメインに分割することを早期に決めました。
- オペレーション(リアルタイムイベントに重点を置く)
- バックオフィス(サービスとしてのソフトウェアのインタラクション)
- 分析(Kafka などのストリーミングソリューションとそれを活用するツールへの橋渡しをする)
ドライバーと乗客間のリアルタイムインタラクションに関連するアプリケーションとイベントを格納する、オペレーションドメインの概要を次に示します。
幸いにも、NYC Modern Taxi はいくつかの PubSub+ Event Portal の機能を使用して、関連情報に重点を置くことで複雑さを軽減しています。1 つ目はタグです。タグを使用すると、スキーマ、イベント、およびアプリケーションに 1 つまたは複数のフリーテキストラベルを適用できます。Gmail 内で、メールに「税金」や「Vandelay Industries パートナーシップ」などのラベルを付ける方法に似ています。タグの柔軟性により、組織はさまざまな方法でタグを使用できますが、NYC Modern Taxi では、「モバイルアプリケーション」、「給与処理」、「ドライバーの乗務中」などのユースケースを識別するためにこれを使用しています。
ユースケースタグにより、カテゴリ別に整理することが可能です。まず、どのユースケースがイベントに関連付けられているかを特定するだけでも役に立ちます。たとえば、RideUpdated イベントには、特定の乗車状況(ライドシェアリング会社にとって重要なイベント)に関する最新情報が含まれます。
変更を行う際には、多くのコンシューマーと複数のユースケースを考慮する必要があります。タグを使用するとこれが容易になります。
タグを表示できることは素晴らしいですが、グラフィカルデザイナービューをフィルタリングして、特定のユースケースに関連するオブジェクトのみを強調表示すると、さらに多くのインサイトを得ることができます。たとえば、以下の Designer イメージでは、モバイルユースケースに関連するオブジェクトのみが強調表示されます。
2. 詳細検索で詳しく確認する
NYC Modern Taxi は、イベント、スキーマ、アプリケーションにラベルを添付しますが、時にはオブジェクトの内部を調べる必要があります。NYC Modern Taxi は、各ドライバーに driver_id と呼ばれる一意の識別子を割り当て、それを複数のスキーマに含めます。これは、アプリケーションの多くでは利用者が誰なのかが重要となるためです。
一元化されたリポジトリと特殊なツールがなければ、driver_id を含むスキーマをすべて追跡することは困難ですが、幸い、PubSub+ Event Portal Catalog は両方を備えています。その強力な検索ツールでは、トピック文字列、スキーマ本文、説明、オブジェクト名など、driver_id を使用するスキーマとその使用方法が正確に表示されます。
3. アプリケーションに所有権を割り当てる
イベントドリブン型アーキテクチャにより、NYC Modern Taxi はアプリケーションを疎結合できます。これにより、負荷下での独立したスケーリング、並列実行による応答時間の短縮、エラー処理の簡素化など、実行時に多数のメリットが得られます。開発中、疎結合によって、複数の独立した開発チーム間でアプリケーションが委任されます。そのため、1 つのモノリシックリリースを待つ必要なく、革新的な機能を作成できます。
しかし、疎結合環境であっても、イベントとその基礎となるデータ構造がアプリケーション間のインタフェースとして機能しているため、チームは引き続きコミュニケーションを行う必要があります。イベントのスキーマが変更された場合、影響を受けるチームはそのことを知る必要があります。それが新しいフィールドであれば、他のチームはそのフィールドを使用して機能を向上できるかもしれません。そして、イベントの変更に下位互換性がない場合は、そのイベントを作成または使用するすべての関係者が認識しておく必要があります。
NYC Modern Taxi は、それぞれのアプリケーションに所有者を割り当てることにより、意識付けとコミュニケーションを促します。これにより、あるアプリケーションチームがイベントに変更を加えると、影響を受けるアプリケーション所有者が対応できるよう、時間通りに通知できます。Event Portal は、アプリケーション(またはスキーマ、イベント)に 1 人以上の所有者を容易に割り当てることでこの処理を進めることができます。
所有者はすべてのオブジェクトに表示されますが、NYC Modern Taxi は、検索を使用して 1 人が所有するすべてのスキーマ、イベント、およびアプリケーションを簡単に追跡することもできます。
4. リビジョンでの問題を把握する
誠意を尽くし、責任を明確にしていても、問題が発生することはあります。結果として、NYC Modern Taxi のアーキテクチャとその変化を理解することが非常に重要になります。夜中の 2 時にドライバーが突然アプリにログインできなくなった場合には特に重要です。再び、PubSub+ Event Portal の出番です。
複雑な環境では、変更は意図しない結果をもたらす可能性があります。いつ、誰が、何を、なぜ変更したかを把握することは、物事を解決する上で重要なステップです。PubSub+ Event Portal は、リビジョンの作成日時、作成者、およびその時点でのスキーマの内容など、すべてのオブジェクトの実行中のリビジョン履歴を保持します。
PubSub+ Event Portal では、NYC Modern Taxi サポートスタッフがバージョン(たとえば、エラーを発生させた現在のバージョンの RideUpdated と、正常に動作していた以前のバージョン)を比較し、現在何が変わったのかを明確にし、何がエラーを発生させたかについての情報も提供できることもあります。
残念ながら、広範に調査をした後であっても、問題なく動いていたことがわかっているバージョンに戻すことが最善の策となる場合があります。PubSub+ Event Portal では、ワンクリックでこの操作を行うことができます。
5. 説明フィールドでディープリンクとダイレクトリンクを作成する
多くの企業と同様に、NYC Modern Taxi は自社のエコシステム内に多くのツールを持っています。幸いにも、PubSub+ Event Portal のオブジェクト記述フィールドは HTML 機能をサポートしています。NYC Modern Taxi は、これらの機能を使用して GitHub リポジトリへのディープリンクと Boomi 内のソースプロセスへのダイレクトリンクを作成します。
6. 検索を使用して Kafka 検出のインポートを合理化する
NYC Modern Taxi は、すべてのイベントを分析のために Kafka に送信します。すべてを円滑に進めるため、PubSub+ Event Portal を使用して、検出ツールで Kafka コンシューマーグループ、コネクタ、トピック、スキーマを管理します。Kafka オブジェクトをインポートすると、PubSub+ Event Portal の検索機能を使用して、インポートされたトピックのリストを動的にフィルタリングできるため、エンジニアはそれらを適切なドメインへとすばやく割り当てることができます。
7. アプリケーションの AsyncAPI 定義をエクスポートする
こちらも、もう少し広く知られている程度ですが、この方法も NYC Modern Taxi が Spring Cloud Streams アプリケーションを強化するのに役立ちます(自分で構築することができます)。アーキテクチャを定義すると、PubSub+ Event Portal はアプリケーションの AsyncAPI 定義をワンクリックでエクスポートできます。
AsyncAPI 定義の YAML または JSON バージョンのどちらかをダウンロードできます。これらを使用することで、Spring Cloud Streams の開発をすばやく開始できます。
8. オブジェクトを異なるドメインに割り当てる
ほとんどの組織と同様、NYC Modern Taxi も定期的に組織とその技術を再構築します。PubSub+ Event Portal を使用すると、移動機能を使用して、オブジェクトを異なるドメインに簡単に再割り当てし、実際の組織を反映することができます。
イベントドリブン型アーキテクチャにとっての Event Portal の重要性
イベントドリブン型アーキテクチャを採用することに決めた方には、PubSub+ Event Portal はこの上ないほど便利です。チーム全体が、イベントを共同設計し、システム全体で再利用できるようにカタログ化し、長期にわたってランタイムとライフサイクルの両方をアクティブに監視および管理できるようにする機能は非常に強力です。
イベントドリブン型アーキテクチャを使い始めたばかりの人、うまく進められている人、PubSub+ Event Portal について学習し始めたばかりの人、NYC Modern Taxi の架空のストーリーに自身を重ね合わせている人のいずれであっても、PubSub+ Event Portal などのフル機能のイベントポータルを使用することで、イベントドリブン型アーキテクチャの利点をはるかに簡単に享受し、維持できることをこの記事でご理解いただければと思います。