Upgrade to Pro — share decks privately, control downloads, hide ads and more …

EOLを迎えたベースイメージで動く属人化したNginxプロキシを無停止移行した話

Avatar for すみや すみや
August 07, 2025
250

 EOLを迎えたベースイメージで動く属人化したNginxプロキシを無停止移行した話

2025/08/08(金)開催の
「ゆるSRE勉強会 #12 SRE乗り越え体験まつり 〜聞いてくれ俺の武勇伝〜」
にて15分枠で発表した内容になります。

Avatar for すみや

すみや

August 07, 2025
Tweet

Transcript

  1. 5

  2. 8 CONFIDENTIAL - © 2022 CoDMON Inc. 8 当時のプロキシサーバーの現状  

    EOLを迎えたOSで動くNginxプロキシ 閉域網経由の全リクエストを各サービスへプロキシする重要な役割 プロキシ Service1 Service2 Service3
  3. 9 CONFIDENTIAL - © 2022 CoDMON Inc. 9 当時のプロキシサーバーの現状  

    EOLを迎えたOSで動くNginxプロキシ 閉域網経由の全リクエストを各サービスへプロキシする重要な役割 プロキシ Service1 Service2 Service3 EOLを迎えた OSを使用
  4. 10 CONFIDENTIAL - © 2022 CoDMON Inc. 10 当時のプロキシサーバーの現状  

    EOLを迎えたOSで動くNginxプロキシ メンテナンス作業が 退職予定のエンジニア に属人化 プロキシ デプロイ方法 処理内容 関係者/連携先
  5. 11 CONFIDENTIAL - © 2022 CoDMON Inc. 11 不明確な構成 EOLを迎えたOSで動くNginxプロキシ

    プロキシ 他のメンバーはほとんど何もわからない
  6. 12 CONFIDENTIAL - © 2022 CoDMON Inc. 12 不明確な構成 EOLを迎えたOSで動くNginxプロキシ

    プロキシ Nginxで動いている らしい 他のメンバーはほとんど何もわからない
  7. 15 CONFIDENTIAL - © 2022 CoDMON Inc. 15 FROM: EOLを迎えた

    OS 諸々の設定を適用 簡単に調査を進めると、、、 EOLを迎えたOSで動くNginxプロキシ
  8. 16 CONFIDENTIAL - © 2022 CoDMON Inc. 16 FROM: EOLを迎えた

    OS 諸々の設定を適用 簡単に調査を進めると、、、 EOLを迎えたOSで動くNginxプロキシ コンテナ一つなのに なぜイメージが二つ?
  9. 17 CONFIDENTIAL - © 2022 CoDMON Inc. 17 FROM: EOLを迎えた

    OS 諸々の設定を適用 簡単に調査を進めると、、、 EOLを迎えたOSで動くNginxプロキシ コンテナ一つなのに なぜイメージが二つ? てか Nginxのイメージないけど?
  10. 18 CONFIDENTIAL - © 2022 CoDMON Inc. 18 FROM: EOLを迎えた

    OS 諸々の設定を適用 簡単に調査を進めると、、、 EOLを迎えたOSで動くNginxプロキシ コンテナ一つなのに なぜイメージが二つ? てか Nginxのイメージないけど? 小手先の調査では謎が深まるばかり ...
  11. 21 CONFIDENTIAL - © 2022 CoDMON Inc. 21 構成解明のためのSREチームの取り組み ブラックボックス化した構成の解明

    1.プロキシ周りを SREメンバー各々で調べ構成図としてアウトプット 2.メンバー内で理解を深めた後メンテナンス担当のエンジニアにヒアリング
  12. 22 CONFIDENTIAL - © 2022 CoDMON Inc. 22 構成解明のためのSREチームの取り組み ブラックボックス化した構成の解明

    1.プロキシ周りを SREメンバー各々で調べ構成図としてアウトプット 2.メンバー内で理解を深めた後メンテナンス担当のエンジニアにヒアリング
  13. 25 CONFIDENTIAL - © 2022 CoDMON Inc. 25 構成図作成による理解の過程 ブラックボックス化した構成の解明

    メンバーそれぞれで 理解した内容を構成図を元に説明 各々で調べ 構成図としてアウトプット
  14. 26 CONFIDENTIAL - © 2022 CoDMON Inc. 26 構成解明のためのSREチームの取り組み ブラックボックス化した構成の解明

    1.プロキシ周りを SREメンバー各々で調べ構成図としてアウトプット 2.SRE内で理解を深めた後メンテナンスを担当してたエンジニアにヒアリング
  15. 27 CONFIDENTIAL - © 2022 CoDMON Inc. 27 メンテナンスを担当してたエンジニアにヒアリング ブラックボックス化した構成の解明

    一連の過程で解消しなかった疑問を ドキュメントに集約 疑問を集約したドキュメントを元に 丸一日かけてヒアリング
  16. 28 CONFIDENTIAL - © 2022 CoDMON Inc. 28 判明した不可解な構成の正体 ブラックボックス化した構成の解明

    コンテナ1つなのにイメージが2つ? Nginxのイメージないけど?
  17. 29 CONFIDENTIAL - © 2022 CoDMON Inc. 29 判明した不可解な構成の正体 ブラックボックス化した構成の解明

    コンテナ1つなのにイメージが2つ? Nginxのイメージないけど? Nginxをソースコードからビルド ※ビルドツールの OSSもEOL ビルドされた Nginxに 諸々の設定を適用
  18. 30 CONFIDENTIAL - © 2022 CoDMON Inc. 30 コンテナ1つなのにイメージが2つ? Nginxのイメージないけど?

    ビルドされた Nginxに 諸々の設定を適用 判明した不可解な構成の正体 ブラックボックス化した構成の解明 Nginxをソースコードからビルド ※ビルドツールの OSSもEOL
  19. 32 CONFIDENTIAL - © 2022 CoDMON Inc. 32 Nginxをなぜソースコードからビルドしている? ブラックボックス化した構成の解明

    A.「ngx_http_sub_module」モジュールが必要だから 公式ドキュメントの記述より、ソースコードからビルド 引用:「 Nginx公式ドキュメント > Module ngx_http_sub_module」 https://Nginx.org/en/docs/http/ngx_http_sub_module.html
  20. 35 CONFIDENTIAL - © 2022 CoDMON Inc. 35 本当にソースコードからのビルドが必要なのか? 前提を疑いシンプルな構成へ

    「デフォルトはビルドされない」 ≠「公式イメージに含まれない」では?
  21. 36 CONFIDENTIAL - © 2022 CoDMON Inc. 36 本当にソースコードからのビルドが必要なのか? 前提を疑いシンプルな構成へ

    「デフォルトはビルドされない」 ≠「公式イメージに含まれない」では? Nginx公式イメージに含まれるているのでは?
  22. 38 CONFIDENTIAL - © 2022 CoDMON Inc. 38 本当にソースコードからのビルドが必要なのか? 前提を疑いシンプルな構成へ

    Nginx公式イメージで使用される pkgを調査すると ... 該当のモジュールが 含まれていることが判明
  23. 39 CONFIDENTIAL - © 2022 CoDMON Inc. 39 詳細な比較検討 前提を疑いシンプルな構成へ

    「ngx_http_sub_module」以外の差分比較 →Nginx公式イメージ と現行Nginx のモジュールを一つずつ比較 各モジュールや設定 差分は 赤塗り
  24. 40 CONFIDENTIAL - © 2022 CoDMON Inc. 40 詳細な比較検討 前提を疑いシンプルな構成へ

    「ngx_http_sub_module」以外の差分比較 →Nginx公式イメージ と現行Nginx のモジュールを一つずつ比較 各モジュールや設定 差分は 赤塗り 差分はあれど動作確認を経て いずれも不要と判断
  25. 41 CONFIDENTIAL - © 2022 CoDMON Inc. 41 詳細な比較検討 前提を疑いシンプルな構成へ

    「ngx_http_sub_module」以外の差分比較 →Nginx公式イメージ と現行Nginx のモジュールを一つずつ比較 各モジュールや設定 差分は 赤塗り 差分はあれど動作確認を経て いずれも不要と判断 Nginx公式イメージが使える!
  26. 42 CONFIDENTIAL - © 2022 CoDMON Inc. 42 シンプルな構成へ 前提を疑いシンプルな構成へ

    FROM: EOLを迎えたOS Nginxをソースコードからビルド ※ビルドツールの OSSもEOL ビルドされたNginxに 諸々の設定を適用
  27. 43 CONFIDENTIAL - © 2022 CoDMON Inc. 43 シンプルな構成へ 前提を疑いシンプルな構成へ

    FROM: EOLを迎えたOS Nginxをソースコードからビルド ※ビルドツールの OSSもEOL ビルドされたNginxに 諸々の設定を適用
  28. 44 CONFIDENTIAL - © 2022 CoDMON Inc. 44 シンプルな構成へ 前提を疑いシンプルな構成へ

    FROM: EOLを迎えたOS Nginxをソースコードからビルド ※ビルドツールの OSSもEOL ビルドされたNginxに 諸々の設定を適用 DebianベースのNginx公式イメージに Nginxの設定を適用 ARM製に変更することで gravitonを使用しコストを削減 イメージサイズが 175MB→61MBにまで縮小 ecspressoによるデプロイに変更
  29. 45 CONFIDENTIAL - © 2022 CoDMON Inc. 45 シンプルな構成へ 前提を疑いシンプルな構成へ

    FROM: EOLを迎えたOS Nginxをソースコードからビルド ※ビルドツールの OSSもEOL ビルドされたNginxに 諸々の設定を適用 DebianベースのNginx公式イメージに Nginxの設定を適用 ARM製に変更することで gravitonを使用しコストを削減 イメージサイズが 175MB→61MBにまで縮小 ecspressoによるデプロイに変更
  30. 47 CONFIDENTIAL - © 2022 CoDMON Inc. 47 移行戦略 ALBの加重設定で安全に無停止移行を実現

    1. Datadogで新旧比較ダッシュボードを作成 2. ALB Target Groupの加重設定を活用し段階的に切り替え
  31. 48 CONFIDENTIAL - © 2022 CoDMON Inc. 48 移行戦略 ALBの加重設定で安全に無停止移行を実現

    1. Datadogで新旧比較ダッシュボードを作成 2. ALB Target Groupの加重設定を活用し段階的に切り替え 移行前と移行後を色分け
  32. 49 CONFIDENTIAL - © 2022 CoDMON Inc. 49 移行戦略 ALBの加重設定で安全に無停止移行を実現

    1. Datadogで新旧比較ダッシュボードを作成 2. ALB Target Groupの加重設定を活用し段階的に切り替え 旧プロキシ 新プロキシ トラフィックを徐々に新しい方へ
  33. 50 CONFIDENTIAL - © 2022 CoDMON Inc. 50 移行戦略 ALBの加重設定で安全に無停止移行を実現

    1. Datadogで新旧比較ダッシュボードを作成 2. ALB Target Groupの加重設定を活用し段階的に切り替え 旧プロキシ 新プロキシ トラフィックを徐々に新しい方へ
  34. 51 CONFIDENTIAL - © 2022 CoDMON Inc. 51 移行戦略 ALBの加重設定で安全に無停止移行を実現

    1. Datadogで新旧比較ダッシュボードを作成 2. ALB Target Groupの加重設定を活用し段階的に切り替え 旧プロキシ 新プロキシ トラフィックを徐々に新しい方へ
  35. 52 CONFIDENTIAL - © 2022 CoDMON Inc. 52 移行戦略 ALBの加重設定で安全に無停止移行を実現

    1. Datadogで新旧比較ダッシュボードを作成 2. ALB Target Groupの加重設定を活用し段階的に切り替え 旧プロキシ 新プロキシ トラフィックを徐々に新しい方へ
  36. 53 CONFIDENTIAL - © 2022 CoDMON Inc. 53 移行戦略 ALBの加重設定で安全に無停止移行を実現

    1. Datadogで新旧比較ダッシュボードを作成 2. ALB Target Groupの加重設定を活用し段階的に切り替え 旧プロキシ 新プロキシ トラフィックを徐々に新しい方へ
  37. 59 CONFIDENTIAL - © 2022 CoDMON Inc. 59 武勇伝のポイントまとめ •

    属人化した複雑な構成を解明 ◦ • 「本当に必要か?」を疑い続ける ◦ • 安全な移行 ◦
  38. 60 CONFIDENTIAL - © 2022 CoDMON Inc. 60 武勇伝のポイントまとめ •

    属人化した複雑な構成を解明 ◦ チーム一丸となって不明確な構成を明確化したぜ!! • 「本当に必要か?」を疑い続ける ◦ 前提を疑い、精緻な検証でシンプルな構成を実現したぜ!! • 安全な移行 ◦ 十分な監視と段階的移行で無停止移行を達成したぜ!!
  39. 61 CONFIDENTIAL - © 2022 CoDMON Inc. 61 武勇伝のポイントまとめ •

    属人化した複雑な構成を解明 ◦ チーム一丸となって不明確な構成を明確化したぜ!! • 「本当に必要か?」を疑い続ける ◦ 前提を疑い、精緻な検証でシンプルな構成を実現したぜ!! • 安全な移行 ◦ 十分な監視と段階的移行で無停止移行を達成したぜ!!