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

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をコピーしました