Amazon Simple Queue Service の可視性タイムアウトってなぁに?

2019.08.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

元アップル信者の某氏に Amazon Simple Queue Service(SQS) について色々教えてもらって、かしこさが 1 あがったかめです。

教えてもらった中でも可視性タイムアウトの話が特に面白いなと思ったので、自分の復習も兼ねてブログにしてみたいと思います。

SQS 自体について知りたいという方は、以下の記事などがおすすめです。

AWS再入門ブログリレー SQS編 | DevelopersIO

可視性タイムアウトとは?

Amazon SQS 可視性タイムアウト

可視性タイムアウトとは、 SQS のキューに入ったメッセージが処理開始直後に重複して処理されないように、処理中の場合、一時的に他のプロセスからは、メッセージが存在していることを見えないようにする設定です。

絵で見る可視性タイムアウト

説明を聞いていた時に、私の脳内で繰り広げられていた SQS を擬人化した可視性タイムアウト劇場を図解します。

配役

役名 演者
お仕事紹介所 SQS
夏休みでバイトに燃える学生さんたち コンシューマ
お仕事の求人広告 メッセージ

可視性タイムアウト劇場

ここは、 SQS お仕事紹介所。
掲示板には、様々な求人広告(メッセージ)が貼り出されている。
求人は、早い者勝ちでやりたいと言った人がその仕事に就けるが、期限までに音沙汰がないと契約を解除されて、再度、求人広告が貼り出される。

夏休みでバイトに燃える学生さんのむれがあらわれた!

学生さん A の選択、チラシ配りをやろう。

求人が見つかった広告は、掲示板から外されて、受付で保管される。
他の学生さんたちからはその求人の存在が見えない。

学生さん B の選択、ロゴデザインをやろう!
学生さん C の選択、ケーキ販売をやろう!
学生さん D の選択、配達をやろう!

学生さん A 、なかなかチラシが減らない。
もうすぐ期限なので、お仕事紹介所に連絡し、期限を延ばしてもらいます。

学生さん B は、アイデアの神が降りてこないようです。
そうこうしているうちに期限は過ぎていました

その頃、お仕事紹介所では…

ロゴデザインの件、期限過ぎたな、再募集するか。
ロゴデザインの求人広告が再度貼り出されました。

絵で見る可視性タイムアウト:解説編

私の脳内劇場では、可視性タイムアウトの設定時間を期限のようなイメージで捉えました。

上図のように誰かが作業中の場合、処理が重複しないように期限までは掲示板から広告が外されて、他の学生さんたちからはその求人があったことさえ認識されない状態になる。
これが可視性タイムアウトが機能した結果と理解しました。

学生さん A

期限までは終わらなかったものの、まめに連絡をいれて期限を延長しています。
これは、ハートビートの話で、処理にどのくらい時間がかかるかわからない時などに設定すると、メッセージを処理し続けている限り、可視性タイムアウトを毎秒 2 分ずつ延長します。

学生さん B

期限内に終わらなかったので、再度、募集をかけて、できる人にお願いしようとしています

学生さん B のように処理中になんらかの理由で処理をしているサーバなどがダウンするなど、不慮の中断があっても冗長化した他のサーバなどで、処理できるようになります。

こぼれ話

実際には、脳内劇場で公演されていたのは、モンをハンする感じのアレみたいなファンタジーテイストのクエスト受注の様子だったのですが、マッチするフリー素材がなかったので、現代っぽい感じにアレンジして見ました。
メッセージの削除やリトライについても、私の妄想は広がっていたので、気が向いたら続編をオリジナルイラストで書くかもしれません。