# Event streams のユースケース

# レシピの分離

次の例を考えてみましょう。

ある会社には、WebToLead HTTPリクエストを受け取った後に Salesforce でリードを作成するレシピがあります。これは、オンラインでフォームに記入したリードから連絡先データを取得するために構築されました。リードを作成した後、レシピは Postgres の分析データベースを更新するというものです。

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

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

# Event streams を使わずに元のレシピを修正する

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

修正されたレシピ PostgreSQL の代わりに Redshift に行を追加し、MailChimp に購読者を追加するために修正されたレシピ

元のレシピへの変更は、レシピを修正し、後方互換性のためのテストを行い、本番環境にプッシュする必要があるため、レシピ開発ライフサイクルの追加のイテレーションを必要とします。QA をすり抜けたバグは、本番レシピのダウンタイムを引き起こします。

# Event streams を使用する

Event streams を利用する場合、リードデータをトピックに公開する前に Salesforce リードを作成するために、元のレシピをこのように構築します。このレシピは、そのサブスクライバーを気にする必要がないため、下流のレシピが変更されていることを知る必要がありません。

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

リードデータで Redshift の行を作成する対応するサブスクライバーレシピは次のようになります。

Redshift の行を作成するサブスクライバーレシピ トピックからリードデータを取得し、リードデータで Redshift の行を作成するサブスクライバーレシピ

リードデータで MailChimp のリードを作成する対応するサブスクライバーレシピは次のようになります。

MailChimp のリードを作成するサブスクライバーレシピ トピックからリードデータを取得し、リードデータで MailChimp のリードを作成するサブスクライバーレシピ

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

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

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

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

対応するサブスクライバー用レシピは 新しいメッセージのバッチトリガー を使用し、1 時間に一度実行されます。その後、バッチ全体を Salesforce と PostgreSQL にそれぞれ 1 回の API 呼び出しで公開します。

サブスクライバーレシピ 新しいリードのバッチを受け取り、Salesforce と PostgreSQL に公開するサブスクライバーレシピ


Last updated: 2024/12/18 21:44:08