ストラングラーパターンとは

ストラングラーパターン(Strangler Pattern)とは、レガシーシステムを段階的に新しいシステムに置き換えるためのソフトウェア開発戦略のことです。古いシステムを「絞め殺す」かのように、徐々に新しいシステムに置き換えていくことからこの名前が付けられました。

ストラングラーパターンは、レガシーシステムを新しいシステムに置き換える際の有効な戦略です。段階的な置き換えにより、リスクを軽減し、ユーザーへの影響を最小限に抑えながら、システムのモダナイゼーションを実現できます。ただし、システム全体の複雑性が増加する点や、移行期間が長くなる点には注意が必要です。

ストラングラーパターンの基本的な概念

「ストラングラー(Strangler)」という名称は、植物の「絞め殺しイチジク(Strangler Fig)」に由来しています。このイチジクは、宿主となる木の幹に巻きつき、徐々に宿主を覆い尽くし、最終的には宿主を枯らして自分自身が独立した木として成長します。ストラングラーパターンも同様に、既存のレガシーシステムに新しい機能やサービスを巻きつけ、徐々にその機能を置き換えていくことで、最終的にレガシーシステムを不要にするという考え方に基づいています。

主な概念は以下の通りです。

  1. 段階的な移行: システム全体を一度に書き換える「ビッグバンリライト」とは異なり、機能単位やドメイン単位で少しずつ新しいシステムに移行していきます。これにより、大規模なプロジェクトに伴うリスク(予算超過、長期化、失敗のリスクなど)を低減します。
  2. プロキシの活用: 通常、ユーザーからのリクエストは、まず「ファサード(Facade)」または「プロキシ(Proxy)」と呼ばれるレイヤーを経由します。このプロキシが、リクエストの内容に応じて、新しいサービスで処理すべきか、まだレガシーシステムで処理すべきかを判断し、適切なシステムにルーティングします。
  3. レガシーシステムの「縮小」: 新しいサービスが徐々にレガシーシステムの機能を置き換えていくにつれて、レガシーシステムはその役割とコードベースが縮小していきます。最終的には、レガシーシステムが提供する機能が完全に新しいシステムに置き換わり、不要になった時点で廃止されます。
  4. 継続的なサービス提供: 移行期間中も、システムは稼働し続け、ユーザーへのサービス提供が中断されることはありません。これは、ビジネスへの影響を最小限に抑える上で非常に重要です。

ストラングラーパターンのメリット

  • リスクの最小化: 一度にシステム全体を刷新するビッグバンリライトに比べて、影響範囲を限定し、リスクを段階的に管理できます。小さな失敗から学び、迅速に修正できるため、プロジェクト全体の成功確率が高まります。
  • 継続的なサービス提供: 移行期間中もサービスを稼働させ続けることができるため、ビジネスへの中断や影響を最小限に抑えられます。
  • 漸進的な投資と価値提供: 機能ごとに新しいサービスをリリースできるため、開発の初期段階からビジネス価値を提供し始めることができます。投資対効果を早期に可視化しやすいです。
  • 技術的負債の段階的解消: 長年にわたって蓄積された技術的負債を、一度に解消するのではなく、機能単位で少しずつ解消していくことができます。
  • 新しい技術の導入とテスト: 新しいサービスを開発する際に、最新の技術スタックやアーキテクチャパターンを導入しやすくなります。これらを小規模な範囲で試行し、知見を蓄積できます。
  • チームのモチベーション維持: 長期にわたる大規模なリライトプロジェクトに比べて、成果が目に見えやすいため、開発チームのモチベーションを維持しやすいです。

ストラングラーパターンの仕組み

  1. 新しいシステムの構築: まず、既存のレガシーシステムを分析し、置き換えたい機能を特定します。そして、その機能を新しい技術やアーキテクチャで再構築します。
  2. プロキシ層の導入: 新しいシステムとレガシーシステムの間にプロキシ層を導入します。プロキシ層は、ユーザーからのリクエストを適切なシステムにルーティングする役割を担います。
  3. 段階的な置き換え: プロキシ層の設定を変更することで、特定の機能のリクエストを新しいシステムにルーティングするようにします。これにより、レガシーシステムの一部を新しいシステムに置き換えることができます。
  4. 置き換えの完了: 全ての機能が新しいシステムに置き換えられたら、レガシーシステムを停止し、プロキシ層も不要になります。

ストラングラーパターンの適用場面

ストラングラーパターンは、以下のような状況で特に有効です。

  • 大規模で複雑なレガシーシステム: モノリシックな巨大システムを刷新したいが、ビッグバンリライトのリスクを避けたい場合。
  • 24時間365日稼働が求められるシステム: ダウンタイムが許されない、ミッションクリティカルなシステムを移行する場合。
  • 継続的な機能改善が求められるビジネス: システム移行中も、ビジネス要件の変化に合わせて機能追加や改善を継続したい場合。
  • 段階的に技術的負債を解消したい場合: 一気に負債を解消するリソースや時間がなく、少しずつ改善を進めたい場合。
  • マイクロサービスアーキテクチャへの移行: モノリシックなシステムをマイクロサービスに分割していく際の具体的なアプローチとして非常に適しています。

ストラングラーパターン(Strangler Pattern)とは、大規模で複雑なレガシーシステムを、一度にすべて置き換えるのではなく、新しいシステムやマイクロサービスで機能ごとに徐々に置き換えていくことで、最終的にレガシーシステムを不要にする段階的なシステム刷新のアプローチです。

この手法は、宿主植物を覆い尽くして最終的に枯らす「絞め殺しイチジク」に例えられます。プロキシ層を介してトラフィックを新しいサービスに段階的にルーティングし、レガシー機能の役割を奪っていくことで、リスクを最小限に抑えつつ、継続的なサービス提供を維持しながらシステムを近代化できるという大きなメリットがあります。

初期の複雑性や二重管理期間などのデメリットも存在しますが、大規模なレガシーシステムの刷新やマイクロサービスへの移行において、非常に強力で実践的な選択肢として広く採用されています。

関連用語

Sagaパターン | 今更聞けないIT用語集
マイクロサービスアーキテクチャ | 今更聞けないIT用語集
リファクタリング

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。