ストラングラーフィグ すとらんぐらーふぃぐ
ストラングラーフィグレガシー移行段階的移行リファクタリングマイクロサービス
ストラングラーフィグについて教えて
簡単に言うとこんな感じ!
古いシステムを一気に作り直すんじゃなくて、少しずつ新しい機能で「包み込んで」置き換えていく移行パターンだよ。稼働中のシステムを止めずに刷新できるのがポイント!
ストラングラーフィグとは
ストラングラーフィグ(Strangler Fig Pattern)とは、既存のレガシーシステムを一度に全面刷新するのではなく、新しいシステムを少しずつ構築しながら徐々に古いシステムと置き換えていく移行パターンです。熱帯雨林に生育するイチジクの一種「ストラングラーフィグ」が、宿主の木を外から包み込みながら成長し、最終的に宿主なしで自立する様子に由来しています。マーティン・ファウラーが2004年に命名しました。
「全て作り直す(ビッグバン)」方式はリスクが非常に高く、歴史的に多くのプロジェクトが失敗してきました。ストラングラーフィグは「旧システムを稼働させたまま、新機能は新システムで受ける」というアプローチで、移行中もサービスを継続できる点が最大の利点です。
仕組みと手順
フェーズ1:ファサード(入口)を設ける
既存システムの前にプロキシ(ファサード)を配置します。最初はすべてのリクエストを旧システムへ転送します。
フェーズ2:機能を少しずつ新システムへ移行
機能単位(たとえば「商品検索」「注文処理」)ごとに新システムで実装し、ファサードの振り分けルールを更新します。
フェーズ3:旧システムを廃止
全機能が移行されたら旧システムを停止し、ファサードを透明化または削除します。
歴史と背景
マーティン・ファウラーが2004年のブログ記事でこのパターンを命名・体系化しました。「ビッグバン型リライト」の失敗例(NetscapeのNavigator 5.0再設計失敗など)への反省から、段階的移行の重要性が認識されていた時代です。2010年代以降はモノリスからマイクロサービスへの移行手法として特に広く参照されるようになりました。
移行判断のチェックリスト
| 確認事項 | ストラングラーフィグが向いている | ビッグバン方式が向いている |
|---|---|---|
| 稼働中のサービス | ✓ 停止できない | 停止可能 |
| チームサイズ | ✓ 段階的に取り組める | 大きなチームで一気に |
| 依存の複雑さ | ✓ 複雑で解析に時間がかかる | 単純で依存が少ない |
| 予算・期間 | ✓ 長期かつ継続的に確保可能 | 短期集中で予算あり |
関連用語
- マイクロサービス — 移行先として最も多い構成
- イベント駆動アーキテクチャ — 移行中に旧新システム間の連携に使う
- バルクヘッド — 移行中の障害を局所化するパターン