Strangler Applicationパターンを一言でいうと
Strangler Applicationパターンは、マイクロサービスアーキテクチャに至るためのリファクタリングに適用可能なパターンです。モノリスなシステムを一挙にマイクロサービスアーキテクチャに変えるのではなく、徐々に、戦略的にマイクロサービスアーキテクチャへ移行する、という考えに適用するのです。
Strangler Applicationパターンの何が凄いのか?
1. マイクロサービスアーキテクチャへの移行の現実解を提示してくれる
Strangler Applicationパターンは、マーチン・ファウラーがはじめて「ストラングラーアプリケーション | Martin Fowler\'s Bliki (ja)」で言及しました。 レガシーなシステムから徐々に新しいシステムへ移行することで、システムを丸ごと書換える際に発生するであろう問題、無駄を避けることができる、としています。また「ストラングラーを使えば着実に価値を提供することができ、 頻繁なリリースによって、進捗をより注意深く観測することができる」のです。
2. ネーミングが素晴らしい
マーチン・ファウラーの「ストラングラーアプリケーション | Martin Fowler\'s Bliki (ja)」では、熱帯雨林に生息する「Strangler Fig」(和訳では「絞め殺しの木」)をオーストラリアでみて、このパターンの着想を得ました。この「Strangler Fig」は、何年もかけて他の植物や岩などに巻きついて絞め殺すように成長するため、この俗称で呼ばれます。レガシーなシステムを何年もの歳月をかけて、徐々に「絞め殺す」というこのイメージは、マーチン・ファウラーのネーミングセンスの素晴らしさを表しています。
3. マイクロサービスに至らないことも許容される
モノリスなシステムからマイクロサービスアーキテクチャに移行しようとしたが断念し、中間状態にとどまることもあります。それでも良しとする、という考え方も、この「Strangler Application」では、暗に許容されていると思います。 中間状態に関しては、以下の記事が参考になります。
- モジュラモノリス
Shopifyはいかにしてモジュラモノリスへ移行したか - サービスベースアーキテクチャ
モノリシックからマイクロサービスへ。あるいは、サービスベースアーキテクチャを考える。 | アスクル株式会社
結局、Strangler Applicationパターンとは
モノリスなシステムをマイクロサービスアーキテクチャに丸ごと書換えたい、という陥りがちな誘惑から、我々を守ってくれる、救いの教えです。この教えに背いたとき、デスマーチによって、我々が絞め殺されてしまうかもしれません。
参考(書籍)
「マイクロサービスパータン」の「Chapter 13 マイクロサービスのリファクタリング」を参照。
参考(サイト)
- ストラングラーアプリケーション | Martin Fowler\'s Bliki (ja)
- マイクロサービス・アプリケーションにストラングラー・アプリケーション・パターンを適用する | IBM
- 『Microservice Patterns』 まとめ | Qiita
書籍「マイクロサービスパターン」のまとめ記事。多くのパターンが掲載されており有益。 - これなら分かる!マイクロサービス(活用編)~そのアーキテクチャを実現するデザインパターンを一気に学習
パターンがわかりやすく解説されている。 - モノリシックからマイクロサービスへ。あるいは、サービスベースアーキテクチャを考える。 | アスクル株式会社
モノリシックからいきなりマイクロサービスにいくのは検討事項がてんこ盛りでリスクがありすぎる。その中間の「サービスベースアーキテクチャ」という考え方が記載されいる。現実的な解として、一考の価値あり。 - マイクロサービス 4つの分割アプローチ
マイクロサービスの分割のアプローチに関して記載されている。
参考(動画)
-
Strangler Application Pattern | e-Commerce Application Case Study | Monolith to Microservices (英語)
モノリスからマイクロサービスアーキテクチャへの移行を図解でわかりやすく説明されている。移行の中間段階である「Modular Monoliths」に関しても言及されている。
-
Strangler (converting to microservices) (英語)