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
EOLを迎えたベースイメージで動く属人化したNginxプロキシを無停止移行した話
Search
すみや
August 07, 2025
1
250
EOLを迎えたベースイメージで動く属人化したNginxプロキシを無停止移行した話
2025/08/08(金)開催の
「ゆるSRE勉強会 #12 SRE乗り越え体験まつり 〜聞いてくれ俺の武勇伝〜」
にて15分枠で発表した内容になります。
すみや
August 07, 2025
Tweet
Share
More Decks by すみや
See All by すみや
Renovateを活用した手離れの良いCDKプロジェクトの作り方
sumiyae
2
140
VIM × AIエージェントで始める記録の好循環
sumiyae
3
1.2k
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
5
1.2k
遅延読み込みの歩みから理解するSeekable OCI
sumiyae
2
360
CDKとLambda Aliasで実現する、SQS+Lambdaの、安全なリリース手法
sumiyae
1
140
Featured
See All Featured
Adopting Sorbet at Scale
ufuk
77
9.5k
Typedesign – Prime Four
hannesfritz
42
2.7k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.4k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
The Cost Of JavaScript in 2023
addyosmani
51
8.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Transcript
EOLを迎え属人化したNginxプロキシを 無停止移行した話 2025年08月08日 江口 純矢 ゆるSRE勉強会 #12 SRE乗り越え体験まつり 〜聞いてくれ俺の武勇伝〜
2 経歴 2021年、コドモンにエンジニアとして新卒で入社 アプリケーションエンジニアを経て、現在はSREとして働いています 最近ハマっていること 豚バラブロックを塩漬け&乾燥して作る自家製パンチェッタ 自己紹介 江口 純矢 えぐち
すみや X:@egusumi1219
None
すべての先生に 子どもと向き合う 時間と心のゆとりを こんなプロダクトを開発しています メインプロダクトは、こども施設職員の業務を支援するWebアプリケーション。 保護者と施設のやり取りを支えるモバイルアプリケーションや、施設職員向けモバイル版 アプリケーション、外部サービスと連携するAPIなども開発しています。 4
5
6 3 今日話すこと EOLを迎えたOSで動くNginxプロキシ ブラックボックス化した構成の解明 前提を疑いシンプルな構成へ ALBの加重設定で安全に無停止移行を実現 1 2 4
7 3 2 4 EOLを迎えたOSで動くNginxプロキシ ブラックボックス化した構成の解明 前提を疑いシンプルな構成へ ALBの加重設定で安全に無停止移行を実現 1 今日話すこと
8 CONFIDENTIAL - © 2022 CoDMON Inc. 8 当時のプロキシサーバーの現状
EOLを迎えたOSで動くNginxプロキシ 閉域網経由の全リクエストを各サービスへプロキシする重要な役割 プロキシ Service1 Service2 Service3
9 CONFIDENTIAL - © 2022 CoDMON Inc. 9 当時のプロキシサーバーの現状
EOLを迎えたOSで動くNginxプロキシ 閉域網経由の全リクエストを各サービスへプロキシする重要な役割 プロキシ Service1 Service2 Service3 EOLを迎えた OSを使用
10 CONFIDENTIAL - © 2022 CoDMON Inc. 10 当時のプロキシサーバーの現状
EOLを迎えたOSで動くNginxプロキシ メンテナンス作業が 退職予定のエンジニア に属人化 プロキシ デプロイ方法 処理内容 関係者/連携先
11 CONFIDENTIAL - © 2022 CoDMON Inc. 11 不明確な構成 EOLを迎えたOSで動くNginxプロキシ
プロキシ 他のメンバーはほとんど何もわからない
12 CONFIDENTIAL - © 2022 CoDMON Inc. 12 不明確な構成 EOLを迎えたOSで動くNginxプロキシ
プロキシ Nginxで動いている らしい 他のメンバーはほとんど何もわからない
13 CONFIDENTIAL - © 2022 CoDMON Inc. 13 簡単に調査を進めると、、、 EOLを迎えたOSで動くNginxプロキシ
プロキシ プロキシのイメージ
14 CONFIDENTIAL - © 2022 CoDMON Inc. 14 簡単に調査を進めると、、、 EOLを迎えたOSで動くNginxプロキシ
FROM: EOLを迎えた OS
15 CONFIDENTIAL - © 2022 CoDMON Inc. 15 FROM: EOLを迎えた
OS 諸々の設定を適用 簡単に調査を進めると、、、 EOLを迎えたOSで動くNginxプロキシ
16 CONFIDENTIAL - © 2022 CoDMON Inc. 16 FROM: EOLを迎えた
OS 諸々の設定を適用 簡単に調査を進めると、、、 EOLを迎えたOSで動くNginxプロキシ コンテナ一つなのに なぜイメージが二つ?
17 CONFIDENTIAL - © 2022 CoDMON Inc. 17 FROM: EOLを迎えた
OS 諸々の設定を適用 簡単に調査を進めると、、、 EOLを迎えたOSで動くNginxプロキシ コンテナ一つなのに なぜイメージが二つ? てか Nginxのイメージないけど?
18 CONFIDENTIAL - © 2022 CoDMON Inc. 18 FROM: EOLを迎えた
OS 諸々の設定を適用 簡単に調査を進めると、、、 EOLを迎えたOSで動くNginxプロキシ コンテナ一つなのに なぜイメージが二つ? てか Nginxのイメージないけど? 小手先の調査では謎が深まるばかり ...
19 3 1 4 今日話すこと EOLを迎えたOSで動くNginxプロキシ ブラックボックス化した構成の解明 前提を疑いシンプルな構成へ ALBの加重設定で安全に無停止移行を実現 2
20 CONFIDENTIAL - © 2022 CoDMON Inc. 20 構成解明のためのSREチームの取り組み ブラックボックス化した構成の解明
21 CONFIDENTIAL - © 2022 CoDMON Inc. 21 構成解明のためのSREチームの取り組み ブラックボックス化した構成の解明
1.プロキシ周りを SREメンバー各々で調べ構成図としてアウトプット 2.メンバー内で理解を深めた後メンテナンス担当のエンジニアにヒアリング
22 CONFIDENTIAL - © 2022 CoDMON Inc. 22 構成解明のためのSREチームの取り組み ブラックボックス化した構成の解明
1.プロキシ周りを SREメンバー各々で調べ構成図としてアウトプット 2.メンバー内で理解を深めた後メンテナンス担当のエンジニアにヒアリング
23 CONFIDENTIAL - © 2022 CoDMON Inc. 23 構成図作成による理解の過程 ブラックボックス化した構成の解明
24 CONFIDENTIAL - © 2022 CoDMON Inc. 24 構成図作成による理解の過程 ブラックボックス化した構成の解明
各々で調べ 構成図としてアウトプット
25 CONFIDENTIAL - © 2022 CoDMON Inc. 25 構成図作成による理解の過程 ブラックボックス化した構成の解明
メンバーそれぞれで 理解した内容を構成図を元に説明 各々で調べ 構成図としてアウトプット
26 CONFIDENTIAL - © 2022 CoDMON Inc. 26 構成解明のためのSREチームの取り組み ブラックボックス化した構成の解明
1.プロキシ周りを SREメンバー各々で調べ構成図としてアウトプット 2.SRE内で理解を深めた後メンテナンスを担当してたエンジニアにヒアリング
27 CONFIDENTIAL - © 2022 CoDMON Inc. 27 メンテナンスを担当してたエンジニアにヒアリング ブラックボックス化した構成の解明
一連の過程で解消しなかった疑問を ドキュメントに集約 疑問を集約したドキュメントを元に 丸一日かけてヒアリング
28 CONFIDENTIAL - © 2022 CoDMON Inc. 28 判明した不可解な構成の正体 ブラックボックス化した構成の解明
コンテナ1つなのにイメージが2つ? Nginxのイメージないけど?
29 CONFIDENTIAL - © 2022 CoDMON Inc. 29 判明した不可解な構成の正体 ブラックボックス化した構成の解明
コンテナ1つなのにイメージが2つ? Nginxのイメージないけど? Nginxをソースコードからビルド ※ビルドツールの OSSもEOL ビルドされた Nginxに 諸々の設定を適用
30 CONFIDENTIAL - © 2022 CoDMON Inc. 30 コンテナ1つなのにイメージが2つ? Nginxのイメージないけど?
ビルドされた Nginxに 諸々の設定を適用 判明した不可解な構成の正体 ブラックボックス化した構成の解明 Nginxをソースコードからビルド ※ビルドツールの OSSもEOL
31 CONFIDENTIAL - © 2022 CoDMON Inc. 31 Nginxをなぜソースコードからビルドしている? ブラックボックス化した構成の解明
A.「ngx_http_sub_module」モジュールが必要だから
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
33 1 2 4 今日話すこと EOLを迎えたOSで動くNginxプロキシ ブラックボックス化した構成の解明 前提を疑いシンプルな構成へ ALBの加重設定で安全に無停止移行を実現 3
34 CONFIDENTIAL - © 2022 CoDMON Inc. 34 本当にソースコードからのビルドが必要なのか? 前提を疑いシンプルな構成へ
35 CONFIDENTIAL - © 2022 CoDMON Inc. 35 本当にソースコードからのビルドが必要なのか? 前提を疑いシンプルな構成へ
「デフォルトはビルドされない」 ≠「公式イメージに含まれない」では?
36 CONFIDENTIAL - © 2022 CoDMON Inc. 36 本当にソースコードからのビルドが必要なのか? 前提を疑いシンプルな構成へ
「デフォルトはビルドされない」 ≠「公式イメージに含まれない」では? Nginx公式イメージに含まれるているのでは?
37 CONFIDENTIAL - © 2022 CoDMON Inc. 37 本当にソースコードからのビルドが必要なのか? 前提を疑いシンプルな構成へ
Nginx公式イメージで使用される pkgを調査すると ...
38 CONFIDENTIAL - © 2022 CoDMON Inc. 38 本当にソースコードからのビルドが必要なのか? 前提を疑いシンプルな構成へ
Nginx公式イメージで使用される pkgを調査すると ... 該当のモジュールが 含まれていることが判明
39 CONFIDENTIAL - © 2022 CoDMON Inc. 39 詳細な比較検討 前提を疑いシンプルな構成へ
「ngx_http_sub_module」以外の差分比較 →Nginx公式イメージ と現行Nginx のモジュールを一つずつ比較 各モジュールや設定 差分は 赤塗り
40 CONFIDENTIAL - © 2022 CoDMON Inc. 40 詳細な比較検討 前提を疑いシンプルな構成へ
「ngx_http_sub_module」以外の差分比較 →Nginx公式イメージ と現行Nginx のモジュールを一つずつ比較 各モジュールや設定 差分は 赤塗り 差分はあれど動作確認を経て いずれも不要と判断
41 CONFIDENTIAL - © 2022 CoDMON Inc. 41 詳細な比較検討 前提を疑いシンプルな構成へ
「ngx_http_sub_module」以外の差分比較 →Nginx公式イメージ と現行Nginx のモジュールを一つずつ比較 各モジュールや設定 差分は 赤塗り 差分はあれど動作確認を経て いずれも不要と判断 Nginx公式イメージが使える!
42 CONFIDENTIAL - © 2022 CoDMON Inc. 42 シンプルな構成へ 前提を疑いシンプルな構成へ
FROM: EOLを迎えたOS Nginxをソースコードからビルド ※ビルドツールの OSSもEOL ビルドされたNginxに 諸々の設定を適用
43 CONFIDENTIAL - © 2022 CoDMON Inc. 43 シンプルな構成へ 前提を疑いシンプルな構成へ
FROM: EOLを迎えたOS Nginxをソースコードからビルド ※ビルドツールの OSSもEOL ビルドされたNginxに 諸々の設定を適用
44 CONFIDENTIAL - © 2022 CoDMON Inc. 44 シンプルな構成へ 前提を疑いシンプルな構成へ
FROM: EOLを迎えたOS Nginxをソースコードからビルド ※ビルドツールの OSSもEOL ビルドされたNginxに 諸々の設定を適用 DebianベースのNginx公式イメージに Nginxの設定を適用 ARM製に変更することで gravitonを使用しコストを削減 イメージサイズが 175MB→61MBにまで縮小 ecspressoによるデプロイに変更
45 CONFIDENTIAL - © 2022 CoDMON Inc. 45 シンプルな構成へ 前提を疑いシンプルな構成へ
FROM: EOLを迎えたOS Nginxをソースコードからビルド ※ビルドツールの OSSもEOL ビルドされたNginxに 諸々の設定を適用 DebianベースのNginx公式イメージに Nginxの設定を適用 ARM製に変更することで gravitonを使用しコストを削減 イメージサイズが 175MB→61MBにまで縮小 ecspressoによるデプロイに変更
46 3 1 2 今日話すこと EOLを迎えたOSで動くNginxプロキシ ブラックボックス化した構成の解明 前提を疑いシンプルな構成へ ALBの加重設定で安全に無停止移行を実現 4
47 CONFIDENTIAL - © 2022 CoDMON Inc. 47 移行戦略 ALBの加重設定で安全に無停止移行を実現
1. Datadogで新旧比較ダッシュボードを作成 2. ALB Target Groupの加重設定を活用し段階的に切り替え
48 CONFIDENTIAL - © 2022 CoDMON Inc. 48 移行戦略 ALBの加重設定で安全に無停止移行を実現
1. Datadogで新旧比較ダッシュボードを作成 2. ALB Target Groupの加重設定を活用し段階的に切り替え 移行前と移行後を色分け
49 CONFIDENTIAL - © 2022 CoDMON Inc. 49 移行戦略 ALBの加重設定で安全に無停止移行を実現
1. Datadogで新旧比較ダッシュボードを作成 2. ALB Target Groupの加重設定を活用し段階的に切り替え 旧プロキシ 新プロキシ トラフィックを徐々に新しい方へ
50 CONFIDENTIAL - © 2022 CoDMON Inc. 50 移行戦略 ALBの加重設定で安全に無停止移行を実現
1. Datadogで新旧比較ダッシュボードを作成 2. ALB Target Groupの加重設定を活用し段階的に切り替え 旧プロキシ 新プロキシ トラフィックを徐々に新しい方へ
51 CONFIDENTIAL - © 2022 CoDMON Inc. 51 移行戦略 ALBの加重設定で安全に無停止移行を実現
1. Datadogで新旧比較ダッシュボードを作成 2. ALB Target Groupの加重設定を活用し段階的に切り替え 旧プロキシ 新プロキシ トラフィックを徐々に新しい方へ
52 CONFIDENTIAL - © 2022 CoDMON Inc. 52 移行戦略 ALBの加重設定で安全に無停止移行を実現
1. Datadogで新旧比較ダッシュボードを作成 2. ALB Target Groupの加重設定を活用し段階的に切り替え 旧プロキシ 新プロキシ トラフィックを徐々に新しい方へ
53 CONFIDENTIAL - © 2022 CoDMON Inc. 53 移行戦略 ALBの加重設定で安全に無停止移行を実現
1. Datadogで新旧比較ダッシュボードを作成 2. ALB Target Groupの加重設定を活用し段階的に切り替え 旧プロキシ 新プロキシ トラフィックを徐々に新しい方へ
54 実際の移行作業
55 と行きたいところですが
56 時間がないので割愛
57 移行作業は特に問題なく無事完了
58 まとめ
59 CONFIDENTIAL - © 2022 CoDMON Inc. 59 武勇伝のポイントまとめ •
属人化した複雑な構成を解明 ◦ • 「本当に必要か?」を疑い続ける ◦ • 安全な移行 ◦
60 CONFIDENTIAL - © 2022 CoDMON Inc. 60 武勇伝のポイントまとめ •
属人化した複雑な構成を解明 ◦ チーム一丸となって不明確な構成を明確化したぜ!! • 「本当に必要か?」を疑い続ける ◦ 前提を疑い、精緻な検証でシンプルな構成を実現したぜ!! • 安全な移行 ◦ 十分な監視と段階的移行で無停止移行を達成したぜ!!
61 CONFIDENTIAL - © 2022 CoDMON Inc. 61 武勇伝のポイントまとめ •
属人化した複雑な構成を解明 ◦ チーム一丸となって不明確な構成を明確化したぜ!! • 「本当に必要か?」を疑い続ける ◦ 前提を疑い、精緻な検証でシンプルな構成を実現したぜ!! • 安全な移行 ◦ 十分な監視と段階的移行で無停止移行を達成したぜ!!
62 最後に
63 開発ブログ コドモンでは一緒に働きたい仲間を募集しています! お寿司パーティ
64 ご清聴ありがとうございました!
None