Slide 1

Slide 1 text

インシデント調査から学んだ Sidekiq 設定の落とし穴 2024年を振り返ろう!若手エンジニアのための交流LTナイト 株式会社ワンキャリア 杉水俊輝

Slide 2

Slide 2 text

ONE CAREER Inc . Copyright © ONE CAREER Inc. All Rights Reserved. 自己紹介 Career 趣味 ひとこと 2 杉水 俊輝 ソフトウェアエンジニア 山口大学 → 筑波大学大学院 → ONE CAREER (24卒) 野球観戦⚾ 読書📕 ポケモン X/GitHub:@ltoppyl

Slide 3

Slide 3 text

Copyright © ONE CAREER Inc. All Rights Reserved. 目次 3 ● はじめに ● 学びの紹介:Sidekiq 設定の落とし穴 ● まとめ

Slide 4

Slide 4 text

Copyright © ONE CAREER Inc. All Rights Reserved. はじめに 4

Slide 5

Slide 5 text

Copyright © ONE CAREER Inc. All Rights Reserved. はじめに 5 今日お話しすること:インシデント対応を経てキャッチアップした内容 本来実行されるはずの非同期処理が失敗する不具合が発生! アプリケーションコードを追っても特に原因は不明

Slide 6

Slide 6 text

Copyright © ONE CAREER Inc. All Rights Reserved. はじめに 6 今日お話しすること:インシデント対応を経てキャッチアップした内容 本来実行されるはずの非同期処理が失敗する不具合が発生! アプリケーションコードを追っても特に原因は不明 非同期に行う部分の処理 (Sidekiq)の設定によっては、 デプロイのタイミングなどで非同期処理が完了せずに終了してしまう ことがあることがわかった!

Slide 7

Slide 7 text

Copyright © ONE CAREER Inc. All Rights Reserved. はじめに 7 今日お話しすること:インシデント対応を経てキャッチアップした内容 本来送信されるはずのメールが送信されない不具合が発生! アプリケーションコードを追っても特に原因は不明 非同期に行う部分の処理 (Sidekiq)の設定によっては、 デプロイのタイミングなどで非同期処理が完了せずに終了してしまう (メールの 送信に失敗する)ことがあることがわかった! 今回学んだ「Sidekiq 設定の落とし穴」についてご紹介します!

Slide 8

Slide 8 text

Copyright © ONE CAREER Inc. All Rights Reserved. 学びの紹介:Sidekiq 設定の落とし穴 8

Slide 9

Slide 9 text

Copyright © ONE CAREER Inc. All Rights Reserved. 9 Sidekiqとは? ○ 非同期処理(バックグラウンドでの作業を処理)するために用いられるライブラリ ■ メールの送信やデータのバッチ処理などの時間がかかる作業を アプリケーションの裏で実行しています。 Sidekiq 設定の落とし穴

Slide 10

Slide 10 text

Copyright © ONE CAREER Inc. All Rights Reserved. 10 Redis ● データベース管理システムの1つ ● Sidekiq のバックエンドとして 利用され、ジョブのキュー管理を担う ECS (Elastic Container Service) ● AWS が提供するコンテナ管理サービス ○ https://aws.amazon.com/jp/ecs/ Sidekiq 設定の落とし穴 Sidekiqの他に登場する技術要素 ECS Redis Enqueue Dequeue

Slide 11

Slide 11 text

Copyright © ONE CAREER Inc. All Rights Reserved. 11 Sidekiq 設定の落とし穴 Sidekiq でジョブが実行中に、デプロイされると 実行中のジョブはどうなるのでしょうか? ECS Redis Enqueue Dequeue

Slide 12

Slide 12 text

Copyright © ONE CAREER Inc. All Rights Reserved. 12 https://note.com/dev_onecareer/n/n7bdcf0c98622 より Sidekiq 設定の落とし穴 Sidekiq停止 =exit(0) SIGKILL SIGTERM Sidekiq停止 処理開始 ジョブ停止 処理開始 ジョブ強制終了 =Sidekiq::shutdown Sidekiq 終了までのタイムアウト時間 default:25s SIGKILL が送信されるまでの時間 default:30s ECS の終了を Sidekiq に伝える

Slide 13

Slide 13 text

Copyright © ONE CAREER Inc. All Rights Reserved. 13 https://note.com/dev_onecareer/n/n7bdcf0c98622 より Sidekiq 設定の落とし穴 SIGTERM Sidekiq停止 処理開始 ジョブ停止 処理開始 ジョブ強制終了 =Sidekiq::shutdown Sidekiq停止 =exit(0) SIGKILL Sidekiq 終了までのタイムアウト時間 default:25s SIGKILL が送信されるまでの時間 default:30s 実行中のジョブの完了を待つ

Slide 14

Slide 14 text

Copyright © ONE CAREER Inc. All Rights Reserved. SIGTERM Sidekiq停止 処理開始 ジョブ停止 処理開始 ジョブ強制終了 =Sidekiq::shutdown Sidekiq停止 =exit(0) SIGKILL Sidekiq 終了までのタイムアウト時間 default:25s SIGKILL が送信されるまでの時間 default:30s 14 https://note.com/dev_onecareer/n/n7bdcf0c98622 より タイムアウト時間までに完了しなかった ジョブはジョブキューに戻される Sidekiq 設定の落とし穴

Slide 15

Slide 15 text

Copyright © ONE CAREER Inc. All Rights Reserved. SIGTERM Sidekiq停止 処理開始 ジョブ停止 処理開始 ジョブ強制終了 =Sidekiq::shutdown Sidekiq停止 =exit(0) SIGKILL Sidekiq 終了までのタイムアウト時間 default:25s SIGKILL が送信されるまでの時間 default:30s 15 https://note.com/dev_onecareer/n/n7bdcf0c98622 より デフォルト値は設定で変更可能 Sidekiq 実行時に -t オプションで指定する Sidekiq 設定の落とし穴

Slide 16

Slide 16 text

Copyright © ONE CAREER Inc. All Rights Reserved. SIGTERM Sidekiq停止 処理開始 ジョブ停止 処理開始 ジョブ強制終了 =Sidekiq::shutdown Sidekiq停止 =exit(0) SIGKILL Sidekiq 終了までのタイムアウト時間 default:25s SIGKILL が送信されるまでの時間 default:30s 16 https://note.com/dev_onecareer/n/n7bdcf0c98622 より デフォルト値は設定で変更可能 ECS のタスクパラメータの stopTimeout ECS の環境変数の ECS_CONTAINER_STOP_TIMEOUT Sidekiq 設定の落とし穴

Slide 17

Slide 17 text

Copyright © ONE CAREER Inc. All Rights Reserved. SIGTERM Sidekiq停止 処理開始 ジョブ停止 処理開始 ジョブ強制終了 =Sidekiq::shutdown Sidekiq停止 =exit(0) SIGKILL Sidekiq 終了までのタイムアウト時間 default:25s SIGKILL が送信されるまでの時間 default:30s 17 https://note.com/dev_onecareer/n/n7bdcf0c98622 より デフォルト値は設定で変更可能 ⚠「Sidekiq 終了までのタイムアウト時間<SIGKILL が送信されるまでの時間」 とする必要がある! Sidekiq 設定の落とし穴

Slide 18

Slide 18 text

Copyright © ONE CAREER Inc. All Rights Reserved. まとめ 18

Slide 19

Slide 19 text

Copyright © ONE CAREER Inc. All Rights Reserved. まとめ 19 ● インシデントの調査より、Sidekiq の設定によっては デプロイのタイミングなどで非同期処理が完了せずに 終了してしまうことがあることがわかった ● 単にアプリケーションのコードを追うだけでなく ライブラリの設定や仕組みを理解することの重要性を再認識

Slide 20

Slide 20 text

Copyright © ONE CAREER Inc. All Rights Reserved. より詳細な内容については、テックブログにて! まとめ 20 https://note.com/dev_onecareer/n/n7bdcf0c98622

Slide 21

Slide 21 text

Copyright © ONE CAREER Inc. All Rights Reserved. 一緒にエンジニア界を 盛り上げていきましょう! 21

Slide 22

Slide 22 text

Copyright © ONE CAREER Inc. All Rights Reserved. X、note、EntranceBookで情報を発信中 🚀 興味のある方はぜひ!