2018.11.21
「LINE×Salesforce」システム構成のはなし

こんにちは。SMSCのエンジニアです。
先日(2018.02.16)、LINEの開発者向けCommunityサイトがオープンされました。
現在のところ、LINEで利用できるChatbotのショーケースである「Bot Directory」と、開発ノウハウを蓄積・検索するための「Q&A」を提供しているようです。
こういう動きは、エンジニアにとって、刺激になるし、いい情報源にもなるので、ありがたいです!
個人的には、「どんどん賢くなるFAQ」のBotが、できるところはシステムで、できないところは人でやるというところをうまくやられていて、とても印象に残りました!
LINE developers community 【公式】
https://www.line-community.me/
さて、本題に入ります。
今回は、「LINE×Salesforce」を実現するにあたり、
なぜ、このようなシステム構成になったのかをお話できればと思います。
機能として、実現したいことは、
「求職者様と弊社の担当者が、LINEでメッセージをやりとりできる」
です。
ここで、2つのことを大切にしました。
- 求職者からのメッセージは、確実に受け取ること
- 過去のメッセージを見れること
LINEからメッセージを取り出せなかった(APIがない※)ため、
送られたとき、メッセージを保存しておく必要がでてきました。
※多くのユーザを抱えるLINEだと、そのぶんだけストレージを必要とする。メッセージをもつことにあまりメリットがないため、「メッセージを保存しない」か、「もっても数週間だけ」という方針がとられているように感じる。
はじめに、Salesforceにメッセージを保存すると考えたとき、
以下の問題がでてきました。
- データ容量
求職者数×メッセージ数のデータをもつとすると、数GBになり、Salesforceで利用できるデータ領域を圧迫してしまう -
コール数
ライセンスにより異なりますが、24 時間あたりの合計コール数が制限されています。数値については、[組織プロファイル]-[組織情報]をご覧ください。そのほか、ライセンスなどは参考資料をご参照ください。 -
環境依存によるリスク
Salesforceが、メンテナンスで利用できないときや、ビジー状態でタイムアウトしてしまったとき、メッセージが消失してしまう。
そのため、Salesforceにメッセージを保存することはやめ、メッセージングサーバを挟み、そこに保存することにしました。
メッセージングサーバの主な役割は、
- メッセージを送受信できること
- メッセージを蓄積できること
です。
これで、上記の大切にしたことを実現できるのでは?と考えました。
今回、メッセージングサーバは、負荷分散とバックアップも踏まえて、アマゾン ウェブ サービス(AWS)を利用することにしました。
AWSについては、次回、書こうと思います♪
参考資料
SalesforceのEditionおよびAPIバージョンを確認する方法
https://help.salesforce.com/articleView?id=000199268&language=ja&type=1
Salesforce API要求の制限と割り当て
https://developer.salesforce.com/docs/atlas.ja-jp.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_api.htm