Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Goで実現するGraceful Shutdown ~実運用での課題と解決策~ / Go Co...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
uhzz
September 26, 2025
2
1.4k
Goで実現するGraceful Shutdown ~実運用での課題と解決策~ / Go Conference 2025
uhzz
September 26, 2025
Tweet
Share
More Decks by uhzz
See All by uhzz
MCP調べてみました! / Exploring MCP
uhzz
2
2.7k
自動生成されたhttpエンドポイントごとにカスタムミドルウェアを挿入したい話
uhzz
1
2.8k
Enablement Bootcampを終えて -Enablement Bootcamp for Gopherizing 〜業務で使えるGoを学ぼう〜
uhzz
0
320
安全にQAを行える環境が整いました!- Kyash TechTalk #6 - Kyashの開発をチラ見せ
uhzz
0
830
Goのローカル開発をWorkspacesではじめよう
uhzz
1
1.1k
【Go:パッケージ管理】DepからGo Modulesへ
uhzz
0
1.1k
コードレビューで泣かないためのintSize = 32 << (^uint(0) >> 63)
uhzz
0
250
「ウチも、gRPC使えますか?」
uhzz
0
320
「インタフェースデザインの心理学」を読んで話したい3つのこと
uhzz
0
21k
Featured
See All Featured
KATA
mclloyd
PRO
35
15k
Agile that works and the tools we love
rasmusluckow
331
21k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4k
Paper Plane
katiecoart
PRO
0
47k
A better future with KSS
kneath
240
18k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
60
42k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.7k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
180
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
Code Review Best Practice
trishagee
74
20k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.2k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
470
Transcript
© Finatext Holdings Ltd. Goで実現する Graceful Shutdown ~実運用での課題と解決策 ~ Reo
Uehara / 株式会社Finatext 2025/09/27(土) Go Conference 2025
© Finatext Holdings Ltd. • Graceful Shutdown の基本概念 • net/httpパッケージの
Graceful Shutdown • 実運用の課題 • 実運用の応用例 • まとめ 1 アジェンダ
© Finatext Holdings Ltd. 2 自己紹介 X:@_uhzz_ GitHub:uh-zz 好きなパッケージ: net/http
Reo Uehara / 株式会社Finatext
© Finatext Holdings Ltd. 3 Graceful Shutdown の基本概念 処理中タスクのリソースを適切に開放した後に、アプリケーション自身を終了すること Graceful
Shutdownなし 処理中 SIGTERM (終了要求) SIGKILL (強制終了) 処理中 処理中タスクを適切に開放 アプリケーションも安全に終了 SIGTERM (終了要求) SIGKILL (強制終了) Graceful Shutdownあり
© Finatext Holdings Ltd. signal.NotifyContext • OSから終了要求(SIGTERM)を受信 →ctx.Done() で検知 context.WithTimeout
• context にタイムアウト時間を設定 • タイムアウト付き context を Shutdownメソッドに渡す。 →時間内に、シャットダウン処理を 安全に終了させることが目的 4 Graceful Shutdown の基本概念 Graceful Shutdownの具体例
© Finatext Holdings Ltd. 5 net/httpパッケージの Graceful Shutdown HTTP サーバ内部の流れ
Shutdown メソッドをおさらい • 全37行のコード • やっていること ◦ 全リスナーの受付停止 ◦ コールバック処理 ◦ アイドル接続をクローズ 順を追ってコードを見ていきます https://cs.opensource.google/go/go/+/refs/tags/go1.25.1:src/net/http/server.go;l=3179
© Finatext Holdings Ltd. 6 net/httpパッケージの Graceful Shutdown HTTP サーバ内部の流れ
https://cs.opensource.google/go/go/+/refs/tags/go1.25.1:src/net/http/server.go;l=3179 Shutdown メソッドをおさらい • 全37行のコード • やっていること ◦ 全リスナーの受付停止 ◦ コールバック処理 ◦ アイドル接続をクローズ
© Finatext Holdings Ltd. 7 net/httpパッケージの Graceful Shutdown HTTP サーバ内部の流れ
https://cs.opensource.google/go/go/+/refs/tags/go1.25.1:src/net/http/server.go;l=3179 Shutdown メソッドをおさらい • 全37行のコード • やっていること ◦ 全リスナーの受付停止 ◦ コールバック処理 ◦ アイドル接続をクローズ
© Finatext Holdings Ltd. 8 HTTP サーバ内部の流れ net/httpパッケージの Graceful Shutdown
https://cs.opensource.google/go/go/+/refs/tags/go1.25.1:src/net/http/server.go;l=3179 Shutdown メソッドをおさらい • 全37行のコード • やっていること ◦ 全リスナーの受付停止 ◦ コールバック処理 ◦ アイドル接続をクローズ アイドル接続のクローズが完了 (またはタイムアウト)した時点で シャットダウン処理は終了
© Finatext Holdings Ltd. 9 実運用の課題 課題: メール一括送信リクエスト後に開始した非同期の送信処理が、デプロイに巻き込まれて終了してしまう 原因: 非同期タスクの
Graceful Shutdown ができていなかった 同じサーバー上で処理 1. デプロイによる アプリケーションの終了 2. 送信中に強制終了
© Finatext Holdings Ltd. GracefulWorker • 非同期タスクは、GracefulWorker経由で実行 • 登録した非同期タスクが完了するまでシャットダウンを待機する アプローチ:
非同期タスクマネージャーを実装 10 実運用の応用例
© Finatext Holdings Ltd. 11 実運用の応用例 1. メール送信専用ワーカーを別で起動する 2. GracefulWorker
で非同期にリクエスト&安全にリクエスト処理を完了できる仕組みにした 別々のサーバー上で処理 1.SIGTERM 2.Graceful Shutdown 3. 送信処理完了
© Finatext Holdings Ltd. • HTTPサーバのシグナルハンドリングはすぐに始められるので導入しておこう • デプロイ時の強制終了で非同期タスクが巻き込まれないように Graceful Shutdownの仕組みを導入しよう
12 まとめ Happy smart shutdown together!
None
© Finatext Holdings Ltd. graceful shutdown可能な非同期リトライするGoライブラリをOSSとして作った話 https://qiita.com/behiron/items/b224a68e8c3d8b9de89d Cleanup handling in
Go / Go Conference 2024 https://speakerdeck.com/k1low/go-conference-2024 Go MachineryでGraceful shutdownできてないバグを直した話 https://tech.layerx.co.jp/entry/2022/12/13/201832 14 Appendix