本日は、「Herokuとは?」の解説として、Herokuの概要を説明し、SalesforceとHerokuの連携に関しての留意事項や、よくある構成についてPraztoの実績も含めてご説明をいたします。
そもそもHerokuとは何なの?
Herokuは、Salesforce社が提供する製品群の1つで、プログラムを中心にしてシステムを構成するクラウドプラットフォームです。
AWSなどの別のプラットフォームと比較しての主な特徴は以下の通りです:
- インフラエンジニアがいなくても簡易に構築できる: AWSなどの他のプラットフォームに比べ、インフラの詳細な知識をあまり必要とせずにシステムを構築できます。これは、Dynoと呼ばれる最適な構成単位を使用するためです。
- 最適な構成単位”Dyno”: ハードディスク設定やロードバランサー、その他の詳細なプロビジョニングを行わなくても、Dynoを使用することで最適な構成が自動的に構築されます。
- Heroku Connect: SalesforceとHerokuの間で双方向データ連携を可能にする特徴的なソリューションです。これにより、Salesforceのポータル拡張や他システムとのインテグレーションの窓口としての役割には特に適したPaaSと言えると思います。
一方で、上記と表裏一体の特徴として、Herokuには以下のようなデメリットとも考えられるものがあるため、構築対象のシステムがHerokuに適しているかどうかを考えることはとても重要です:
- Web Dynoの30秒タイムアウト制限から、重いWebリクエスト処理が実行できない:Webアプリケーションのリクエスト受付から返却までの時間制限として30秒までという強い制限がある為、大量のデータを検索させるような処理が実行できません。非同期処理として別のDynoが処理を行えば制限の回避は行えますが、そのような処理が多くの比重を占める場合にはそもそもHerokuを採択するかどうかを再検討した方が良いと思います。
- 静的なファイルストレージを持たない:Web アプリケーションとしてユーザーがファイルをアップロードして保存する為のストレージ領域をデフォルトとして持っていません。ファイルシステム内にアップロードしたとしても、Dynoをリブートしたら消えてしまいます。
- サーバーの詳細な設定・プロビジョニングとして出来ない事がある:インフラ知識をあまり必要としない反面、細かなカスタマイズが難しい場合があります。
HerokuとSalesforce:異なる開発アプローチ
Herokuは、Salesforceの製品群の中でも少し変わった存在です。Sales CloudやExperience Cloud、CRM Analyticsなどの他のSalesforce製品とは異なり、Herokuはプログラミングを中心とした開発アプローチを採用しています。
Salesforceの多くの製品では、画面操作での宣言的開発が主流です。これは、コードを書かずに、ポイント&クリックやドラッグ&ドロップでアプリケーションを構築する方法です。一方、Herokuはプログラミング言語を使用して開発を行います。この違いは、開発の柔軟性と複雑さのトレードオフに繋がります。
Salesforce連携におけるHerokuの活用ポイント
HerokuとSalesforceを連携させる際には、以下の点を考慮してシステム全体の構成を設計することが重要です。
1. 豊富なライブラリの活用
Herokuでは、RailsやNode.jsなど、さまざまな言語やフレームワークを使用できます。これらのエコシステムが提供する豊富なサーバサイド処理のライブラリを活用することで、Salesforce単体では実現が難しい機能や、より効率的な開発が可能になります。
2. リソース制限の緩和
Salesforceには、データストレージのレコード数制限やCPU時間などのガバナ制限があります。Heroku環境を活用することで、これらの制限を大きく緩和したシステム構成を構築できます。
ただし、Herokuにも制限があることに注意が必要です。特に、Web Dynoの30秒タイムアウト制限は重要です。長時間実行が必要な処理は、バックグラウンドジョブとして実装するなどの対策が必要になります。
3. 幅広い接続性
Salesforceから直接接続が難しいシステムとの連携も、Herokuを介することで可能になります。例えば以下のようなものがあります:
- FTPやSFTPなど、Apexからのコールアウトでは対応できないプロトコルの利用
- VPNを使用しないと接続できないシステムとの連携
・Apexからのコールアウトは基本的にHTTPのみに対応しています。
・Heroku Private Spaceを使用すれば、VPNでの接続が可能になります。
4. Heroku Connectによるデータ同期
Heroku ConnectはSalesforceとHerokuの間でデータを双方向に同期するソリューションです。これにより、Salesforceのデータをリアルタイムでアプリケーションに反映したり、外部システムで収集したデータをSalesforceに同期したりすることが容易になります。
代表的なシステム構成をPraztoの実績でご紹介いたします。
Herokuを活用したSalesforce連携の代表的なシステム構成を2つご紹介します。
システム構成①: 外部向けポータルサイトの構築
Salesforceのデータを外部に公開するポータルサイトの構築は、HerokuとSalesforceの連携の典型的な使用例です。
Praztoはこの構成で多くのシステムを構築してきましたが、その中の1つの、人材紹介会社様向けに構築した求職者向けのポータルサイトのHerokuでの構築事例をご紹介いたします。
同様のシステムはExperience Cloudを使用しても構築が出来ますが、以下のようなケースではExperience Cloudを使用するよりHerokuを使用して構築した方が適していると考えられます。
このシステム構成が最適なケースと理由:
- カスタマイズの自由度:Herokuを使用することで、デザインや機能の細部まで柔軟にカスタマイズできます。
- ライセンス課金(適している場合):Experience Cloudがユーザー数やログイン数を基にライセンス金額が決定されるのに対して、Herokuはシステム性能やHeroku Connect連携レコード数等で課金額が決定します。この違いでHerokuの方がコストメリットが出る場合には最適です。
求人企業様からのご要望に基づき、社内メンバーがSales Cloudに求人内容を保存します。その内容はHerokuに連携され、求職者様向けの求人ページとして公開される構成となっています。求職者様からの応募はまずHeroku Postgresに保存され、その後Salesforceに連携されて社内プロセスで活用される流れです。この構成は求人企業様と求職者様とのマッチングシステムとしては定番となっており、同様の構成で多様なシステムを構築することが可能です。
システム構成②: 外部システムとのデータ連携
Salesforceだけでは接続が難しい周辺システムと連携し、データを収集してHeroku Connectを使用してSalesforceにデータを連携するシステム構成です。
Salesforceに顧客情報や販売情報を集約する必要がありましたが、他社の販売管理システムからのデータはFTPサーバー経由でしか取得できず、また関連する顧客情報と契約情報を管理するお客様の社内システム内のRDBMSにはVPN経由でしか接続できませんでした。この状況に対応するため、Salesforceとは別にHerokuでシステムを構築しました。Herokuから直接FTPサーバーへ接続し、さらにお客様システムにVPN経由で接続。これにより、一旦Heroku Postgresにデータを集約し、その後Heroku Connectを通じてSalesforceにデータを連携。最終的にこのデータをCRMやMAに活用しました。
このシステム構成が最適なケースとその理由:
- 多様なプロトコルへの対応:FTP、SFTP、独自プロトコルなど、SalesforceのApexからのコールアウトが直接対応していないプロトコルを使用したデータ連携が可能です。
- セキュアな接続:VPNを使用した基幹システムからのデータ収集が可能です。
- 集約したデータのCRMやMAへの活用:Herokuで複数のデータソースからデータを収集し、必要な前処理を行ってからSalesforceに連携できます。
【まとめと次回の記事のご紹介】
今回の記事では、Herokuの概要とその特徴、そしてSalesforceとの連携におけるHerokuの活用シーンを中心に説明いたしました。
近日中に公開予定の次回の記事では、以下のような内容を含むより実践的なHerokuの構築ノウハウをご紹介いたします。
- Web Dynoの30秒タイムアウト制限の具体的な回避方法
- Private Space以外でのアウトバウンドIPアドレスの固定化手法
- Private SpaceからのVPN接続の設定方法
- (Heroku Connectではなく)Salesforce Connectを使用したHerokuへの接続のユースケースとその具体的な設定方法
これらは、Herokuならではの構築現場でのノウハウであり、通常の学習では得難いEnterpriseシステム構築のノウハウも含まれています。Salesforce開発者、特にHerokuを活用した大規模システム構築を検討されている方にとって、非常に有益な情報をお届けできると考えています。次回の記事もぜひご覧ください。