Slide 1

Slide 1 text

EOLを迎え属人化したNginxプロキシを 無停止移行した話 2025年08月08日 江口 純矢 ゆるSRE勉強会 #12 SRE乗り越え体験まつり 〜聞いてくれ俺の武勇伝〜

Slide 2

Slide 2 text

2 経歴 2021年、コドモンにエンジニアとして新卒で入社 アプリケーションエンジニアを経て、現在はSREとして働いています 最近ハマっていること 豚バラブロックを塩漬け&乾燥して作る自家製パンチェッタ 自己紹介 江口 純矢 えぐち すみや X:@egusumi1219

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

すべての先生に 子どもと向き合う 時間と心のゆとりを こんなプロダクトを開発しています メインプロダクトは、こども施設職員の業務を支援するWebアプリケーション。 保護者と施設のやり取りを支えるモバイルアプリケーションや、施設職員向けモバイル版 アプリケーション、外部サービスと連携するAPIなども開発しています。 4

Slide 5

Slide 5 text

5

Slide 6

Slide 6 text

6 3 今日話すこと EOLを迎えたOSで動くNginxプロキシ ブラックボックス化した構成の解明 前提を疑いシンプルな構成へ ALBの加重設定で安全に無停止移行を実現 1 2 4

Slide 7

Slide 7 text

7 3 2 4 EOLを迎えたOSで動くNginxプロキシ ブラックボックス化した構成の解明 前提を疑いシンプルな構成へ ALBの加重設定で安全に無停止移行を実現 1 今日話すこと

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

10 CONFIDENTIAL - © 2022 CoDMON Inc. 10 当時のプロキシサーバーの現状   EOLを迎えたOSで動くNginxプロキシ メンテナンス作業が 退職予定のエンジニア に属人化 プロキシ デプロイ方法 処理内容 関係者/連携先

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

13 CONFIDENTIAL - © 2022 CoDMON Inc. 13 簡単に調査を進めると、、、 EOLを迎えたOSで動くNginxプロキシ プロキシ プロキシのイメージ

Slide 14

Slide 14 text

14 CONFIDENTIAL - © 2022 CoDMON Inc. 14 簡単に調査を進めると、、、 EOLを迎えたOSで動くNginxプロキシ FROM: EOLを迎えた OS

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

19 3 1 4 今日話すこと EOLを迎えたOSで動くNginxプロキシ ブラックボックス化した構成の解明 前提を疑いシンプルな構成へ ALBの加重設定で安全に無停止移行を実現 2

Slide 20

Slide 20 text

20 CONFIDENTIAL - © 2022 CoDMON Inc. 20 構成解明のためのSREチームの取り組み ブラックボックス化した構成の解明

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

23 CONFIDENTIAL - © 2022 CoDMON Inc. 23 構成図作成による理解の過程 ブラックボックス化した構成の解明

Slide 24

Slide 24 text

24 CONFIDENTIAL - © 2022 CoDMON Inc. 24 構成図作成による理解の過程 ブラックボックス化した構成の解明 各々で調べ 構成図としてアウトプット

Slide 25

Slide 25 text

25 CONFIDENTIAL - © 2022 CoDMON Inc. 25 構成図作成による理解の過程 ブラックボックス化した構成の解明 メンバーそれぞれで 理解した内容を構成図を元に説明 各々で調べ 構成図としてアウトプット

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

27 CONFIDENTIAL - © 2022 CoDMON Inc. 27 メンテナンスを担当してたエンジニアにヒアリング ブラックボックス化した構成の解明 一連の過程で解消しなかった疑問を ドキュメントに集約 疑問を集約したドキュメントを元に 丸一日かけてヒアリング

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

29 CONFIDENTIAL - © 2022 CoDMON Inc. 29 判明した不可解な構成の正体 ブラックボックス化した構成の解明 コンテナ1つなのにイメージが2つ? Nginxのイメージないけど? Nginxをソースコードからビルド ※ビルドツールの OSSもEOL ビルドされた Nginxに 諸々の設定を適用

Slide 30

Slide 30 text

30 CONFIDENTIAL - © 2022 CoDMON Inc. 30 コンテナ1つなのにイメージが2つ? Nginxのイメージないけど? ビルドされた Nginxに 諸々の設定を適用 判明した不可解な構成の正体 ブラックボックス化した構成の解明 Nginxをソースコードからビルド ※ビルドツールの OSSもEOL

Slide 31

Slide 31 text

31 CONFIDENTIAL - © 2022 CoDMON Inc. 31 Nginxをなぜソースコードからビルドしている? ブラックボックス化した構成の解明 A.「ngx_http_sub_module」モジュールが必要だから

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

33 1 2 4 今日話すこと EOLを迎えたOSで動くNginxプロキシ ブラックボックス化した構成の解明 前提を疑いシンプルな構成へ ALBの加重設定で安全に無停止移行を実現 3

Slide 34

Slide 34 text

34 CONFIDENTIAL - © 2022 CoDMON Inc. 34 本当にソースコードからのビルドが必要なのか? 前提を疑いシンプルな構成へ

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

37 CONFIDENTIAL - © 2022 CoDMON Inc. 37 本当にソースコードからのビルドが必要なのか? 前提を疑いシンプルな構成へ Nginx公式イメージで使用される pkgを調査すると ...

Slide 38

Slide 38 text

38 CONFIDENTIAL - © 2022 CoDMON Inc. 38 本当にソースコードからのビルドが必要なのか? 前提を疑いシンプルな構成へ Nginx公式イメージで使用される pkgを調査すると ... 該当のモジュールが 含まれていることが判明

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

46 3 1 2 今日話すこと EOLを迎えたOSで動くNginxプロキシ ブラックボックス化した構成の解明 前提を疑いシンプルな構成へ ALBの加重設定で安全に無停止移行を実現 4

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

54 実際の移行作業

Slide 55

Slide 55 text

55 と行きたいところですが

Slide 56

Slide 56 text

56 時間がないので割愛

Slide 57

Slide 57 text

57 移行作業は特に問題なく無事完了

Slide 58

Slide 58 text

58 まとめ

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

62 最後に

Slide 63

Slide 63 text

63 開発ブログ コドモンでは一緒に働きたい仲間を募集しています! お寿司パーティ

Slide 64

Slide 64 text

64 ご清聴ありがとうございました!

Slide 65

Slide 65 text

No content