こんにちは、エム・フィールドグループの教育部門SITCのYouTubeチャンネル「MACADEMY」を担当している山口格と申します。
本日は、「ソリューションアーキテクト問題解説その2:Amazon SQSの「空の応答」削減」の問題解説をご紹介します。このコンテンツはYouTube動画の書き起こしとなっておりますので、動画視聴をご希望の方は、こちらからご覧ください。
今回の目標は
「ソリューションアーキテクト試験合格に向けて試験問題の解き方を学ぶ」ことです。
今回も、
1「解き方のコツ」で問題を解く上で気を付けるべきポイント、
解き方の概要をお伝えします
2「問題文」でこれから実際に解く問題をご紹介し、
3「解き方のコツに沿って問題を解く」に進みます。
3で解いた問題の正答の根拠となるドキュメントをご紹介をし、
最後にまとめ、という流れですすめていきます。
解き方のコツは3つあります。
1:「知らないキーワードを調べる」
2:「問題で求められていることを読み取る」
3:「選択肢に当てはまるか検討する」
問題文や選択肢に知らないキーワードがあると、正しいか誤りか判断ができなくなるので、まず最初に問題文の中の知らない単語を無くすことが重要です。
次に問題文が何を求めているのか探りましょう。そこから読み取った内容に対して、1つずつ選択肢を検討していきます。それでは、実際に解く問題を読んでいきます。
この問題を先ほどの問題のコツに沿って解いていきます。
■知らないキーワードを調べる
それではまず初めに、「知らないキーワードを調べる」ところから始めていきます。
この問題文から、分かりにくい単語を抜き出してみると、以下の赤文字になるのではないでしょうか?
これらの単語を調べていきましょう。
非同期処理とは
あるタスクが実行をしている際に、他のタスクが別の処理を実行できる方式のことをいいます。
AmazonSQSは
Amazonが提供するメッセージキューイングサービスです。メッセージキューとは、異なるソフトウェア間でのデータの送受信をする手法のことで、第三者にデータを一時預けることで好きなタイミングでデータの送受信ができるというものになっております。
ポーリングリクエストとは
処理をするサーバからメッセージキューに向けてのリクエストのことをいいます。処理するデータがあればそれを受け取り、無ければ空の応答を返します。ポーリングは、10秒ごとなど定期的に行われるのが一般的です。
リドライブポリシーですが、
ここで気を付けなければいけないのが、「リトライポリシー」の誤訳である、ということです。AWSドキュメントは英語から翻訳したものなのでこういった誤訳や、分かりにくい言い回しがあることに注意が必要です。
リトライポリシーとは、
正常に処理できなかったメッセージ(AWSではデッドレターキューといいます)これを再処理するためのポリシーのことです。これによりエラーのあるメッセージを何度も受信することを避けることができます。
可視性タイムアウトは
SQSでは処理するサーバにメッセージを送信した後、一定時間同じメッセージを、ほかのサーバに見えないようにする機能があります。これにより、他のシステムが二重に同じ処理をしなくて済みます。
■問題で求められていることを読み取る
ここでは問題で求められていることを読み取るために
問題文中で大切なキーワードを探します。
今回は
「ポーリングリクエストからの空の応答件数を最小限に抑える」
「キューの」が対象です。
「ポーリングリクエストからの空の応答件数を最小限に抑える」というキーワードは、
本題での達成すべき案件になります。処理する側のサーバからの応答に対して、
キューが「空の応答」を少なくすることを目的として考えることが重要です。
「キューの」というキーワードは、全ての選択肢で共通している部分です。
キューとはAmazon SQSのことを指すため、SQSのどの機能で「空の応答」を少なくするのかを考えていくことになります。
この問題を解くうえで、知っておきたいAWSのサービス、または機能を紹介します。
「Amazon SQS」を紹介します。
AmazonSQSはAWSが提供するメッセージキューイングサービスになります。
主な機能として、ショートポーリングとロングポーリング、可視性タイムアウト、遅延キュー、デッドレターキューがあります。
本問題でのキーワードは「空の応答」になります。空の応答はショートポーリング時のSQSの応答のことで、即応答をしてメッセージがなければ返される、という特徴を持ちます。これに対し、ロングポーリングでは最大20秒待つことができ、応答の頻度が減らすことができます。
今までの要素から、問題文の構成図を考えてみましょう。
以下のような図になることが予想されます。
■選択肢が問題で求められていることに当てはまるか検討する
Aはキューの最大メッセージ保存期間を増やす、です。
キューのメッセージ保存期間は1~14日で指定することができます。
しかし、メッセージ保存期間を増やしても、新たなメッセージがなければ
空の応答を返してしまいます。
よって、この選択肢は誤りです。
Bはキューのリドライブポリシーの最大受信数を増やす、です。
キューのリトライポリシーの最大受信数は、1~1000の間で設定できます。
処理サーバが削除せずにメッセージを設定数以上受け取ると、メッセージがデッドレターキューに移動します。
ポリシーの最大受信数を増やしても、空の応答を減らすことと関係がありません。
よって、この選択肢は誤りです。
Cはキューの既定の可視性タイムアウトを増やす、です。
既定の可視性タイムアウトは0秒~12時間の間で設定できます
タイムアウトの時間を増やすことで、ほかの処理サーバからメッセージを見えなくして
再処理を防ぐ時間を長くすることはできますが、ポーリングリクエスト自体は送られるため、空の応答は減りません。
よってこの選択肢は誤りです。
Dはキューの受信メッセージ待機時間を延長する、です。
SQSでは受信メッセージがないときの待機時間を設定することができます。
これをロングポーリングといい、空の応答を減らすことによってコストを削減することができます。
よってこれが正答になります。
■参考になるドキュメント
正答の根拠となるドキュメントです。よろしければご確認ください。
◆What is Amazon Simple Queue Service?(Amazon SQSの解説)https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperG
uide/welcome.html
◆Amazon SQS – Qiita
https://qiita.com/leomaro7/items/296c46ad6366a8dca28c
◆Amazon SQS のクォータ
https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperG
uide/sqs-quotas.html
◆Amazon SQS dead-letter queues
https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperG
uide/sqs-dead-letter-queues.html
◆Amazon SQS visibility timeout
https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html
以上で講義を終わります。ありがとうございました。
■YouTubeチャンネル「MADADEMY」
エム・フィールドグループの教育部門SITCのYouTubeチャンネル
「MACADEMY」では様々な動画を無料で公開し、毎週更新しています!
AI、人工知能、DX、クラウド化など、ご興味のある方は、ぜひご覧ください。
YouTubeチャンネル「MADADEMY」
COLORS by m/f は、AIを武器に企業のDX推進をサポートする
株式会社エム・フィールドとグループ会社の情報満載のオウンドメディアです。
D X、A I、クラウドに関する企業研修、新卒研修を提供しています。
未経験からIT業界へ。働きながらキャリアチェンジができる。
次世代I T人材を未経験から育てるトレーニングセンターを開講しています。
ただいま「5日間お試し授業」実施中。
https://www.ambl.co.jp/recruit/trainingcenter/trial/
エム・フィールドグループでは、新卒・中途採用を積極的に行なっています。
Webアプリケーションエンジニア、Python開発プロジェクトリーダー、
クラウドエンジニア、セールスエンジニア、営業ルートセールス、
ネットワークエンジニア、PM/PL候補システムエンジニアを募集しております。
https://www.ambl.co.jp/recruit/
新卒採用情報はこちら
https://job.mynavi.jp/22/pc/search/corp200590/outline.html