# PubSubの使用例

# レシピの分離

以下の例を考えてみましょう。 私たちの組織は、WebToLead HTTPリクエストを受け取った後にSalesforceにリードを作成するレシピを持っています。このレシピは、オンラインでフォームに記入したリードの連絡先データを取得するために作成されました。リードを作成した後、レシピはPostgresの分析データベースを更新します。

元のレシピ オンラインフォームからSalesforceとPostgreSQLにリードを移動するレシピ

もし私たちの組織がPostgreSQLからRedShiftにデータベースを変更し、メーリングリストアプリケーションとしてMailChimpを使用し始める場合、次のアプローチのいずれかを取ることができます。

# PubSubコネクタを使用せずに元のレシピを変更する

次のようにレシピを更新する必要があります。

変更後のレシピ PostgreSQLの代わりにRedshiftに行を追加し、MailChimpに購読者を追加するための変更後のレシピ

元のレシピの変更には、レシピの開発ライフサイクルの追加のイテレーションが必要となります。レシピは変更され、後方互換性がテストされ、本番環境にプッシュされる必要があります。QAを通過したバグがあれば、本番レシピのダウンタイムが発生します。

# PubSubコネクタを使用する

PubSubトピックを利用すると、元のレシピを次のように構築し、Salesforceのリードを作成してからリードデータをトピックに公開します。このレシピは、そのコンシューマーについて気にする必要がなく、したがってダウンストリームのレシピが変更されていることを知る必要もありません。

パブリッシャーレシピ Salesforceにリードを作成し、リードデータをトピックに公開するパブリッシャーレシピ

リードデータを使用してRedshiftの行を作成する対応するコンシューマーレシピは、次のようになります。

Redshiftの行を作成するコンシューマーレシピ トピックからリードデータを消費し、リードデータでRedshiftの行を作成するコンシューマーレシピ

リードデータを使用してMailChimpのリードを作成する対応するコンシューマーレシピは、次のようになります。

MailChimpのリードを作成するコンシューマーレシピ トピックからリードデータを消費し、リードデータでMailChimpのリードを作成するコンシューマーレシピ

# リアルタイムイベントからバッチを作成する

例えば、同じシナリオではリードが非常に高い速度で生成され、SalesforceとPostgreSQLへのAPI呼び出しの数を最適化する予定です。WebToLeadは1つずつリードを公開するため、単一のレシピではそれを実現することはできません。

PubSubトピックを使用すると、新しいリードを集約し、一定の時間間隔でバッチとして公開することができます。元のレシピは、新しいリードをPubSubトピックに一度に1つずつ公開するだけです。

パブリッシャーレシピ WebToLeadから新しいリードを受け取り、PubSubに公開するパブリッシャーレシピ

対応するコンシューマーレシピは、新しいメッセージのバッチトリガーを使用し、1時間ごとに実行されます。それから、1回のAPI呼び出しでSalesforceとPostgreSQLにバッチ全体を公開します。

コンシューマーレシピ 新しいリードのバッチを受け取り、SalesforceとPostgreSQLに公開するコンシューマーレシピ


Last updated: 2024/2/13 16:59:53