2023-08-11 ストラングラーフィグパターン
ストラングラーフィグパターン
機能の特定の部分を新しいアプリケーションやサービスに徐々に置き換えることで、レガシ システムを段階的に移行します。 レガシ システムからの機能が置き換えられていくと、新しいシステムは最終的に古いシステムの機能すべてを置き換え、古いシステムを抑圧して使用停止できるようにします。
ref. ストラングラー フィグ パターン - Azure Architecture Center | Microsoft Learn
システムが古くなるにつれ、このシステムが構築された開発ツール、ホスティング テクノロジ、システム アーキテクチャも徐々に使われなくなっていきます。 新機能が追加されると、これらのアプリケーションも大幅に複雑化し、メンテナンスや新機能の追加が難しくなっていきます。
複雑なシステムを完全に置き換えるには、膨大な作業が発生することがあります。 多くの場合、まだ移行されていない機能を古いシステムで処理し続けながら、新しいシステムに段階的に移行する必要があります。
何が嬉しいのか
- 段階的に新システムに移行できる
- インクリメンタルな開発が可能
- リリース時のリスクを最小化
- ビッグバンリリースはリスクを伴う
元ネタ: マーチン・ファウラー先生の記述
The most important reason to consider a strangler fig application over a cut-over rewrite is reduced risk. A strangler fig can give value steadily and the frequent releases allow you to monitor its progress more carefully.
事例
- AWSの場合:strangler fig パターン - AWS の規範的ガイダンス
- DeNAの場合: 100億レコード超のDBを“障害ゼロ”でマイグレーション 新卒1年目が考えた2つのアプローチと3つの工夫 - ログミーTech
丁寧なストラングラーフィグパターン例で良かった » 100億レコード超のDBを“障害ゼロ”でマイグレーション https://t.co/i4mAs7lLou
— toshimaru (@toshimaru_e) August 6, 2023