AWS、SQSは、処理全体を効率よくするサービス

この記事は約3分で読めます。

SQSとは

SQSとは、AWSのMQ(メッセージキュー)サービス。

そのAWSのSQSを試してみました。

SQSとは、「Simple Queue Service」の頭文字。

AさんからBさんへお仕事の依頼

例えば、2つのお仕事があり、前半のお仕事と後半のお仕事は人が違うとします。

AさんからBさんにお仕事を引き継ぐとします。
順調にいけば、Aさんが、Bさんに「Bさんお願い」とお仕事を頼みます。

Bさんが忙しい

しかし、Bさんが忙しい場合、Aさんは、Bさんのお仕事が終わるまで待つことになります。
そこで、Bさんと同じ仕事をしているCさんに頼みます。

Aさんは、BさんとCさんの忙しさをみて、どちらかに頼むことにします。

Aさんは、Bさん、Cさん二人の進捗を見ることになります。

効率よくやるために・・・

この間に「中継所」を設けます。
「お仕事依頼票」を置く場所です。

Aさんは、「依頼票」を書いて、「中継所」に置きます。
Bさん、Cさんは、「中継所」の「依頼票」をみて、仕事をします。
Aさんは、Bさん、Cさんの仕事の進捗に関係なく、自分の仕事に集中できます。
Bさん、Cさんも、自分のすべき仕事だけに専念ができます。

この「中継所」が「キュー」と呼ばれるもので、AWSでは、「SQS」というサービスになります。

AWS SQSは、疎結合

AさんとBさん、およびCさんは、直接関わらないので、「疎遠な関係」になります。
専門的には、「疎結合」と言われてます。

このように一連の処理の中継地点を設けて、全体を効率よくさせるのに「SQS」が役にたちます。
例えば、最初にWEBのアクセスログを取得。その後、ゆっくりとアクセス解析。という処理などに適用できます。

順番

先に、キューに出したのを、最初に処理する。
FIFO、「First In、First Out」と呼ばれています。
AWS SQSでは、FIFOでも処理が可能です。

依頼票は、JSON形式

キューに保存するデータは、JSON形式で、サイズに制限があります。
各種プログラムを介して、SDK経由でキューの発行や取得ができます。

AWS SQSは、何がいいの?

RDBなどで、管理をすることも可能かと思いますが、キューの処理だけを考えると
費用面、堅牢性、などを考えると大規模になればなるほど、AWSのSQSに任せた方がいいかと思います。

結論

AWS SQSは、キューサービスを確実にこなしてくれる、謙虚であるが、頼もしい存在!

ロングポーリング(2019/2/16追加)

SQSに対して、受信の要求をすると、データがなく、空振りでも、料金が発生します。
無駄な料金を削減するために、キューのタイムアウトを長くして、データを取得しやすいようにします。

可視性タイムアウト(2019/2/16追加)

キューを取得している間、他のキュー取得プログラムからは、タイムアウトとして、メッセージを見せないようにします。
これにより、データの取得リクエストを減らし、コストを削減することができます。

Amazon kinesisサービス(2019/2/16追加)

Amazon kinesisサービス(リンク)

 

タイトルとURLをコピーしました