Room A
Intermediate
20 mins.
Goはgoroutineによる並行処理を容易に実現できます。しかし、その並行処理の終了処理は開発者に委ねられています。 処理をただ停止するだけでは済まない場合も多く、適切な終了処理、つまり「クリーンアップ」が必要です。
クリーンアップには、例えば次のようなものがあります。
いわゆる「グレースフルシャットダウン」と「通常のシャットダウン」の違いは、クリーンアップ処理の有無にあると考えています。
本発表では、まず「クリーンアップ」をユースケースの1つに持つ標準パッケージの機能の testing.T.Cleanup
、 context.AfterFunc
、 http.Server.RegisterOnShutdown
などを改めてみていきます。
さらに、より複雑なコードベースを持つアプリケーションにおけるクリーンアップ処理について考察します。 必要な要件をあげ、そしてその要件を満たす具体的な実装を提案します。
本発表を通じて、開発者の方々にクリーンアップ処理について改めて考えてもらい、各開発現場にあるであろうクリーンアップ処理についてGoコミュニティで会話がされることを期待しています。