こんにちは、クラウド基盤本部の向井です。 幸いにも cybozu.com を運用しているデータセンター内のネットワークは(担当チームの尽力により)安定していますが、ネットワークコネクションは常に切断されるリスクがあることを念頭においておく必要があります。その原因が一時的なネットワークの不調だったり、関係するコンポーネントのメンテナンスに伴う瞬断であったりした場合、アプリケーションは適切にリトライするなどして処理を継続したいところです。一方で、このような場合には OS によるプロトコルの実装やライブラリによって隠蔽された動作により、一見不思議に見える挙動に悩まされることも少なくありません。本記事では、一例として私が所属するチームで開発している Go を使って開発されたコンポーネントで経験したネットワークコネクションの切断に伴うトラブルと、その解決に利用した Go の HTTP/2 クライアン