Force.comにおける外部システムとの
連携方法の紹介

【技業LOG】技術者が紹介するNTTPCのテクノロジー

2013.12.19
VPS・IaaS
大津 三記男

ソフトウェアエンジニア(Webアプリケーション)
大津 三記男

取得資格:PMP(Project Management Professional)/ VMware Certficated Professional on vSphere 5 / Ruby Association Certified Ruby Programmer Gold / ORACLE MASTER Silver Oracle 9i / テクニカルエンジニア(ネットワーク) / LPIC レベル1 / UMTP L1

技業LOG

1. クラウドコンピューティングとセールスフォース・ドットコム社

近年、急速に普及が進んでいる分野の1つにクラウドコンピューティングがあります。このクラウドコンピューティングは、提供される機能のレイヤーによって以下の3種類のサービスに分類されます。

  • SaaS(Software as a Service)

    インターネット上でアプリケーション(ソフトウェア)やサービスを提供。アプリケーションをパソコンにインストールすることなくWebブラウザ上などで利用することができる。具体的なサービスとして、セールスフォース社のSalesforce CRM、Google社のGmailやGoogle Apps、マイクロソフト社のOffice 365などがある。

  • PaaS(Platform as a Service)

    インターネット上でアプリケーション(ソフトウェア)が動作するプラットフォームを提供。通常、Webアプリケーションを動作させるためには、ソフトウェアの他にWebサーバーやDBサーバーなどのプラットフォームも必要となる。これらをサービスとして提供することで、利用者はソフトウェアを準備するだけで、Webアプリケーションを構築できるようになる。具体的なサービスとして、セールスフォース社のForce.comプラットフォームやHeroku、Google社のGoogle App Engine、マイクロソフト社のWindows Azureなどがある。

  • IaaS(Infrastructure as a Service)

    インターネット上でプラットフォームを構築するためのサーバー機器やネットワーク回線などのインフラを提供。従来のホスティングサービスやレンタルサーバーとの違いとして、CPU・メモリなどのリソースやサーバー構成を簡単に変更できたり、負荷状況にあわせてそれらの変更を自動的に行うオートスケールなどの機能を備えていることが多い。具体的なサービスとしてAmazon.com社のAmazon Web Services(AWS)などがある。

この中で名前を挙げているセールスフォース社は、SaaSタイプの本格的なクラウドサービスの先駆けであり、SaaS、PaaSという言葉を最初に提唱した企業でもあります。

セールスフォース社が提供しているCRM(顧客管理)、SFA(営業支援)などの業務アプリケーションは、セールスフォース社が独自に構築したForce.comというクラウドプラットフォーム(以下、Force.comという)の上で動作しています。このForce.comはPaaSとしても提供されています。Force.comを利用することで、SaaSで提供されているCRMやSFAのアプリケーションと連携する独自のアプリケーションを構築することも可能です。さらに、AppExchangeというマーケットプレイスでは、セールスフォースのパートナー企業が作成したアプリケーションが公開されており、これを自分の環境にインストールして利用することもできます。

さらに、Force.comでは外部システムとデータ連携することも可能です。Force.com側から外部システムに対しては、Apexという独自プログラム言語を使って処理を実装すれば、データ通信が可能となります。外部システム側からForce.comに対する通信に関しては、RESTとSOAPのAPIが提供されています。これらの手段を利用することで、SaaSで提供されている業務アプリケーションも含め、Force.com上で動作するアプリケーションと外部システムとの間でデータ連携を実現できます。

Force.com上で動作するアプリケーションと外部システム 概要図

2. Force.comと外部システムとの連携における制限

Force.comと外部システムで連携する場合に考慮する必要があるのが、『ガバナ制限』をはじめとしたForce.com上のさまざまな制限です。Force.comはマルチテナント環境でありCPUやメモリなどのリソースはユーザー間で共有されます。そのため、一部のユーザーによる共有リソースの独占を防ぐため、さまざまな制限が設けられています。
それらの制限の中で、外部システムとの連携時にネックになる可能性が高いものをいくつか紹介します。

2.1 Force.com側から外部システムへ通信する際の制限

Force.com側から外部システムへ通信する際には次のような制限があります。

No 制限の内容 制限の値
1 通信プロトコル HTTP、HTTPS
2 1回の通信におけるレスポンス完了までの通信時間 最大120秒
3 1回の通信におけるリクエストまたはレスポンスのサイズ 最大3MB

まず問題となるのがNo.1の通信プロトコルによる制限です。利用できるのはHTTPかHTTPSだけなので、プロトコルが異なるFTPサーバーやメールサーバーとの直接通信はできません。

Force.com側から外部システムへ通信する際の制限 概要図

次に問題となるのが、No.2、No.3にある、レスポンス完了までの通信時間や、レスポンスのサイズに関する制限です。制限に抵触すると処理全体が異常終了となるため対応が必須となります。

Force.com側から外部システムへ通信する際の制限 概要図

2.2 外部システム側からForce.comのAPIを利用する際の制限

外部システム側からForce.comのAPIを利用する際の制限には次のようなものがあります。

No 制限の内容 制限の値
1 1回のAPI通信で生成・更新可能なレコード数 RESTは1レコード、SOAPは200レコード
2 20秒以上を要するAPI通信の同時要求数 25(組織種別により変わる)
3 直近の24時間におけるAPI通信回数の上限 最小5,000~(ライセンス数などにより増加)

No.1は扱うレコード数に関する制限です。これに抵触すると処理全体が異常終了となります。

外部システム側からForce.comのAPIを利用する際の制限 概要図

No.2は同時接続数に関する制限です。制限を超えて接続を行うとエラーが発生します。

外部システム側からForce.comのAPIを利用する際の制限 概要図

さらにNo.3のようなAPIの通信回数に関する制限もあります。もし通信回数の上限に達すると、直近24時間の通信回数が制限値を下回るまでAPI通信ができなくなります。

3. 外部システム連携の実現例

ここでは、前述の制限を回避しつつ、オンプレミスで構築されたFTPサーバーやメールサーバーのデータをForce.com上のアプリケーションに取り込むことを考えます。
決まったデータを定期的に取り込むだけなら実装はそれほど難しくないかもしれません。しかし、以下のような要件がある場合、Force.comの制限を回避するために考慮すべきことが多くなり、実装が難しくなります。

  • データ取得のリクエストをユーザーが随時出せるようにする。
  • ユーザーからのリクエストに対し、できるだけリアルタイムでデータを取得する。
  • 取得するデータの条件はユーザーが任意に指定できるようにする。

ここではForce.comと外部システムの間で通信を中継するシステム(以下、中継システムという)を準備することで、Force.comの制限を回避しつつ、これらの要件を実現する方法を紹介します。

制限回避のために中継システムには次のような機能を実装します。

機能1.Force.comからのリクエストを受け付けるAPI機能と、外部システムから取得したデータをForce.comに登録する機能

中継システムにおいて、Force.comからのリクエストをHTTP(S)で受け付け、外部システムとは対応するプロトコルを使用して通信を中継することで、プロトコルによる制限を回避することができます。

機能1.Force.comからのリクエストを受け付けるAPI機能と、外部システムから取得したデータをForce.comに登録する機能 概要図

機能2.Force.comからのリクエストとは非同期に外部システムからデータを取得する機能

Force.comからのリクエストと、外部システムからのデータ取得のリクエストを分離します。Force.comから外部への通信におけるレスポンスよりも、外部からForce.comへのAPI通信のほうが、通信時間やデータサイズの制限が緩和されています。そのため、それらの制限を回避しやすくなります。

機能2.Force.comからのリクエストとは非同期に外部システムからデータを取得する機能 概要図

機能3.API通信時にデータを分割する機能

外部システムから取得したデータを、1回のAPI通信で登録できるレコード件数ごとに分割し、複数回のAPI通信で登録するようにします。この機能によって扱うレコード数に関する制限を回避することができます。

機能3.API通信時にデータを分割する機能 概要図

機能4.API通信時にデータを分割する機能

中継システム上で待ち行列などの仕組みを実装することにより、Force.comに対する同時接続数を制限します。この機能によって同時接続数に関する制限を回避します。

機能4.API通信時にデータを分割する機能 概要図

4. まとめ

今回は、セールスフォース社が提供するクラウドプラットフォームを取り上げ、その特長、外部システムと連携する場合の注意点、具体的な実装例などを紹介しました。

ビッグデータなどのキーワードに代表されるように、近年はビジネスにおけるデータの収集・分析の重要性が叫ばれています。しかし、クラウド型の業務アプリケーションを利用すると、オンプレミスのシステムとの間でデータが分断され、収集や分析が難しくなる問題も発生します。セールスフォース社が提供するクラウドプラットフォームであれば、外部システムと連携するさまざまな仕組みが提供されているため、データ分断の問題を解決しやすくなります。

最近では、Force.comとオンプレミスの連携だけではなく、Amazon Web ServiceやWindows Azureなど、他社のクラウドサービスと連携するハイブリッドクラウドの事例も増えてきました。これから更に進化と普及が進むと考えられるセールスフォース社のクラウドサービス。まだ導入されていない方は、導入を検討されてみてはいかがでしょうか。

おすすめ記事

    お気軽にご相談ください

    • 「Salesforce CRM」「Force.com」「Heroku」「AppExchange」「Apex」はsalesforce.com,Inc.の登録商標です。
    • 「Office 365」「Windows Azure」はMicrosoft社の登録商標です。
    • 「Google Apps」「Google App Engine」はGoogle Inc.の登録商標です。
    • 「Amazon Web Services(AWS)」は Amazon.com, Inc.の登録商標です。