Graceful shutdown
処理中のリクエストを終了させてから、serverを停止する仕組み
処理に向けての課題
Section titled “処理に向けての課題”- 新しいリクエストを受け付けない
- 処理中のリクエストを完了させる(タイムアウトを実装)
- DBコネクション、ファイルハンドラを正しくクローズする
- クリーンアップ処理を実行
この2を実行する際に、大量のデータ登録などのバッチ処理が走っているとタイムアウトを超えて 処理が途中で中断される可能性がある。
このような場合に備えてQueueを導入することで、非同期処理に変えておくことが解決策になる。
同じserver内でQueueをおく
Section titled “同じserver内でQueueをおく”- Web server
- Web worker
- Queue(Redis)
flowchart LR subgraph miniPC ws(Web server) ww(Web worker) r(Redis) end ws --> r --> ww
別serverに、Queueをおく
Section titled “別serverに、Queueをおく”- Webserver
- SQS
- Lambda
flowchart LR subgraph miniPC ws(Web server) end subgraph AWS s(SQS) l(Lambda) end ws --> s --> l