【ストラングラーフィグパターン】
ストラングラーフィグパターン とは?
最終更新:
💡 機能を少しずつ移し、既存システムの役割を減らす
既存システムの機能を少しずつ新しい仕組みへ置き換える移行方法。新旧の振り分け、共存中のデータや依存関係、廃止の条件を解説します。
全部作り直さずに、少しずつ移せるの?
例えば商品検索を新しい仕組みに移し、注文処理は既存の仕組みで続ける。移した機能を検証しながら、既存側の役割を少しずつ減らす考え方だよ。
利用者は、新旧を選び分けるの?
手前の振り分け層で機能ごとに処理先を選ぶ構成がある。図もその例だ。利用者の入口を保ちつつ移行できるが、分割する境界や振り分け方はシステムに合わせて設計する。
一括で置き換えるより、必ず安全?
小さな単位で検証でき、価値を早く届けやすいが、保証ではない。新旧を同時に運用する費用や複雑さもある。小さなシステムや短い廃止期限では、別の方法が合うこともある。
共存中のデータは、どうするの?
どちらが何を更新するか、変更をどう同期するか、矛盾をどう防ぐかを決める。接続先を戻すだけで切り戻せるとは限らない。既存側でも使えるデータが残るかなどを確認する。
いつ、既存システムを止められるの?
必要な機能が移り、新しい仕組みの動作やデータを確認し、既存側への依存が残っていないと判断してからだ。振り分け層は廃止することも、互換性のため残すこともある。
もっと詳しく知りたい人へ
マイクロサービスにすることが必須?
必須ではありません。段階的に既存の役割を置き換えることが中心です。新しい部分の構成や分割の粒度は、目的と変更しやすい境界に合わせて考えます。移行することと、サービスを細かく分割することは別の判断です。
腐敗防止層は、いつ役立つ?
新旧でデータの意味や呼び出し方が異なり、相互に連携する場合に、変換用の層を設ける方法です。新しい設計へ既存側の都合がそのまま入り込むのを抑えます。ただし、それだけでデータの同期や切り戻しの課題が解決するわけではありません。
まとめ:ざっくりこれだけ覚えればOK!
「ストラングラーフィグパターン」って出てきたら「既存システムの機能を段階的に新しい仕組みへ移す方法」と思えばだいたいOK!
📖 おまけ:英語の意味
「Strangler Fig Pattern」 = ストラングラーフィグをたとえにした移行パターン
💬 Martin Fowlerは、ほかの木を取り巻きながら育つストラングラーフィグを、既存のソフトウェアを段階的に置き換えるたとえとして紹介しました。名称は植物に由来し、移行の安全性を保証する意味ではありません。