変更データキャプチャの概要
学習の目的
この単元を完了すると、次のことができるようになります。
- 変更イベントとは何かを説明する。
- ストリーミングテクノロジーの利点を説明する。
- 変更イベントを使用する場合を説明する。
このモジュールを始める前に
すぐにでも始めたいと思っていらっしゃると思いますが、このモジュールを完了するために理解しておく必要な概念について先に少しご説明させてください。
変更データキャプチャに登録する方法の 1 つとして Apex トリガーの使用があるため、Apex クラスとトリガー、そして Apex テストの基本事項を抑えておく必要があります。
- これまで Apex を使用したことがなく、オブジェクト指向プログラミングの初心者である場合は、「Apex コーディングスキルの構築」トレイルを参照してください。このトレイルは、Apex の知識をゼロから習得するための一連のモジュールで構成されています。
- オブジェクト指向プログラミングに精通し、Apex について学習したい方は、「Apex の基礎とデータベース」、「Apex テスト」、「Apex トリガー」などのモジュールがお勧めです。
また、プラットフォームイベントに関する知識があると、特殊なプラットフォームイベントである変更データキャプチャを理解するうえで役立ちます。このモジュールを修了するための必須事項ではありませんが、「プラットフォームイベントの基礎」モジュールも受講することをお勧めします。
変更データキャプチャとは?
変更データキャプチャは Lightning プラットフォーム上のストリーミング製品で、Salesforce データを外部データと効率よく統合できるようにします。変更データキャプチャを使用すると、Salesforce レコードの変更をリアルタイムに受信し、外部データストアの対応するレコードに同期できます。変更データキャプチャでは、作成、更新、削除、復元の各操作に対応する Salesforce レコード内の変更についてイベントが公開されます。
変更データキャプチャを使用すると、定期的なエクスポートや API ポーリングを行わずに外部システムのデータを更新できます。変更データキャプチャイベント通知で変更を取得すると、外部データをリアルタイムに更新し、常に最新に保つことができます。
変更データキャプチャは、クラウドのリアルタイムのデータ複製プロセスの一部と考えることができます。データ複製には、次のフェーズが含まれます。
- データセット全体を外部システムに初期 (0 日目) コピーする
- 新規および更新されたデータを外部システムと継続的に同期する
- 2 つのシステム間の重複データを調整する
変更データキャプチャは、複製の継続的な同期部分です (ステップ 2)。つまり、レコードが新規追加または変更されたら、Salesforce データのデルタを公開します。変更データキャプチャには、イベントを受信し、外部システムで更新を実行するインテグレーションアプリケーションが必要です。
ストリーミングイベントとは何か、使用する理由は?
ストリーミングイベントは、あるシステム (公開者) が別のシステム (登録者) に送信するインスタント通知メッセージです。変更データキャプチャでは、公開者/登録者モデルを使用して、Salesforce でデータ変更があると常に通知を登録者に送信します。通知メッセージはイベントバスに送信され、クライアントは Pub/Sub API または Apex トリガーを使用してこのイベントバスに登録できます。イベント駆動型システムは、分散エンタープライズシステム間の通信を合理化し、拡張性を高め、リアルタイムデータを配信します。イベント駆動型アーキテクチャを使用してシステムに接続するのは、SOAP API や REST API などの API を通じてデータをポーリングするよりも効率的です。API を使用してデータ更新があるかサーバーをポーリングする場合、データの鮮度はポーリング頻度によって決まります。また、クライアントが過度にコールを行ってサーバーのパフォーマンスを低下させることがあります。
変更データキャプチャを使用する場合
ERP (エンタープライズリソースプランニング) システムにビジネス情報を保存し、Salesforce のデータの一部が重複しているとします。ERP データが最新に保たれるように、変更イベントを使用して Salesforce レコードへの変更を ERP システムに同期できます。たとえば、注文情報が ERP システムと Salesforce の両方にある場合、注文の変更イベントを Salesforce からインテグレーションアプリケーションにストリーミングできます。アプリケーションがその変更を ERP システムに同期します。
変更イベントを使用して次の操作を行うことができます。
- 作成、更新、削除、復元操作を含む、Salesforce レコードの変更に関する通知を受信する。
- すべてのレコードの大半の項目の変更をキャプチャする。
- イベントヘッダーで変更に関する情報 (変更の発生元など) を取得する。それにより、クライアントが生成する変更を無視できる。
- 同じトランザクションに複数の操作が含まれている場合、トランザクション境界を使用してデータ更新を実行する。
- バージョン管理されたイベントスキーマを使用する。
- 拡張可能な方法で一括変更に登録する。
- 保持されている過去 3 日以内のイベントにアクセスする。
次の単元では、ヘッダー項目など、変更イベントメッセージの詳細を説明します。
インテグレーションアプリケーションの例
Robert Bullard は、CRM の実装を専門とするコンサルティング会社 Get Cloudy Consulting のソフトウェア開発者です。Robert は、ある顧客の HR 同期アプリケーションを開発中です。このアプリケーションは、Salesforce レコードのデータ変更を Salesforce 以外の HR システムに同期します。Robert がコンサルティングしている顧客では、人事データの一部を Salesforce の Employee__c カスタムオブジェクトレコードとして作成し、変更しています。このお客様は、HR システムの従業員データを Salesforce と同期したいと考えています。
Robert のインテグレーションアプリケーションには次の要件があります。
- 従業員 (Employee__c) カスタムオブジェクトレコードが新規追加または変更されるたびに、HR データストアに複製する。
- すべての従業員レコードとそのすべての項目を複製する。
- トランザクションベースの複製を使用する。1 つのトランザクションに複数の更新が含まれる場合、インテグレーションアプリケーションはこれらの更新を 1 つのトランザクション内で送信します。
- データ複製プロセスが失敗した場合、保存されている過去 3 日以内のイベント通知から複製を再開する。
変更データキャプチャを使用したデータ同期
Robert は、Salesforce のさまざまなイベントストリーミングオプションを確認した結果、変更データキャプチャが最適であると判断しました。アプリケーションを従業員カスタムオブジェクトのチャネルに登録すると、変更があるたびに、アプリケーションは通知と共に変更されたすべての項目を受信します。アプリケーションは、通知メッセージのヘッダー項目を調べ、変更をすぐにコミットできるのか、変更を他の変更と結合する必要があるのかを判断します。Salesforce には変更イベントが最大 3 日間保存されるため、アプリケーションは受信しなかった通知を取得できます。
リソース
-
Salesforce Developers: Change Data Capture Developer Guide (変更データキャプチャ開発者ガイド)
-
Salesforce Developers: Pub/Sub API Developer Guide (Pub/Sub API 開発者ガイド)
-
Trailhead: プラットフォームイベントの基礎