ハンズラボエンジニアブログAWSの話題を中心に、日々の業務やプログラミングの徒然を綴るエンジニアブログです。こんにちは、最近、社会人1年目が過ぎた村上です。Service)のスタンダードキューの一部をFIFOキューへ移行した話を書きたいと思います。Tokyoリージョンは2017年上旬予定と聞いたのですが、AWSコンソールを見てみると2017/12/15現在、未だリリースされていないようです。リージョンは利用できます。細かい説明はAWS公式に任せて、スタンダードキューとFIFOキューの主な違い、移行の経緯やFIFO特有の設定についてお話しできればと思います。移行後談スタンダードキューとFIFOキューの主な違いまずは簡単にスタンダードキューとFIFOキューの違いについて触れます。上記表にあるように順番についてはスタンダードはベストエフォートとあり、まれに順番を守れない事があります。「大量の画像データをある形式に従って変換する」といった処理の順番を気にしない用途には向いていると思います。今回の改修対象についてですが、順番を誤ってはいけない場所で使われています。メッセージの配信回数なのですが、スタンダードキューはまれに同じメッセージが複数回配信されることがあるので注意が必要です。一般的なECサイト同様、ハンズネットで注文した後に、注文済みの商品の数量変更やキャンセルができます。それらの操作が注文履歴画面に反映されないという不具合がユーザから報告される事が定期的にあったため調査しました。その結果、SQSのスタンダードキューを使ったデータ連携が怪しく、部分的にFIFOキューへ移行することにしました。テキスト形式のデータが、SQSのスタンダードキューを通ってDynamoDBへ反映(非同期)[改修後イメージ、スタンダード、FIFOが共存](2)についてですが、スタンダードキュー内で注文データの順序が守られていないのではないかという懸念がありました。このDynamoDBの注文レコードは上書きされる仕様となっていたため、順序を誤ると古いデータが最新の状態として画面に表示されることになっていました。以前は注文データは画像上部のスタンダードキューを通っていましたが、今回画像下部のFIFOキューを追加し、問題のあった注文データのみFIFOキューを通るように変更しました。FIFOであれば、キューへ送った順に取り出されるので注文データが順番を誤まる心配がなくなるというわけです。次節以降ではFIFO特有の設定とについて少し書きます。ファイル→DB)という特殊な事情もあり、少し複雑なシステムとなっています。いずれは上記の(2)のテキスト形式レコードをDynamoへ反映する処理は無くしたいと考えています。Queueの作成自体は設定を気にしなければ数秒で終わりますが、導入する際は最低でもメッセージ重複排除IDと、メッセージグループIDについては少し考慮した方が良さそうです。メッセージ重複排除ID適宜、公式より説明を拝借します。送信されたメッセージの重複排除に使用するトークン。分間の重複排除間隔の間は配信されません。キューでは重複メッセージがありません。キューを使用すると、重複をキューに送信することを防止できます。キューに重複を挿入しませんとのことです。要するに、「同一の重複排除IDが設定されたメッセージをキューへ送っても5分間の間は受付けられない」ということのようです。ちなみに、重複排除IDの設定についてですが、二通り方法があります。sendMessage時にDeduplicateIdを指定(1)の方が楽だったので、以下のようにFIFO作成時に設定しました。特定のメッセージグループに属するメッセージを指定するタグ。(ただし、別のメッセージグループに属するメッセージは、入れ替わって処理される場合があります)。こちらも少し分かりづらいですが、「グループ内の順序は厳密に守られるが、他のグループのメッセージとは順番が前後する場合がある」と理解しました。今回はキューに入れた順に取り出されれば良かったので、特にグループは気にせず、以下のようにMessageGroupIdには定値を入れました。経ち、その間ハンズメッセというセールも経験しましたが、問題報告はありません。あとは、TokyoリージョンにFIFOがリリースされれば、そちらに移ろうかという所です。明日は14日目のsho-hitomiさんです。Beanstalk(4)GitHub(2)Go(1)IAM(1)JavaScript(3)Kinesis(1)Lambda(7)S3(1)SQS(1)Vue.js(1)serverless(3)イベント(11)キーボード部(1)スクラム(1)デザイン(2)ブロックチェーン(1)新人研修(15)暗号通貨(1)機械学習(1)CONTACTハンズラボへのお問い合わせ、取材・講演のご依頼は、こちらからお願い致します。折り返し担当者よりご連絡させていただきます。RESERVED.トップ。