このテキストは、Salesforce の自動翻訳システムを使用して翻訳されました。アンケートに回答して、このコンテンツに関するフィードバックを提供し、次に何を表示するかお知らせください。
このガイドは、Salesforce Platform での非同期処理の要件に適したアプローチを評価するのに役立ちます。各アプローチについて説明し、それぞれの長所と制限事項を詳しく説明します。ほとんどのアプローチは商品機能に沿っていますが、一部のアプローチでは複数の機能を連携して使用します。このガイドには、各アプローチを使用するケースが強調表示されています。
非同期処理には、アーキテクチャにとって 2 つの大きな利点があります。まず、非同期プロセスのガバナ制限が高くなるため、拡張性が向上します。次に、非同期要求は独自のスレッドで実行されるため、ユーザーはバックグラウンドで非同期 ToDo を実行しながら他の作業を実行できます。
このガイドでは、Salesforce Platform 内の非同期処理テクノロジーの選択のみに焦点を当てています。意思決定プロセスに役立つその他のリソースは、[[リソース] セクション](#リソース)に表示されます。
| Salesforce Lightning Platformは、従業員、自律型AIエージェント、会社のデータ、アプリケーションを単一の信頼できるシステムに統合し、生産性とカスタマー エクスペリエンスを向上させる包括的なAI駆動型プラットフォームです。Customer 360アプリケーション、Data Cloud、Slackを接続してエンドツーエンドの自動化を実現することで、「エージェント エンタープライズ」の作成を可能にします。 |
このドキュメントでは、MuleSoft、Informatica、Commerce Cloud、Tableau、Marketing Cloud など、他のエコシステムのテクノロジーは扱っていません。
- **非同期処理を使用する前に、使用事例がパターンに適合していることを確認してください。**非同期パターンには SLA がなく、複数のガバナメカニズムが適用され、ライセンスに基づいて業務量制限が定義されている可能性があります。また、Salesforce Platform 内の非同期インフラストラクチャに割り当てられるリソースの有限性が原因で処理遅延が発生する可能性があります。ユーザーが作業を続行する前にシステムからの応答を必要とするシナリオで非同期処理を使用する場合は、次の制限事項を考慮してください。
- **Salesforce による非同期処理は、無限の拡張ニーズに対応するソリューションではありません。**Salesforce Platform は無限に拡張されず、非同期パターンには制限があります。非同期処理では、CPU が命令ストリームを実行するために必要なコンテキスト情報が含まれるスレッドが使用されます。スレッドは並列で実行できます。どの CPU でも使用可能なスレッド数は限られているため、プラットフォームには使用可能なスレッドをできるだけ効率的に使用するメカニズムがあります。プラットフォームのフロー制御メカニズムにより、組織が大量のスレッドを消費して他の組織に悪影響が及ぶことを防ぎます。プラットフォームの適正使用アルゴリズムは、組織が特定のメッセージ種別ごとに使用できるスレッドの数も制御します。
- **極端な負荷を引き起こす可能性のあるイベントを考慮します。**非同期プロセスを設計する場合、ワークロードの急増と停滞を予測どおりに管理できることを確認します。実装で停電などの予期しないイベントをどのように処理するかを検討し、データの損失や機能の損失を軽減する保護策を設計します。
次の表に、Salesforce での非同期処理に使用できるツールの概要を示します。次の表を参照して、意思決定プロセス中に各ツールの主要な特性を確認してください。アーキテクチャに適したツールの選択については、「使用事例と判断ポイント」を参照してください。
| アプローチ | 説明 | 必要なスキル | ライセンスと制限 |
|---|---|---|---|
| Queueable Apex | 実行時間の長いデータベース操作や外部 Web サービスのコールアウトが含まれるプロセスに使用します。Queueable Apex には、ジョブ ID、プリミティブ型以外の種別のサポート、ジョブのチェーンなどの機能があります。 | プロコード | ライセンス数によって制限が増加する可能性があります。 |
| Apex の一括処理 | レコードセットを分割して管理可能なチャンクで処理することで、数百万件のレコードが含まれる複雑で実行時間の長いプロセスを構築します。 | プロコード | ライセンス数によって制限が増加する可能性があります。 |
| スケジュール済み Apex | cron 式で定義されたスケジュールされた時間に Apex を実行します。cron 式を使用して Apex をスケジュールする動作は非同期プロセスですが、基盤となるコードはジョブの開始時に同期して実行されます。 | プロコード | ライセンス数によって制限が増加する可能性があります。 |
| Apex 継続コールアウト | 同期トランザクション コンテキストで実行されている Apex メソッドからコールアウトを実行します。 | プロコード | いいえ |
| 非同期パス (レコードトリガーフロー) | 独自の時間に実行する操作を実行します。フローをトリガーしたレコードに含まれていない関連レコードの値を更新したときに発生する混在 DML エラーを回避します。 | ローコード | ライセンスの数と種類によって制限が増加する可能性があります。 |
| スケジュール済みパス (確定後フロー) | トリガーイベント (レコードの作成、更新、削除など) 後の動的にスケジュールされた時間に実行します。 | ローコード | ライセンスの数と種類によって制限が増加する可能性があります。 |
| スケジュール済みフロー | 指定した時刻と繰り返し頻度 (毎日、毎週、または 1 回) でフローをバックグラウンドで実行し、レコードのバッチに対してアクションを実行します。 | ローコード | ライセンスの数と種類によって制限が増加する可能性があります。 |
| プラットフォームイベントトリガー | Salesforce を外部システムと疎結合し、Salesforce Platform 内の非同期コンポーネント間で通信します。 | ローコード + プロコード | 大規模プラットフォームイベントの使用事例にはアドオンライセンスが必要 |
| 変更データキャプチャ | データベーストランザクションがコミットされた後に、変更イベントを非同期で取得して処理します。 | プロコード | ベースラインの割り当てを超える拡張を行うには、アドオン ライセンスが必要です。 |
| Bulk API | 多数のレコードを非同期で挿入、更新、更新/挿入、クエリ、削除し、後で結果を処理します。 | プロコード | 制限があります。 |
| Lightning アクション | Lightning ページで、ユーザーにページの完全な更新を強制せずにサーバーとやりとりできるようにします。 | ローコード | いいえ |
次の表に、使用する非同期ツールを決定するときの考慮事項の概要を示します。
| 必要なスキル | このガイドで説明されているツールには、コードが必要なものと、宣言的に設定できるものがあります。選択肢を検討するときに、チームメンバーのスキルセットについて考えます。最初の実装で (実装パートナーを介して) 開発者が対応可能であっても、将来ソリューションの変更が必要になる場合があります。メンテナンスチームに開発者がいない場合は、ローコードオプションが適しています。 |
| 適用されるプラットフォーム制限の種別 | 実行に適用される制限の種類を決定します。ソリューションを設計するときに、選択したアプローチのガバナ制限にトランザクションの量と頻度がどのように反映されるかを慎重に検討します。毎日実行される実行数を計算します。選択したツールに関連付けられた制限内に計算値が含まれていることを確認します。 |
| 遅延 | 処理の結果をプラットフォームでどの程度迅速に使用できるかを決定します。一部のアプローチでは、変更はほぼ即座に行われますが、別のアプローチでは数分から数時間かかる場合があります。 |
非同期処理のツールを選択する場合、まず組織の要件と使用可能なリソースを評価します。目標は、実装コストとメンテナンスコストを最小限に抑えながら、拡張性を確保し、制限違反の可能性を最小限に抑えるツールを選択することです。この目標は、以前に説明した技術的な考慮事項と、チームの構成によって異なります。
Salesforce の非同期注文プロセスについて考えてみます。注文が保存されると、品目の梱包および配送方法に関する特別な指示を含むメッセージが外部倉庫管理システムにトリガーされます。注文を行ったユーザーは、倉庫管理システムからすぐに応答する必要がないため、要求を非同期で送信できます。非同期処理により、ユーザーは応答を待たずに作業を続行できます。
この使用事例では、Apex を使用して実装することを検討してください。この方法は、プロコード・ソリューションを保守できる Apex 開発者がチーム内にいる場合にのみ機能します。それ以外の場合は、宣言型のアプローチがより理にかなっています。また、ツールごとに異なる制限が適用されます。
次の表は、一般的な使用事例を左端の列にリストし、その後に説明を示します。[*First Choice (*最初の選択肢)] 列には、このような使用事例を満たすために使用される最も典型的なアプローチと、最初の選択肢アプローチの根拠が表示されます。これを分析の開始点として使用します。最初の選択肢のアプローチでは、使用事例で使用できない制限がある場合があります。
| 使用事例 | 説明 | First Choice Approach (第一選択肢アプローチ) | 根拠 |
|---|---|---|---|
| 高パフォーマンスのバッチ処理 | 何千、何百万ものレコードを効率的に処理する必要がある自動化 | Batch Apex | Batch Apex は、プラットフォームとのインタフェースと未フォーマット時の処理速度を実現する豊富な API を提供します。 |
| データ消去ジョブ | データをクリーンアップするために定期的またはオンデマンドで実行されるジョブ。たとえば、重複除外、住所検証、データ統合などがあります。 | Batch Apex | Batch Apex は、プラットフォームとのインタフェースと未フォーマット時の処理速度を実現する豊富な API を提供します。 |
| 夜間積み上げ集計ジョブ | 営業日の終わりに積み上げ集計データを計算するジョブ。 | Batch Apex | Batch Apex は、プラットフォームとのインタフェースと未フォーマット時の処理速度を実現する豊富な API を提供します。 |
| レコードトリガーロジック | レコードの更新に応じてロジックを実行します。 | 不特定 | コンパニオン決定ガイド「Record Triggered Events Automation」を参照してください。これには、キュー可能 Apex、バッチ Apex、スケジュール済み Apex、スケジュール済みフロー、非同期パスフロー、変更データキャプチャなどの非同期使用事例のディシジョンツリーが含まれます。 |
| オブジェクトグラフを使用した更新のカスケード | ユーザーの保存アクションをすばやく完了し、他のオブジェクトのカスケード更新を非同期で実行できるようにします。 | Queueable Apex | Queueable Apex には、更新のチェーンを一連の非同期トランザクションに分割するロジックを可能にする強力なチェーン機能があります。 |
| レコード固有のスケジュール済み処理 | レコードに固有の将来の動的な日付 (完了予定日の 3 日前など) での自動化。 | スケジュール済みパスを使用するフロー | スケジュール済みパスは、レコードのデータが変更された場合にプラットフォームが自動的にこれらのパスのスケジュール、キャンセル、再スケジュールを処理するため、フローに独自の強みを提供します。 |
| 複数の低速外部サービスの並列呼び出し | 同期実行中は、全体的な実行時間を最適化するために複数の外部サービスが並列で呼び出されます。 | Apex 継続コールアウト | 実行に時間がかかる複数のコールアウトを並列で実行できるようにすることで、作業の完了までの全体的な時間を最小限に抑えます。 |
| 外部システムからのレコードのデータ移行 | 外部システムから大量のレコードを Salesforce Platform に移動します。1 回限りのプロセスまたは定期的なスケジュールプロセス。 | Bulk API | これは、データ移行の最も効率的で制限の少ない方法です。 |
| 外部システムでの追加ロジックの実行 | プラットフォームのイベントを外部システムに通知し、そのシステムでイベントを非同期で処理できるようにする、ファイアーアンドフォーゲットパターン。 | プラットフォームイベントまたは変更データキャプチャ | pub-sub モデルはここで最適に機能し、準備が整ったら外部システムでイベントを処理できます。このパターンについての詳細は、「イベント駆動型アーキテクチャ」を参照してください。 |
使用事例の表は、各使用事例に最適なアプローチのガイドです。ただし、First Choice テクノロジーが使用事例の特定のニーズにどの程度適合しているかを検証する必要があります。特に、選択したアプローチが組織のガバナ制限に準拠することができるかどうかを判断します。
使用事例のアプローチの候補が特定されたら、『Asynchronous Processing Fundamentals Guide (非同期処理の基礎ガイド)』でソリューションを完全に検証できます。
決定プロセスに役立つその他のリソースは次のとおりです。
- 各プラットフォームの非同期テクノロジーについて詳しく説明します。非同期処理の基礎
- レコード トリガーの Apex またはフローの選択:レコードトリガーイベントの自動化
- 非同期インテグレーションパターンに関する情報:イベント駆動型アーキテクチャ