見出し画像

Salesforce Pub/Sub API(gRPCベース) の GA と、イベント駆動

超技術的ネタなので、qiitaかzenn.dev かと考えたんですけど、なぜか note.com に投稿するしょっさんです。朗報です。今回の Summer'22 に関連して、近々 Salesforce Pub/Sub API が GA します。

gRPC に従ったお陰で、http/2 や多言語でのサポートを期待できる点が強みです。

Platform Event(変更データキャプチャ) などのイベントストリーミングなやりとりを CometD ではなく gRPC で全て置き換えが可能です。今後のイベント駆動アプリケーション開発がスムーズになり、イベント駆動の進んでる某諸国では、相当なゲームチェンジャーになる可能性があります。

これにより、Salesforce でのデータCRUD やイベントをトリガーに、他システムとの連携が Pub/Sub で実現できます。もちろん、他システムのイベントをトリガーにして、Salesforce へ連携することも同じ手順で可能なわけです。

日本だと、サービスの根底に同期(Multi-phase commit)文化があるので、結果整合性よりACIDが好まれています。ポイントに絞って考えるよりも、提供するサービス全体の特性によって、結果整合性でも良いケースは多いものです。ですから、ACID を一部取り込んだサービス全体のアーキテクチャプリンシパルは、BASE であって良いのです。すべてのサービスが厳密にACIDでなければならないという考え方は、少し横に置いていて良かろうかと。

そして、イベント駆動型を Pub/Subで実現できることにより、イベントバスを中心に据えた某SOA的ESB時代が返り咲く可能性もあります。ただそれは、SOAでいうESBを使ったアーキテクチャ構造に似ているだけの話です。Pub/Sub の利点はバックエンドのサービスを、権限委譲した上での正しいマイクロサービス化も実現できるわけです。

マイクロサービスで語られる ESB っぽい API ゲートウェイ・マネジメントとのちがいは、フロントエンド側でAPIをカタログから探して構築すると言うよりも、各マイクロサービスがイベントストリーミングプラットフォーム上に流れてくる、どのイベントを購読するのか、がポイントです。新しいサービスができあがったら、どんなイベントを放り込むのか、どんなイベントを取り出すのか、各サービス側が決められるのが強みです。

「あるものを探す」から、「提供できるものをだす、欲しいものを得る」をサービス側が判断できるようになります。より、疎結合の世界。

また、イベントストリーミングを介して全てのイベントのやりとりがなされるのであれば、どのようなイベントが発生したか、全ての記録も可能です。イベント駆動スゴイ。

来たれ、イベント駆動の世界。


貴方がサポートしてくれると、私が幸せ。 私が幸せになると、貴方も幸せ。 新しいガジェット・ソフトウェアのレビューに、貴方の力が必要です。