SQSの特徴や導入事例を紹介!AWSのメッセージングサービス

プログラミング
アマゾン・ウェブ・サービス(AWS)の数あるサービスの中に「SQS」というものがあります。これはメッセージキューイングサービスのことで、大容量のデータをやり取りするようなWebサービスを構築する上で非常に便利なサービスになります。サービスの特徴や導入事例を知ることでそのイメージを掴んでいきましょう。
SQSの特徴や導入事例を紹介!AWSのメッセージングサービス

AWSはAmazon Web Services(アマゾン・ウェブ・サービス)の略称で、アマゾンが提供するクラウドサービスです。AWSには様々な種類のサービスが用意されており、ユーザーは100近いサービスの中から選ぶようにしてこれらを使用していくことができます。その中には「SQS」というサービスがあります。
ここではSQSについて、概要や特徴、使用する上で注意すべきポイント、実際の導入事例を紹介します。

AWSのSQSとは


AWSが提供するサービスにはSQSというものがあります。SQSとは様々なタスクを実行するアプリケーションの分散コンポーネント間でデータを簡単に移動させられるというものです。SQSを簡単に説明すると、メッセージキューイングサービスということになります。
メッセージキューイングとは、アプリケーションプログラムの間で動作の連携を行い、データを交換させるときの方式のことです。送信データをキュー(queue)と呼ばれる領域に保持することで受信側の処理を待たずに継続して処理を行っていくことができます。この仕組みの提供をSQSでしています。

SQSの特徴


SQSの特徴や注意点について説明していきます。多くの優れた特徴を持っていますが、キューイングサービスならではの注意点などもあるため、実際に使用していくためにも長所と短所を把握しておきましょう。

メッセージの送信をサポートする

SQSを使用することでどんな容量のデータでも、あらゆるレベルのスループットで転送できると言われています。転送にあたりメッセージがなくなってしまうことや、他のサービスが利用可能であることも条件とされません。
アプリケーションコンポーネントも切り離されているためデータ送信の失敗は個別に扱われ、システム全体の耐障害性も高くなります。

スケーラビリティに優れる

SQSはスケーラビリティに優れており、複数の送信者と受信者に対応できること、メッセージが増加しても速度劣化しないなどの特徴があります。そのため時間のかかる処理を非同期で行いたいときには、SQSのようなキューイングサービスが便利で、ひとつの処理に対して数分もしくは数時間かかってしまうような場合だと特にその恩恵が受けられるでしょう。

動画をサーバーにアップロードする場合などはデータ容量が大きく処理に時間がかかることがありますが、このときサーバー側で変換処理のメッセージをキューに投げ、即座に処理を受け付けたことを知らせる画面を出すことなどができるようになります。そしてSQSを利用すればユーザーがキューを作る必要はありません。メッセージも複数のデータセンターにコピーするためなくなってしまう心配がありません。
しかもメッセージのやりとりはSSL経由でユーザー認証がかかっているため、セキュリティの水準も基本的なレベル以上で保たれていると言えるでしょう。

SQSの注意点

SQSでは最低1度のメッセージの到達を保障すると言われていますが、メッセージの順番については保障されていません。そのため遅れて送ったメッセージが先に受信されることがあるため注意が必要です。そこでメッセージの順序付けが重要とされる場合にはメッセージの送信後に並び変えができるよう、アプリケーション内で順番の情報をメッセージ内部に配置するなどの処置が必要になるでしょう。 また、サーバーが利用できないときにメッセージが送信される場合だと、そのサーバーのキューから情報が削除されず再び送信されてしまい内容が重複してしまう可能性もあります。

SQSの活用事例


実際に、SQSがどのように使われているのか見てみましょう。

チャット検索機能に応用

活用事例のひとつはチャットサービスへの導入です。当該チャットサービスを提供する企業ではSQSを含むいくつかのAWSを利用しており、メッセージの検索機能でSQSが活用されています。ユーザーが入力したチャットの更新履歴データをSQS経由でデータベースに保管、そしてその履歴をもとにSQSを生成するという流れを構築しています。

画像処理に応用

別の事例では画像処理に応用されています。ある企業ではゲームを中心とするデジタルエンターテイメント事業を展開しており、画像処理を高速で行う必要がありました。そこでSQSを含むいくつかのサービスを導入し、その高速処理を実現しています。
この事例では、写真撮影後、画像のバイナリデータをAWSの「S3」に置き、さらに「Lambda」が起動され画像加工の処理が行われます。その後、SQSから出される画像のバイナリデータを含むキューをオンプレミスサーバー側で取り込んで、加工済み画像データがサーバーに保存されるようになっています。SQSなど、各種システムの導入によって結果画像の処理速度は高まり、コストも比較的抑えて実現できるようになっています。

まとめ

AWSの代表的なサービスと言えば「EC2」や「S3」などですが、「SQS」も非常に便利なサービスであると言えます。Webサービスの提供をする上でも、大量のデータを扱う場合などにはSQSを導入していると効果的なケースがあります。

基本的には、時間のかかる処理を非同期で行いたいときに利用価値が高いと言えます。例えばテキスト量が多いだけでなく、画像量の多いPDFファイルを多数多使う場合など、このデータのやり取りを行おうとすればかなりの時間がかかってしまいますが、SQSを使えば処理を分けて効率的にデータのやり取りができるようになります。

メッセージの送信に関してこのようなサポートが受けられるということ、そしてスケーラビリティに優れていることで速度劣化などの心配がないことなどが特徴として挙げられ、多くの企業でも導入実績を持っています。大きなデータのやり取りがあるWebサービスの構築などを考えている方はSQSの利用も考えてみてはいかがでしょうか。


この記事のキーワードに関する勉強会・イベントを探す

TECH PLAYでは、ITエンジニア向けの勉強会・イベント情報を提供しています。
興味のある方はぜひご参加ください。


おすすめのコラム