Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SaaSベンダーがAppExchangeアプリを作るときの連携パターン

 SaaSベンダーがAppExchangeアプリを作るときの連携パターン

2020年12月11日に開催された「SaaS x Salesforce Developers」で発表した際の資料です。

イベントURL: https://alp.connpass.com/event/194735/
アーカイブ動画URL: https://youtu.be/Pbhi2IFchXI?t=2531

Atsuhiko Kimura

December 12, 2020
Tweet

More Decks by Atsuhiko Kimura

Other Decks in Programming

Transcript

  1. Happy Work! Happy Life! 株式会社co-meetingについて 6 Salesforce関連アプリの開発と提供を2014年10⽉から⾏っています。 主な事業 l Salesforce

    AppExchangeアプリの開発(8本リリース) l 顧問Salesforceプログラマ(開発⽀援サービス)の提供 l Salesforceの利⽤を促進させる機能開発 l AppExchangeアプリの開発/技術⽀援
  2. エンジニアは来年夏には募集したい Happy Work! Happy Life! どんな会社か l 少⼈数でフルリモートの会社 l 楽しく仕事をしようと努⼒している

    l 製品を作るのが好き 熊本県 プログラマ ⽯川県 プログラマ 東京都 プログラマ x 2 セールス/マーケ/サポート... x 1 総務 x 1
  3. AppExchangeアプリの仕組み パッケージ v2.0, v1.5, v1.4... SF組織A SF組織B SF組織C SF組織Z ・・・

    v2.0 v1.5 インストール/アップグレード v1.5 v1.5 l 普通のSaaSとは異なり、 顧客のSalesforce組織に インストールされる l ⼀部の組織のみ別バー ジョンということもでき る。 l Salesforce組織の制限は 共有される。
  4. 4つの外部連携⽅法 1. Salesforce → ⾃社API 2. ⾃社サービス → Salesforce API

    3. ⾃社サービスの画⾯埋め込み(Canvas) 4. プラットフォームイベント/変更データキャプチャを⾃社サービス で購読
  5. Salesforce → ⾃社API パッケージ API Salesforce組織 ⾃社サービス l Salesforceから⾃社APIを呼ぶ。 l

    パッケージ内のApexからHTTPリク エストを投げる。 l 指定ログイン情報を使うとノー コードで認証処理を実現できる ケースも有る。 HTTPリクエスト
  6. 気をつけるべき制限 l コールアウトの実⾏回数: 100回/トランザクション l コールアウトのタイムアウト: 120秒 l コールアウトの最⼤サイズ︓6MB(同期)、12MB(⾮同期) l

    ⾮同期処理の実⾏回数等: いろいろある 参考)Apex ガバナ制限 | Salesforce Developer の制限および割り当てクイックリファレンス | Salesforce Developers
  7. ⾃社サービス → Salesforce API API Salesforce組織 ⾃社サービス l ⾃社サービスからSalseforce APIを呼ぶ

    l 認証はOAuth認可コードフローが基本 l 接続アプリケーションはパッケージに⼊ れなくていい ②HTTPリクエスト 接続アプリケーション パッケージ開発組織 こちらは顧客組織 Salesforce 認可サーバー ①アクセストークン取得 たぶんここで クライアント シークレットの検証 どこの組織でもいい
  8. 認証⽅法 l OAuth 2.0認可コードフローが⼀般的 l 接続アプリケーションはパッケージに含めず、パッケージ開発組織に作ればよい。 l JWTベアラートークンフローは管理パッケージでエラーになる不具合があり、 使えない。 l

    顧客組織で接続アプリケーションを作ってもらえば動くが顧客ごとに証明書を発⾏する必 要があり現実的ではない。 参考)Known Issues - User fails to get access_token via JWT for Connected App from Managed Package
  9. ⾃社サービスの画⾯埋め込み(Canvas) iframe Salesforce画⾯ ⾃社サービス l WebアプリをSalesforce画⾯に iframeで埋め込む l 署名付きリクエストという仕組み で認証を⾏う

    l アクセストークンを含むユーザ情 報が送られてくるのでAPIも呼べる ①署名付きリクエスト ②HTML API Salesforce組織 ③APIリクエスト
  10. デメリット l 画⾯描画が遅い l Salesforceが推していない(と思う) l データ連携するわけではない=Salesforceで活⽤できない l 接続アプリケーションをパッケージに含める必要がある。 l

    SFDXとの相性が悪い。スクラッチ組織作る度にクライアントシークレットを変える必要が ある。 l スコープをリリース後に変更することができない。 l 第2世代管理パッケージで扱いが厄介&不具合があるらしい。
  11. プラットフォームイベント/変更データセット パッケージ Salesforce組織 ⾃社サービス l イベント駆動のメッセージング アーキテクチャ l Salesforceでイベントを送信し、 外部でリアルタイムに受信できる

    l 変更データセットはレコードの変 更イベントを通知 l 購読はCometDで接続する。 イベントバス イベントの公開 イベントの購読 しかし、本番で使ったことがなくノウハウないです
  12. おすすめの連携⽅法 l Salesforceの制限を消費する⽅法はAppExchangeアプリではあまりおすすめ しません。 l Salesforce REST API / プラットフォームイベント

    l API呼び出し回数制限を超え他のシステム連携が⽌まるなどトラブルの元になる。 l Salesforce→⾃社APIをまず採⽤する。 l 満たせない要件は、デメリットを理解した上で他の⽅法を組み合わせる。
  13. 他の連携⽅法を選ぶケース ⾃社サービス→ Salesforce API •⾃社サービス→Salesforce をリアルタイム反映したい。 Canvas •Salesforce上で⾃社サービ スの全機能を表⽰したい •Salesforceの開発をどうし

    てもやりたくない •コールアウトが制限にひっ かかる プラットフォームイベント •Salesforceのイベント通知 先が複数ある •⼤量のイベント通知をした い