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

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

最終更新:
💡 機能を少しずつ移し、既存システムの役割を減らす

既存システムの機能を少しずつ新しい仕組みへ置き換える移行方法。新旧の振り分け、共存中のデータや依存関係、廃止の条件を解説します。

📌 このページのポイント
段階的な移行:機能ごとに処理先を選ぶ利用者のリクエスト機能ごとの振り分け層移行済みかどうかで処理先を選ぶ既存システム未移行:注文処理新しい仕組み移行済み:商品検索検証しながら移し、既存側の役割を減らすデータ・依存関係・切り戻しも設計する
機能ごとに新旧を使い分ける構成例です。同じ要求を二重実行する意味ではなく、応答やデータ連携は省略しています。既存側への依存が残っていないかも確認して廃止します。
ひよこ ひよこ
全部作り直さずに、少しずつ移せるの?
ペンギン先生 ペンギン先生
例えば商品検索を新しい仕組みに移し、注文処理は既存の仕組みで続ける。移した機能を検証しながら、既存側の役割を少しずつ減らす考え方だよ。
ひよこ ひよこ
利用者は、新旧を選び分けるの?
ペンギン先生 ペンギン先生
手前の振り分け層で機能ごとに処理先を選ぶ構成がある。図もその例だ。利用者の入口を保ちつつ移行できるが、分割する境界や振り分け方はシステムに合わせて設計する。
ひよこ ひよこ
一括で置き換えるより、必ず安全?
ペンギン先生 ペンギン先生
小さな単位で検証でき、価値を早く届けやすいが、保証ではない。新旧を同時に運用する費用や複雑さもある。小さなシステムや短い廃止期限では、別の方法が合うこともある。
ひよこ ひよこ
共存中のデータは、どうするの?
ペンギン先生 ペンギン先生
どちらが何を更新するか、変更をどう同期するか、矛盾をどう防ぐかを決める。接続先を戻すだけで切り戻せるとは限らない。既存側でも使えるデータが残るかなどを確認する。
ひよこ ひよこ
いつ、既存システムを止められるの?
ペンギン先生 ペンギン先生
必要な機能が移り、新しい仕組みの動作やデータを確認し、既存側への依存が残っていないと判断してからだ。振り分け層は廃止することも、互換性のため残すこともある。
もっと詳しく知りたい人へ

マイクロサービスにすることが必須?

必須ではありません。段階的に既存の役割を置き換えることが中心です。新しい部分の構成や分割の粒度は、目的と変更しやすい境界に合わせて考えます。移行することと、サービスを細かく分割することは別の判断です。

腐敗防止層は、いつ役立つ?

新旧でデータの意味や呼び出し方が異なり、相互に連携する場合に、変換用の層を設ける方法です。新しい設計へ既存側の都合がそのまま入り込むのを抑えます。ただし、それだけでデータの同期や切り戻しの課題が解決するわけではありません。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ストラングラーフィグパターン」って出てきたら「既存システムの機能を段階的に新しい仕組みへ移す方法」と思えばだいたいOK!
📖 おまけ:英語の意味
「Strangler Fig Pattern」 = ストラングラーフィグをたとえにした移行パターン
💬 Martin Fowlerは、ほかの木を取り巻きながら育つストラングラーフィグを、既存のソフトウェアを段階的に置き換えるたとえとして紹介しました。名称は植物に由来し、移行の安全性を保証する意味ではありません。

参考資料

← 用語集にもどる