ブログリレー

【Simple Queue Service】AWSサービスしりとりリレー 第1日目

2021年6月8日にディーネットは、
APNアドバンストコンサルティングパートナーへ昇格いたしました!

お、頑張ってるねー。と思ってくれた方。
かなりのAWS通ですね。ありがとうございます。

なになに?と思った方は、ぜひこちらの記事をご覧ください。
パートナーの役割やランク、昇格条件などをまとめております。

ということで、こんにちは。マーケティング室の浅見です。
今月は昇格を記念して「AWSサービスしりとりリレー」を開催することになりました!!

AWSサービスしりとりリレーって何?

AWSサービスしりとりリレーとは、

  • 2021年7月1日~7月15日の間
  • ディーネットのエンジニアが
  • AWSのサービス名を使って
  • しりとり形式で
  • 毎日技術ブログを投稿する

という企画です。

実は今年は、AWSの一般公開15周年です。お祝いの気持ちを込めて、ディーネットも15日連続でブログ記事を投稿していきますので、ご期待ください。

1日目のお題は「Amazon SQS(Amazon Simple Queue Service)」となります。「AWS」の「S」から始まっているのですね。しりとりなので、2日目のお題は「Amazon Simple Queue Service」の最後の文字である「e」から始まるサービスです。

初日の大役を任せてもらったので、「キューってなんぞや?」という方を対象に、「Amazon SQS」について解説していこうと思います。一般的なキューイングサービスについて説明したうえで、「Amazon SQS」の特徴を解説していきますので、最後までお付き合いください。

既に知ってる!という方は、次回「e」から始まるサービスしりとりをお楽しみにしてくださいね!

キューイングサービスを知ろう

キューとは

キューとは、データ構造の一つです。図のように、先に入れたものが先に取り出せるリスト構造のものをいいます。この、先に入れたものを先に取り出すことを「FIFO(First In First Out)」と表現します。

キューとは
キューとは先入れ先出しのデータ構造

反対に、先に入れたものを後に取り出すことを「FILO(First In Last Out)」といいます。

キューイングサービスとは

システムAからシステムBへ負荷が高い処理を依頼するケースを考えてみます。相手の都合を考えずに負荷が高い処理をたくさん依頼すると、システムBが過負荷に陥る可能性があります。また、システムBが何らかの理由で利用できなくなっている場合、システムAの処理が異常終了してしまいます。

この問題を解決するために、キューが役立ちます。キューの仕組みを利用したキューイングサービスです。キューイングサービスでは、キューだけではなく、処理依頼を確実に受け渡す仕組み全体を提供します。

キューイングサービスの概要
キューイングサービスの概要

キューイングサービスを使った構成では、次のように処理の連携を行います。

  • システムAとシステムBの間にキューを挟みます
  • システムAはキューに対して処理依頼を行い正常終了させます
  • システムBはキューに依頼が来るかを監視しておき(ポーリング)、依頼が来たタイミングで処理を実行します
  • 処理実行中に来た新たな依頼はそのままキューにためておき、処理完了後に次の処理を実行します

キューを使い非同期処理とすることで、システムAとシステムBの連携を緩やかにすることが可能です。これを疎結合といいます。

システムを疎結合にすることで、互いの状態を気にすることなく、システムのパフォーマンスや開発効率を向上させることが可能です。

Amazon Simple Queue Service

上述したキューイングサービスを、分散型のフルマネージドサービスで提供しているのが「Amazon SQS」です。

特徴

「Amazon SQS」は、複数サーバー/データセンターでメッセージを保持するように設計されており、冗長構成がとられています。

また、多数の送信者と受信者に対応しており、スケーラブルです。さらに、メッセージが増加しても高スループットを維持できるように設計されています。

そして、毎月の無料枠があり、使った分だけの従量課金なため、低コストで利用が可能です。

まとめると、次のような特徴があります。

  • 高い信頼性
  • スケーラブル
  • 高スループット
  • 低コスト

また、コントロールパネルから簡単に使い始めることが可能です。「Amazon SQS」を使うことで、疎結合なシステムを効率よく開発していきましょう。

利用上の注意点

「Amazon SQS」で使える標準的なキューでは、次のような注意点があります。

  • メッセージの順序が保証されない
  • 複数回配信される可能性がある

いずれも、冗長性と高可用性を確保するために、大きな影響のない範囲で信頼性を犠牲にしています。

開発の際には、メッセージに順序付け情報を保存したり、アプリケーションが冪等性を持てるような設計をする必要があります。

ある程度のパフォーマンスを犠牲にしても、順序保障や1回のみ配信を求めたい場合は、「標準キュー」ではなく「FIFOキュー」の利用を検討してみましょう。

詳細については、AWSドキュメントを参考にしてください。

まとめ

「Amazon SQS」は、フルマネージド型の分散キューイングサービスです。利用をすることで、キューイングシステムの構築や運用をAWSへ任せることができます。

複数のシステムを疎結合にすることが可能です。処理負荷が高いバッチ処理や画像変換、帳票作成処理などのシステムを緩やかに連携するために効果的なサービスになるので、適材適所で活用してもらえればと思います。

ということで、AWSサービスしりとりリレー初日は「Amazon Simple Queue Service」でした。

AWSしりとり二日目は「e」から始まるサービスになります。どんなサービスになるのか、ぜひお楽しみに!

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA