SQS は Amazon Simple Queue Service の略で、メッセージをキューとしてためて、後ろのワーカーや別サービスが順番に処理するための AWS のマネージドサービスです。AWS公式でも、分散したソフトウェアシステムやコンポーネントを統合し、疎結合にするための安全で耐久性のあるホスト型キューとして説明されています。
初心者向けに言うと、SQS は 今すぐ返したい処理 と あとで処理してよい仕事 を分けるための箱です。
たとえば会員登録後のメール送信、注文後の通知、画像変換、外部API連携のように、前段レスポンスを待たせたくない処理をメッセージとして SQS に入れておき、後ろのワーカーが取り出して実行します。
SQS には Standard queue と FIFO queue の2種類があります。Standard queue は高スループット向けで、少なくとも1回配送される前提です。FIFO queue は順序や重複抑制をより重視したい場面向けです。どちらを使うかは、順番が重要か 多少の重複を受け入れられるか で考えると分かりやすいです。
また、SQS を使うときは 受け取っただけでは完了しない ことも重要です。メッセージは受信後、visibility timeout の間だけ他のコンシューマーから見えなくなり、処理が成功したら削除して完了します。失敗した場合は再び見えるようになり、再試行されます。このため、重複実行や再試行を前提にした設計が必要です。
本番運用では Dead-Letter Queue もよく使われます。これは、何度も失敗して処理できないメッセージを本流キューから退避させる仕組みです。失敗メッセージの調査や再投入をしやすくするため、SQS を安全に使ううえでかなり大事な要素です。
ひとことで言うと、SQS は 非同期処理でキューを1枚挟むための基本サービス です。詳しくは SQSとは?非同期処理でキューを入れる理由をAWSで整理 でまとめています。