【ストラングラーフィグパターン】

ストラングラーフィグパターン とは?

💡 古い木に巻きつきながら育つ新しい木。気づいたら主役交代の移行術
📌 このページのポイント
ストラングラーフィグパターン(段階的移行) Phase 1: 開始 ルーター レガシー 100% Phase 2: 移行中 ルーター レガシー 新システム Phase 3: 完了 ルーター 新システム 100% Phase 2 の詳細 リクエスト ルーティング層 振り分け判定 レガシー 新システム 腐敗防止層
ストラングラーフィグパターンのイメージ
ひよこ ひよこ

ストラングラーフィグって植物の名前?なんでそんな名前のパターンがあるの?

ペンギン先生 ペンギン先生

熱帯にある「絞め殺しの木」っていう植物に由来しているんだ。この木は別の木に巻きついて育ち、最終的に宿主を覆い尽くして自分が主体になる。レガシーシステムを少しずつ新システムで覆っていくイメージにぴったりだよね

ひよこ ひよこ

具体的にはどうやってやるの?

ペンギン先生 ペンギン先生

まずルーティング層(プロキシ)を手前に置いて、最初は全リクエストをレガシーに流す。次に、新システムで1つの機能を作ったらその部分だけルーティングを切り替える。これを繰り返して最終的に全部新システムに移行するんだよ

ひよこ ひよこ

一気に作り替えるのとどっちがいいの?

ペンギン先生 ペンギン先生

ビッグバンリプレース(一気に全部置き換え)は失敗したときのダメージが大きすぎるんだ。ストラングラーフィグなら1機能ずつ移行するから、問題が起きても影響範囲が小さいし、途中でやめることもできる。大規模システムほどこのパターンが有効だよ

ひよこ ひよこ

移行中に新旧のシステムが混在するのって大変じゃない?

ペンギン先生 ペンギン先生

そこで腐敗防止層の出番だよ。新旧システムの間に変換層を置いて、レガシーの設計が新システムに漏れないようにする。フィーチャーフラグを使って移行先を制御したり、カナリアリリースで少しずつトラフィックを流したりするのも実務では定番のテクニックだね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ストラングラーフィグ」って出てきたら「レガシーを少しずつ新システムに置き換える段階的移行パターン」と思えればだいたいOK!
📖 おまけ:英語の意味
「Strangler Fig Pattern」 = 絞め殺しの木パターン
💬 Martin Fowlerが提唱したパターンで、熱帯の絞め殺しの木(宿主の木に巻きついて最終的に取って代わる植物)に由来するよ。名前はちょっと怖いけど、実際はとても安全な移行手法なんだよ
← 用語集にもどる