ブライトコーブで SALESFORCE の一括 API と APEX コードを使用する

JESS Rの写真
ジェス・アール氏
ブログ・プレースホルダー画像

ブライトコーブでは、顧客情報の管理に Salesforce を使用しています。営業、アカウント管理、サポート、財務の各チームも、セールス リードへの連絡、サポート ケースの追跡、利用レポートの作成など、さまざまな活動に Salesforce を使用しています。顧客データをタイムリーかつ信頼性の高い方法で Salesforce にプッシュし続けることは、当社のビジネスにとって重要です。

当社製品のデータ・モデルは、ユーザーとアカウントの間の多対多の関係をサポートしています。アカウント オブジェクトは、大きな組織内の組織または部署を表し、ユーザー オブジェクトは、1 つまたは複数の組織で働く個人を表します。Salesforce では、組み込みの Contact オブジェクトをカスタマイズしてブライトコーブ サービスの各ユーザを表し、BCAccount というカスタム オブジェクトを定義してアカウントを表します(図 1 を参照)。

図1

図 1.Brightcove サービスと Salesforce のデータ モデル

数年前、Salesforce SOAP API と quartz を使用してデータ同期機能を構築しましたが、この実装にはいくつかの問題がありました。大きな問題は2つあります:

  • チャットが多すぎて遅い。Salesforceに同期できるオブジェクトは、1時間に700個だけです。
  • データモデルに変更を加えるには、多くの労力が必要です。オブジェクトに新しいフィールドを追加するには、Salesforce から新しい WSDL ファイルをエクスポートし、WSDL ファイルから Java クラスを生成する必要があります。

そこで、Salesforce のバルク APIApex コードを使用して、新しい同期システムを構築することにしました。新しい実装は、RedLineと呼ばれるデータプッシュエンジンと、RedLineからプッシュされたバルクデータを処理するための一連のSalesforce Apexクラスで構成されています。

図2

図2.新しいデータの同期

RedLine は、他の Brightcove サービスから独立したスタンドアロン サービスとして、軽量の Ruby Web サーバーである Sinatra を使用して構築されています。RedLine は rufus スケジューラを使用し、RESTful API を介して Brightcove からオブジェクトの作成、更新、削除を定期的にクエリします。その後、RedLine は JSON 応答を CSV に変換し、一括要求として Salesforce に送信します。Salesforce には、一括要求ごとに 10,000 オブジェクトという制限があります。一括要求は Salesforce 内で非同期に処理されるため、ブライトコーブのサービスも RedLine も、Salesforce へのデータ送信後に待機する必要はありません。

ユーザー オブジェクトとアカウント オブジェクトを Salesforce オブジェクトに適合させるなど、一括要求を処理する Apex クラスをいくつか作成し、Apex クラスを Salesforce にデプロイして、データが一括要求として到着したらこれらのクラスを実行するように Apex バッチ ジョブをスケジューリングしました。このように、Salesforce データ モデル用のコードはブライトコーブのサービスには存在せず、Salesforce Apex コードのみが Salesforce データ モデルを処理する必要があります。Salesforce では、一括要求と Apex バッチ ジョブの両方に対応する一連の監視ツールを提供しています。

バルクリクエストの処理中にエラーが発生した場合は、Salesforce Web UI で簡単に確認できます。また、定期的に実行される Apex クラスをデプロイして、バルクリクエストが予想される頻度で到着しているかどうかをチェックし、リクエストがしばらく到着していない場合は警告を発します。

新しい同期システムでは、ユーザーまたはアカウント オブジェクトの新しいフィールドの変更をリリースするには、Salesforce カスタム オブジェクトに新しいフィールドを追加し、Brightcove サービス API の JSON 応答で新しいフィールドを公開するだけです。RedLine は、一括要求で JSON の新しいフィールドを CSV の新しい列として変換するため、オブジェクト形式の変更のために RedLine を変更したり再起動したりする必要はありません。

アカウント・オブジェクトに4回、ユーザー・オブジェクトに1回の変更がありましたが、これらの変更のためにRedLineのコードを1行も変更する必要はありませんでした。古いSOAP APIベースの同期システムでは、ユーザーオブジェクトやアカウントオブジェクトの新しいフィールドを同期するのに1週間から2週間かかっていました。

この新しい同期アプリケーションを本番環境で8ヶ月間稼動させた結果、いくつかのバーストデータ変更を優雅に処理することができました。最近では、デプロイ中に900アカウントのバッチ変更が行われましたが、それらすべてが1分未満でSalesforceに同期されました(ほとんどの時間はSalesforceで実行されているApexクラスによって費やされました)。以前の同期システムでは、同じ量のオブジェクトを同期するのに1時間以上かかっていました。

シェア

ブライトコーブは、診断装置メーカーが教室での授業時間と経費を削減し、成功率を向上させるのを支援しました。
Brightcove は、最も有名な自動車マーケットプレイスの膨大なレガシー動画ライブラリの管理と収益化を支援しました。
ブランドを維持するために、小売ブランドは、色やフォントを調整できるカスタマイズ可能な動画プレーヤーを必要としています。

動画コンテンツの管理・活用はできていますか?

御社の動画マーケティング活動を強化し、必要な結果とROIを生み出すお手伝いをする方法については、
弊社までお問い合わせください。