2017.05.23

Amazon SQS を使った新しい連携活用例

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

はじめに

みなさん、こんにちは。製品開発部の村田です。

2015年3月1日にバージョンアップして更に利用シーンが広がったSkyOnDemandですが、Amazon Web Services(以下、AWS)との連携アダプタについて追加・機能強化を行い、AWSを活用したデータ連携をよりシームレスにご利用いただけるようになりました。

今回は新たに追加された機能の中から、ぜひご活用いただきたい機能を一つご紹介をさせていただきたいと思います。


新機能「Amazon SQS アダプタ」について

SkyOnDemandのよくある活用例として、HTTPリクエストによる呼び出しやWEBサービスとして連携処理を起動するなど、クラウドサービスならではの使い方が一般的には多くございます。

SalesforceなどのクラウドサービスのUI上の操作をきっかけに連携処理を起動させるなど、業務アプリケーションの一部としての使われ方から、外部システム側のバッチ処理の後続処理として利用される場合など、連携用途は様々なものがあげられます。

そんな中、SkyOnDemandとの連携において「メッセージキュー」を利用したいというニーズが多く寄せられており、信頼性の高い分散キューである「Amazon Simple Queue Service (以下、Amazon SQS)」を活用した連携に対応すべく、新機能として「Amazon SQS アダプタ」を開発いたしました。

「Amazon SQS アダプタ」は、Amazon SQS上のキューに対して、メッセージの送信、受信、削除などの操作を行うといった非常にシンプルな機能となっておます。

この機能を利用することでRESTやSOAPに比べ、よりメッセージ到達性に優れた方式でメッセージを伝達できるようになり、システム間連携の新たな仲介役を担うことが可能となるわけです。


「Amazon SQS アダプタ」の活用例

前述しました通り、信頼性・到達性に優れたキューサービスを活用することで連携処理自体にも効果があります。

例えば以下のような要件があったとします。

  • 要件:「△△△の作成」の自動化

  1. 業務担当者は、Salesforceの画面操作から「△△△の作成」を要求したい。
  2. 「△△△の作成」には時間がかかるため、「非同期」実行の要求としたい。
  3. 実行要求を受けたバックエンドシステムでは、「△△△の作成」を行い、業務担当者へメールで完了メールを送りたい。
  4. 実行要求に対して「△△△の作成」は確実に作成する必要があるため、失敗しても再度作成を行いたい。
  5. 実行要求の増加が見込まれるため、容易に負荷分散できるような仕組みとしたい。

この要件について、バックエンドシステムとしてSkyOnDemandで構築するとどうでしょうか。

  • 従来の機能で構築する場合

 

 

  • Amazon SQS アダプタを活用した場合

ポイントとなるのは、実行要求が「HTTPリクエスト」か「Amazon SQSへのメッセージ送信」かという点ですね。

それぞれ以下の観点で比較をしてみました。

既存の機能の場合(HTTPリクエストAmazonSQSアダプタを活用した場合
Apexコードからの呼び出し ○(HTTPリクエスト) ○(SQSへメッセージ送信)
非同期実行
要求数の増加による影響 △(並列実行となると高負荷となってしまう) ○(ポーリングによる起動のため、一定間隔で処理できる)
負荷分散の拡張性 ○ (ロードバランシングトリガー機能 +スケールアウトで可能) ○(スケールアウトすることで可能)
バックエンドシステムのメンテナンス時の実行要求 ×(到達しない) ○(SQSに溜まっているため復旧後、受信可能)
連携処理がエラーとなった場合のリトライ △(再度要求するか、繰り返す仕組みを考慮する必要あり) ○(メッセージが削除されるまで、繰り返し実行)

「Amazon SQS」のメリットが見えてきましたね。


まとめ

ということで、「Amazon SQS」を活用することで信頼性の高い非同期連携を容易に構築できることがわかりますね。

今回紹介させていただいた「Amazon SQS」ですが、実は・・・・ SkyOnDemand の「裏側」でも利用しております!!
例えば、お客様環境毎の「通信量」や「有効トリガー数」を毎月集計させていただいておりますが、情報収集はAmazon SQS を介したメッセージのやり取りで行われ、さらに受信側では、お客様の増加に伴ったメッセージのやり取りの負荷を分散できる仕組みで柔軟に対応しております。

また、活用例にも記載しましたが、SalesforceのApexコードからのメッセージ送信も可能となりますので、クラウドサービスを組み合わせることで相乗効果を生み出すこともできます。

このような要件でお困りの方がいらっしゃいましたら、ぜひとも弊社までご相談いただければ幸いです。

今回は活用例・利用シーンをメインにご紹介させていただきました。
設定方法や実装方法につきましては、次回以降でご紹介させていただきますので、ぜひ楽しみにしていてください。

それでは、今回はこのへんで終わらせていただきます。今後もご期待ください!!

1 件

関連する記事