モノリスからマイクロサービスへ ―モノリスを進化させる実践移行ガイド

長らく電子積読になっていたのですがようやく消化しました。

モノリスからマイクロサービスへの移行パターンのカタログ集といった感じです。マイクロサービスへの分割でなくてもモノリスのモジュール化や既存のシステム分割、移行、拡張などの際などに役に立つ内容だと思います。書籍の中で紹介されていたGitHubのScientistというライブラリは知らなかったので参考になりました。

github.com

序盤は組織としてのマイクロサービスへの移行戦略、中盤からはサービスの分割、データベースの分割に使えるパターンのが紹介されています。とりわけデータベース部分はかなり歯切れが悪く、ここに書いてあるパターンは参考程度に各自の状況に応じて頑張れという感じです。まあトランザクションが絡む部分以外はマイクロサービスに関わらず一般的なデータ移行の難しさそのものなのでそれはそうかなという感じですが…。

マイクロサービスへの移行とはちょっと違いますが、以前GitHubのブログに書かれていた以下の記事はアプリケーション側のDBアクセスライブラリにLinterを入れることで論理的に分割されたテーブルへのアクセスが残っていないことを確認するという手法が紹介されていて、アプリケーションがきちんと決められたお作法にのっとって実装されている必要はありますが、データベースの分割時はこのような方法も有効そうだなと思いました。

github.blog

最後のマイクロサービスあるある問題ではトラブルシュートの難しさ、ローカルでの開発体験の悪さ、エンドツーエンドのテストの問題点、孤児サービスなど自分たちも普段実感している課題がたくさん挙げられていました。実際に直面してみると当然の課題ではあるのですが、これからマイクロサービスへの移行を検討しようという段階で将来こういう問題が起きるであろうということがわかっていると事前に備えるための助けになるのではないかと思います。

実際のところはマイクロサービス化しないと立ち行かない状態にまで成長したモノリスをこの本で書かれているようなパターンにきれいに当て嵌めて分割するというのはあまり現実的ではないと思いますが、これからマイクロサービス化を検討するといったフェーズではどういう戦略、戦術を取り得るかの出発点として基本的なパターンを押さえておくのに良さそうだなと思いました。