Salesforceの
インテグレーションおさらい
認定 Integration Architecture デザイナー
2020/5/29(金)
Salesforce Architects Meetup Osaka#04
アジェンダ
2
デザイナー試験について
インテグレーションの特徴を把握
インテグレーションの仕組み
ワークフローアウトバウンドメッセージ紹介
Salesforce標準の非同期メッセージをおさらい。試験にもよく出る!?
Salesforceインテグレーション機能の種類をかくにん。どのAPIを使えばよい?
連携シナリオを読み解くために、主要な用語と定義をおさらい
まずは敵を知る。試験の位置づけや試験範囲、配点をおさらい
デザイナー試験について
今回の対象:
認定 Integration Architecture デザイナー
本日の
トピック
4
今回の対象:
認定 Integration Architecture デザイナー
http://tandc.salesforce.com/credentials
5
デザイナー試験のなかでは唯一
推奨トレーニングコースが設定
されています
認定 Integration Architecture デザイナー
に求められるスキル・知識
6
試験範囲と出題割合
7
連携機能・連携パターンの
2分野で45%を占めます
連携機能・連携パターンの
2分野で45%を占めます
インテグレーションの特徴を把握
インテグレーション環境の把握
9
「与えられた連携シナリオに従って・・・」
環境には、ソリューションに活用できるツールが
すでに存在していますか?
アーキテクチャのランドスケープはどのように
なっているか?
http://lms.cfs-
api.com/v1/12/lms.aspx?hash=WUlRa1pjd0RRUDZGQ1Y5cnVSZU9Mckh4Uk4rUEEzYU9qSzhDcFdFNlUxVitid3ZiREdiL3k1em90ZWUvVHpuWWEvTlRFSkJyWjhDM
Hl6dDJFTGtWczZ5VlZyTnM1M3U4RjJIK25MaGE5UjJIQzVnSUZDZTBmRnRMU2VSRGZaSHpSeEtMK2NwbThWU0E4N1o5R1d1S1Z3PT0=
インテグレーション アーキテクチャ
10http://salesforcememo.com/2017/03/25/how-to-prepare-for-and-pass-integration-architecture-designer/
https://it.toolbox.com/blogs/andrewclifford/minimal-integration-7-point-to-point-hub-or-bus-111405
Point-to-point
• それぞれのシステムが、連携する他システムと直接接続する
• 連携するシステムが少ない場合は簡単に導入できる
• スケールすることが難しい
Hub and Spoke
• 全てののシステムがハブと接続し、全てのデータはハブを経由する
• 設計や実装が容易
• 単一障害点となる懸念がある
• 大量のトランザクションをサポートすることが難しい
Enterprise Service Bus(ESB)
• 分散サービスアーキテクチャ。分散型アダプタを採用
• 全てのシステムは同じ標準に従う
• どのような新しいシステムも、標準に従っていればバスに接続できる
• スケーラブル
ミドルウェア
11http://salesforcememo.com/2017/03/25/how-to-prepare-for-and-pass-integration-architecture-designer/
https://blog.briteskies.com/blog/what-is-middleware-and-why-should-you-care
ミドルウェア:
システム間の中間層として機能するソフトウェア
ミドルウェアが提供する機能の例
• ETL (Extract, Transform, Load)
• Data cleansing
• Process management
インテグレーションに必要となる機能には、ミドルウェア
での実装が推奨されるものがあります。
(マルチテナントアーキテクチャ、ガバナ制限のため)
ミドルウェアの用語と定義
12
https://developer.salesforce.com/docs/atlas.ja-jp.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_intro_overview.htm
ミドルウェアに関連する主要な用語と、インテグレーションのパターンで
使用される定義について、開発者ドキュメント「インテグレーションのパ
ターンと実践」に記載されています。
• イベント処理
• プロトコル変換
• 変換/加工
• キューイングとバッファリング
• 同期伝送プロトコル
• 非同期伝送プロトコル
• 仲介ルーティング
• プロセスコレオグラフィとサービスオーケストレーション
• トランザクション性
• ルーティング
• 抽出、加工、読み込み(ETL)
• long polling
定義の概要と、Salesforceでできること、
ミドルウェアですべきことについて、次に
紹介します。
ミドルウェアの用語と定義
13
イベント処理
• 識別可能な発生イベントが指定された受信者で受信されること
• どこに転送すべきか識別する、転送する、転送されたイベントを受信する、受信したイベント
に応じてアクションを実行する(ログ書き込み、エラー・回復、追加メッセージ送信など)
• 最終的に、イベントコンシューマに転送する
• イベント処理の制御は、ミドルウェアレイヤで行われてきた。
• Summer’19頃に、Salesforceでもプラットフォームイベントとイベントバスを使用して実現
できることが追記された
プロトコル変換
• あるプロトコルを別のプロトコルに変換し相互運用性を実現すること
• Salesforceでは、ネイティブプロトコル変換をサポートしていないため、ミドルウェアかエ
ンドポイントで処理すること
https://developer.salesforce.com/docs/atlas.ja-jp.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_intro_overview.htm
ミドルウェアの用語と定義
14
変換/加工
• あるデータ形式を別の形式に対応付けて、システム間で相互運用性を確保する機能
• Salesforceでは、ミドルウェアかエンドポイントで処理することが推奨される。
データの加工はApexでコーディングできるが、メンテナンスやパフォーマンスの観点で推奨
されない。
キューイングとバッファリング
• 非同期のメッセージの受け渡しを実現する
• 非同期メッセージプロセスの利点は、受信者側に障害が発生した場合も送信者側は影響を受け
ず処理を続行できること
• Salesforceでは、ワークフローベースのアウトバウンドメッセージ方式でキューイング機能
を提供する。
• オーケストレーションなど本格的なメッセージキューイングにはミドルウェアが必要
https://developer.salesforce.com/docs/atlas.ja-jp.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_intro_overview.htm
ミドルウェアの用語と定義
15
プロセスコレオグラフィとサービスオーケストレーション
• それぞれ、サービスコンポジションの形式。
コレオグラフィ:中央制御なしで相互作用する個々の動作
オーケストレーション:互いに独立する個々のエンティティの動作を中央の指揮者が調整する
• Salesforceにはタイムアウト値とガバナ制限があるため、複雑なオーケストレーションは
ミドルウェアレイヤに実装することが推奨される。
トランザクション性 (暗号化、署名、信頼できる配信、トランザクション管理)
• 4 つの ACID (原子性 (atomicity)、一貫性 (consistency)、独立性 (isolation)、永続性
(durability)) 属性をサポートすることを暗黙的に示す
• Salesforceは内部的にトランザクション性を備えるが、分散トランザクションやSalesforce
の外部で開始されたトランザクションに参加することはできない。そのため、複雑な複数シス
テムトランザクションが必要なソリューションは、トランザクション性(およびロールバック、
補正メカニズム)がミドルウェアに実装されることが前提となる
https://developer.salesforce.com/docs/atlas.ja-jp.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_intro_overview.htm
ミドルウェアの用語と定義
16
ルーティング
• コンポーネント間の複雑なメッセージフローを指定すること
• Salesforceでは、ミドルウェアかエンドポイントで処理することが推奨される。
メッセージルーティングはApexでコーディングできるが、メンテナンスやパフォーマンスの
観点で推奨されない。
抽出、加工、読み込み (ETL)
• データ抽出(Extracting data)、データ加工(Transforming the data)、データ読み込み
(Loading the data)
• 「厳密に必要ではないが」の注釈付きで、成熟したETLツールには変更データキャプチャ機能
が搭載され、レコード処理量を削減する(差分で処理するため)と言及されている
• Summer’19頃に、Salesforce変更データキャプチャがサポートされるようになった旨が追記
された
https://developer.salesforce.com/docs/atlas.ja-jp.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_intro_overview.htm
ミドルウェアの用語と定義
17
long polling
• Cometプログラミングとも呼ばれ、サーバからクライアントへの情報プッシュをエミュレー
トする。
• クライアントがサーバに情報を要求したが、サーバに使用できる情報がない場合、空の応答を
返すのではなく、イベントが発生し、情報が使用できるようになるまで待機する。
• SalesforceストリーミングAPIは、long pollingにBayeuxプロトコルとCometIDを使用する
• 当項はSummer’19頃に追加された
https://developer.salesforce.com/docs/atlas.ja-jp.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_intro_overview.htm
インテグレーションの仕組み
Salesforceでのインテグレーション機能
19
http://lms.cfs-
api.com/v1/12/lms.aspx?hash=WUlRa1pjd0RRUDdlSHFnV1BVNStQNTkwS21vdTN2V3NXMXNYSnhBejh2ZWFQbkhOVkg5WnFEcWNwWmpBSFBpK3ZJNnFjSDdC
VlhvMGJydzNnMVlhZEs1N2xLcUZSeUllTlppTmVYTTBLcTU4ZE1rRFFZUWl6Q0JkdXovQXpwcXFUOG9sbzRPckdKMTJnVklwb3lWV0xRPT0=
API
• Salesforceとプログラム的に通信するためのインタフェースを提供する
• REST API、SOAP API、Bulk API、ユーザインタフェースAPI・・・
組み込みの宣言的連携ツール
• ポイントアンドクリックでインテグレーションを実装する
• アウトバウンドメッセージ、Emailサービス、Salesforce to Salesforce、
マッシュアップ、キャンバス
ツール、ツールキット
• 外部システムとのインテグレーションを実現する
• Dataloader、Salesforceモバイルアプリ、Salesforce Mobile SDK、外部
アプリ認可(OAuth)、AppExchange、CTI、SSOなど
Salesforceでのインテグレーション機能
20
http://lms.cfs-
api.com/v1/12/lms.aspx?hash=WUlRa1pjd0RRUDdlSHFnV1BVNStQNTkwS21vdTN2V3NXMXNYSnhBejh2ZWFQbkhOVkg5WnFEcWNwWmpBSFBpK3ZJNnFjSDdC
VlhvMGJydzNnMVlhZEs1N2xLcUZSeUllTlppTmVYTTBLcTU4ZE1rRFFZUWl6Q0JkdXovQXpwcXFUOG9sbzRPckdKMTJnVklwb3lWV0xRPT0=
同期 非同期/バッチ
アウトバウンドインバウンド
どのAPIを使用するか?
21
https://help.salesforce.com/articleView?id=integrate_what_is_api.htm&type=0
どのAPIを使用するか?
22
https://help.salesforce.com/articleView?id=integrate_what_is_api.htm&type=0
REST API
• 強力、便利、そしてシンプルな REST ベースの Web サービスインターフェースを提供
• モバイルアプリや Web プロジェクトで使用するためのテクノロジの選択としては最適
• REST、HTTP、JSOL、XML(option)を利用する
• ただし、特定の用途には特化したAPIが提供されるため、そちらを利用する
(ユーザインタフェースAPI、Chatter REST API、Bulk API)
ユースケース例
ユニバーサルコンテナの営業担当者は、モバイル端末を持って現場に
移動しています。
同社は、ユーザーが個々の記録を作成または更新したり、複数の記録
を保存したりできるカスタムアプリケーションを求めています。
プロトコル:
REST
データの形式:
JSON, XML
通信:
同期
どのAPIを使用するか?
23
https://help.salesforce.com/articleView?id=integrate_what_is_api.htm&type=0
SOAP API
• 強力、便利、そしてシンプルな SOAP ベースの Web サービスインターフェースを提供
• Web サービスをサポートしている言語で使用できる
• 一度に少数のレコードを処理するリアルタイムのクライアントアプリケーション用に最適化さ
れている
• WSDL、SOAP、XMLを利用する
ユースケース例
ユニバーサルコンテナでは、1日に3回、出荷情報を含むSalesforce
アカウントのレコードを更新したいと考えています。
通常、1回の更新で5,000~10,000件のレコードがあります。
プロトコル:
SOAP(WSDL)
データの形式:
XML
通信:
同期
どのAPIを使用するか?
24
https://help.salesforce.com/articleView?id=integrate_what_is_api.htm&type=0
Bulk API
• RESTベースで、大規模データセットの読み込み、または削除用に最適化されている
• 1,000~1,000,000規模のレコードのデータを処理できるよう設計されている
• サーバ側では複数のジョブに分割し、非同期で処理される
外部システム
Bulk API
例
Dataloader
①バッチの登録数は、24時間あたり
10,000個まで
Bulk API
ジョブ
バッチ
バッチ
チャンク
チャンク
②バッチのあたりの処理時間は10分まで
③バッチのあたりの処理件数は10,000件まで
さらに内部では
チャンクに分割して処理される
入力ファイル
ユースケース例
Universal Containersには100万件以上の取引先レコードがあり、レポート作成の
ために1日1回外部データストアと同期する必要があります。
プロトコル:
REST
データの形式:
CSV, JSON, XML
通信:
非同期
どのAPIを使用するか?
25
https://help.salesforce.com/articleView?id=integrate_what_is_api.htm&type=0
Chatter REST API
• Chatter に関する情報の取り扱いに最適化されている
• RESTベースで、特にモバイルアプリケーションで、Chatter フィード、ユーザ、グループ、
フォロワーを表示する場合に利用できる
• ファイル、おすすめ、トピック、通知などにアクセスすることもできる
ユースケース例
Universal Containersは、カスタムアプリケーションを使用して、
セールスフォース以外の従業員がイントラネット内でターゲットを
絞ったChatter投稿を受信できるようにしたいと考えています。
プロトコル:
REST
データの形式:
JSON, XML
通信:
同期(写真は非同期)
どのAPIを使用するか?
26
https://help.salesforce.com/articleView?id=integrate_what_is_api.htm&type=0
ユーザインタフェースAPI
• SalesforceがLightning Experience や Salesforce モバイルWebを構築するのと同じAPIを
使用して、カスタムWebアプリのSalesforce UIを構築できる
• レコード、リストビュー、アクション、お気に入りなどをユーザが操作できるユーザインター
フェースを構築する
• レイアウト、選択リスト、項目レベルセキュリティ、共有についてはAPIに組み込まれている
プロトコル:
REST
データの形式:
JSONL
通信:
同期
どのAPIを使用するか?
27
https://help.salesforce.com/articleView?id=integrate_what_is_api.htm&type=0
Analytics REST API
• Analytics アセット (データセット、レンズ、ダッシュボードなど)にアクセスできる
• レンズの作成・取得、Analyticsアプリケーション作成・取得、Analyticsダッシュボードの作
成・更新・取得、スナップショットの操作などがAPIを介してプログラムで行える
プロトコル:
REST
データの形式:
JSON, XML
通信:
同期
どのAPIを使用するか?
28
https://help.salesforce.com/articleView?id=integrate_what_is_api.htm&type=0
ストリーミング API
• ほぼリアルタイムのデータストリームを受信する
• レコードの変更を通知する、カスタム通知としてイベントメッセージを公開する、など。
• プッシュ技術をシミュレートする Bayeux プトロコルの実装である CometD を使用して通
知を受信できる
• ニーズにあったストリーミングイベント種別を使用すること
• PushTopic イベント
• 変更データキャプチャイベント
• プラットフォームイベント
• 汎用イベント
ユースケース例
Universal Containersでは、重要なケースが作成されたときにデスク
トップアプリケーションに通知が送信されるようにしたいと考えてい
ます。
プロトコル:
Bayeux
データの形式:
JSON
通信:
非同期(データのストリーム)
どのAPIを使用するか?
29
https://help.salesforce.com/articleView?id=integrate_what_is_api.htm&type=0
Apex REST API
• Apex クラスと Apex メソッドを公開し、外部アプリケーションが REST アーキテクチャに
よってコードにアクセスできるようにする
• 認証のため OAuth 2.0 およびセッション ID の両方をサポートする
Apex SOAP API
• Apex メソッドを SOAP Webサービス APIとして公開し、外部アプリケーションが SOAPに
よってコードにアクセスできるようにする
• 認証のため OAuth 2.0 およびセッション ID の両方をサポートする
プロトコル:
REST
データの形式:
JSON, XML, カスタム
通信:
同期
プロトコル:
SOAP(WSDL)
データの形式:
XML
通信:
同期
どのAPIを使用するか?
30
https://help.salesforce.com/articleView?id=integrate_what_is_api.htm&type=0
メタデータ API
• 組織のカスタマイズを取得、リリース、作成、更新、または削除するのに使用する
• テスト組織から本番環境への変更の以降などの際に利用する
• Visual Studio Code 向けSalesforce拡張機能
• Ant移行ツール
Tooling API
• Salesforceメタデータを他のシステムと統合するのに使用する
• Salesforce Platform用アプリケーション用のカスタム開発ツールを作成する、など
プロトコル:
SOAP(WSDL)
データの形式:
XML
通信:
非同期
プロトコル:
REST または SOAP(WSDL)
データの形式:
JSON, XML, カスタム
通信:
同期
ワークフロー
アウトバウンドメッセージ
組み込みの宣言的連携ツール
32
https://help.salesforce.com/articleView?id=integrate_what_is_api.htm&type=0
ワークフロー アウトバウンドメッセージ
• ポイントアンドクリックの宣言的な設定で利用できる
• ワークフロールール、または承認プロセスから、非同期のメッセージを送信する
• インターネット経由でアクセスできる、SOAPベースのWebサービスに送信できる
ユースケース例
Salesforceでポジションが埋まったとマークされるとすぐに、
Salesforceの採用アプリケーションは、ユニバーサルコンテナの社内
人事アプリケーションに通知する必要があります。
組み込みの宣言的連携ツール
33
http://lms.cfs-
api.com/v1/12/lms.aspx?hash=WUlRa1pjd0RRUDZIUWw5MGV5M1l2WmwzclV5L1dlZllSMTJreUEwZVFnUmxqT0pmYmV4TVdmWm1sbkgwQTUwSi9QYnhhRU04STAv
bTlHNCt4VGsrRXErSVdiUDFEVG82dlJQMG1QWEtjUFFxOFRwd3d3R2Mrck5zSzNDRUFqa0NCK1ZpZ3RYQU1SN05Ba3JBdXFwblRRPT0=
ワークフロー アウトバウンドメッセージの仕組み
① ② ③
④⑤
組み込みの宣言的連携ツール
34
http://salesforcememo.com/2017/03/25/how-to-prepare-for-and-pass-integration-architecture-designer/
ワークフロー アウトバウンドメッセージの留意点
• 設定から、”アウトバウンドメッセージ”にて、送信状況が確認できる
• エンドポイントが利用できない場合、メッセージは正常に送信されるまで、または24時間経
過するまでキューに残る。24時間が経過すると、メッセージはキューから削除される
• メッセージは、キュー内の順番に関係なく再試行される。これにより、メッセージが順番外に
配信される可能性がある
• メッセージは複数回配信される可能性があるため、リスナークライアントは処理前に通知で配
信された通知IDを確認する必要がある
アウトバウンドメッセージ:設定例
35
https://trailhead.salesforce.com/ja/content/learn/modules/salesforce_heroku_integration/callouts_workflow_with_heroku
ワークフロールールの作成 アウトバウンドメッセージの設定
アウトバウンドメッセージ:設定例
36
送信失敗・・・再試行中の状況・・・
リソース
参考:認定 Integration Architecture デザイナー
Trailmix
38
https://trailhead.salesforce.com/en/users/welcome4/trailmixes/architect-integration-architecture-jp
参考:インテグレーションのパターンと実践 開発者ドキュメント
39

Salesforce integration architecture 20200529