みなさん、こんにちは。本記事では、AWS(Amazon Web Services)のメッセージングサービスについて説明していきます。AWSは、現在様々なサービスがリリースされていますが、メッセージングサービスはAWSが初期にリリースしたサービスで、非常に歴史があります。また、その便利さから、現在では様々なITシステムで利用されています。AWSのメッセージングサービスは、代表的なもので下記の3つが挙げられます。

  • Amazon MQ
  • Amazon SQS
  • Amazon SNS

それぞれのサービスについて、サービスがどのようなものなのか、具体的にどのようなユースケースを考えられるのか、本記事で記載していきます。

そもそもメッセージングサービスとは?

そもそもメッセージングサービスとはどのようなものなのでしょうか。また、利用することによりどのようなメリットがあるのでしょうか。メッセージングサービスを一言でいうと、「システムAがメッセージを送信し、それを別のシステムBで受信できるようにする仕組み」を提供するサービスです。現在、様々なITシステムは、オープン系といい、数台~数十台のサーバが連携しあって1つのシステムを構築しています。それぞれのサーバの、様々なプログラムが複雑に連携することで、大規模なシステムの処理が成り立っています。そのような場合、1つのプログラムに問題が発生すると他のプログラムの処理も止まってしまい、場合によってはシステム全体が停止してしまう、ということも珍しくありません。そのようなことを防ぐために、システムの複雑さを切り離す必要があります(疎結合化といいます)。それによって、システムやプログラムの安定稼働を支えます。プログラム同士の疎結合化を実現するのが、メッセージングサービスの役割です。

メッセージサービスの使いどころ

メッセージングサービスの使いどころは、具体的には以下のようになります。

非同期処理化

非同期処理とは、別のシステムの都合に関わらずに続行できる処理のことです。例えば、電話とメールを考えてみます。電話は、相手が同時に応答しないと”メッセージを送る”が成立しません。一方でメールは、相手が同時にメールを見ていなくても、”メッセージを送る”ということが可能です。電話のように、相手の応答を待つような処理のことを”同期処理”、相手の応答を待たないでいい処理を、”非同期処理”といいます。メッセージングサービスは、プログラム間の非同期処理化をおこなうことができます。

安全なデータ連携

メッセージングサービスは、データを連携するために特化したシステムであるため、データ連携をより安全に行うための様々な仕組みが用意されています。たとえば、クレジットカードなどの決済情報を通信している際に、クレジットカードシステム側の障害等でデータが消失してしまうと、利用者やカード会社は困ります。このように、安全なデータ連携を行いたい場合はメッセージングサービスを使うといいでしょう。

Amazon MQとは?

それでは、AWSの代表的なメッセージングサービスの1つである、Amazon MQについて、どのようなサービスなのか、ユースケース等を見ていきましょう。

Amazon MQの概要

Amazon MQとは、AWSが運用を行うメッセージキューイングサービスです。「メッセージキューイング」とは、システム間でデータをやり取りする際に、一時的にデータを溜め込む仕組みのことを指します。システムAからのデータを一時的にため込んでおき、別のシステムBからメッセージを取得することで、メッセージサービスの使いどころの1つである、『非同期化』を実現することができます。非同期化をしておくことにより、システムAはシステムB側の処理を待つことなく稼働し続けることができるので、システムの安定稼働に貢献します。Amazon MQは。Apache ActiveMQ、およびRabbitMQとよばれる、オープンソースのメッセージキューイングソフトをベースに構築されたサービスです。

Amazon MQの使いどころ

Apache ActiveMQおよびRabbitMQといった、一般的によく使われるメッセージキューイングサービスを利用しているため、世間一般で利用されているメッセージキューイングサービスの通信で利用されている通信プロトコル(通信の仕組み)をそのまま利用することができます。つまり、オンプレミス環境でJMSやMQTTといった通信プロトコルを利用しているシステムをAWSに移行した際には、Amazon MQに置き換えて使うことができます。

Amazon SQSとは?

次に、Amazon SQS(Simple Queue Service)について、どのようなサービスなのか、ユースケース等を見ていきましょう。

Amazon SQSの概要

Amazon SQSは、Amazon MQ同様、AWSが運用するメッセージキューイングサービスです。Amazon MQはApache ActiveMQなどの、ベースとなるアプリケーションから作られていますが、SQSはベースとなるサービスがなく、AWSオリジナルのサービスです。

Amazon SQSの使いどころ

Amazon MQと違い、Amazon SQSは、シンプルなAPIを実行することでデータをため込んでおくことができます。そのため、AWS上で一からITシステムを構築する際には、シンプルにメッセージングサービスを導入することができます。また、AWSオリジナルのサービスであるため、他のAWSのサービスとの連携が容易になっています。後述のSNSはもちろんのこと、DynamoDBなどのデータベースとも連携が可能です。例えば、DynamoDBへのリクエストが急増した場合にDynamoDBが高負荷にならないよう、SQSにリクエストをため込んでおくことで、負荷を軽減する、といった使い方も可能です。

Amazon MQとSQSの具体的な違いは?

Amazon MQとSQSは両方ともメッセージキューイングサービスです。それぞれ、どのような違いがあるのでしょうか。具体的な違いについて記載していきます。

  • 用途について
    オンプレミス上でメッセージングサービスを利用しているシステムをそのまま移行する場合はAmazon MQ、クラウドネイティブなサービスを構成する場合はSQSを利用するといいでしょう。
  • 料金について
    Amazon SQSは、リクエスト毎に課金が発生します。つまり、SQSにデータを1回ため込むごとに、料金が発生します。一方で、Amazon MQは、利用した時間および、Amazon MQを通過したデータ量に応じて課金が行われます。
  • スループットについて
    SQSは、AWSによる自動的なスケーリングが可能となっており、ほとんど無制限のスループットが提供されています。一方でAmazon MQは、『インスタンスタイプ』と呼ばれる、CPUとメモリの組み合わせを選択して構築するため、選択したCPUとメモリまでがスループットとして保証されます。

このように、Amazom MQは様々な機能がある分、運用や設計については多少の工夫が必要になっています。SQSは、Amazom MQと比較してシンプルな機能となっていますが、性能は高く、AWSのサービスとの統合が非常に容易です。

Amazon SNSとは?

最後に、Amazon SNS(Simple Notification Service)について、どのようなサービスなのか、ユースケースを見ていきましょう。

Amazon SNSの概要

Amazon SNS(Simple Notification Service)はサーバレスに通知を可能にするサービスです。ユーザやアプリケーションの何らかのアクションをトリガーに、Lambdaの起動やメッセージ通知、SMSなどによるモバイル通知が行えます。メッセージ自体の容量については制限があったり、決まった時間に通知するといったスケジューリングの機能がなかったり、という制限はありますが、通知件数が多い場合も対応可能といった、スケーラビリティに優れているのが特徴です。

Amazon SNSの使いどころ

Amazon SNSは、多様なプロトコルと連携サービスを選択できます。プロトコルであればHTTPやHTTPSでメッセージを送信することが可能です。サービスであればSMS、Lambda、Amazon SQSといったサービスにメッセージを送信することができます。例えば、Amazon SNSとLambdaを組み合わせることで、AWSのサービスに障害が発生した際に、障害メッセージをLambdaに連携してLambdaを起動させ、障害を復旧する、SlackやDiscordといったWebhookに障害を知らせる、といった使い方が可能です。

まとめ

AWSが提供するメッセージングサービスについて、様々なサービスの特徴や機能を紹介しました。基本的な機能自体は『メッセージを他システムに連携する』ので、非常に地味に感じるかもしれません。しかしながら、ITシステムを安定して稼働させるための様々な機能を持っています。また、Lambdaなどの他システムとの連携を行うことで、非常に高度な処理を行うことも可能です。メッセージングサービスをうまく利用して、クラウドネイティブなITシステムを構築していきましょう。

▼「無料相談」受付中です。
https://www.sunnycloud.jp/contact-us/

AWSをご利用いただくには、直接契約するより断然お得。
AWS利用料が5%割引、さらに日本円の請求書による支払いが可能です!