@hihihiroroのLog

ダラダラと。本ブログは、個人の意見であり、所属会社とは関係がありません。

「モノリスからマイクロサービスへ」を読んだ

今更だが気になっていたので読んでみることにした。

目次は以下。

1章 必要十分なマイクロサービス
2章 移行を計画する
3章 モノリスを分割する
4章 データベースを分割する
5章 成長の痛み
6章 終わりに
付録A パターン一覧

最初からマイクロサービスを作るのも難しいが、古から動いているモノリスのサービスをマイクルサービス化するのもとても難しい。本書ではマイクロサービス化するために必要な移行について書かれている内容となっていた。具体例が書かれてるので読みやすい内容だった。

1章ではマイクロサービスの概要が説明されている。ここではマイクロサービスがどのようなものかの説明だけではなく、なぜマイクロサービスが必要になるのかについての考え方についても記載されている。マイクロサービスにすることでの問題点についても記載されていた。この章でマイクロサービスの歴史の学び直し、マイクロサービスのメリット、デメリットについて学べた。

2章ではマイクロサービス移行を考えるガイドラインが示されている。ここではマイクロサービス化することが適切な選択かを判断する際の重要な3つの質問が載っている。

  • 達成したいことは何か?
  • マイクロサービスの他に代替案はなかったか?
  • どうすれば移行がうまくいってるか分かるだろうか?

マイクロサービスを選択する、マイクロサービスが悪い結果になってしまうことについても説明されている。そのなかでもサービスのドメインが不明瞭な時や、もっともな理由が無いときはマイクロサービス化をするべきではないというのは納得感があった。マイクロサービス化をすすめるにしても、分解しやすいことだけをもって選ぶのではなく分解による利益についても考えるべきと紹介されている。マイクロサービス化する際にも何を目的とするかを考えながらする必要があると思った。

3章と4章ではサービスの分割、データベースの分割について使えるパターンが説明されている。古いサービスと新しいサービスを共存させつつ置き換えていくパターンや抽象化によるパターンなど新しい実装を試して駄目だったら切り戻すパターンの紹介や、古いサービスと新しいサービスを同時に実行するパターンも紹介されている。
また、データベースの分割についてもいくつかのパターンが説明されている。紹介されていたのは、データベースを分割せずに工夫するパターンとデータベースを分割するパターンだった。トランザクションが絡む部分の修正はマイクロサービス化に関係なく難しいのだから、マイクロサービス化も含めればそれは難しくなるだろうと思った。
本書で紹介されているパターンは付録A パターン一覧でざっと紹介されている。マイクロサービス移行をする際に使える手法をパターンとしてまとめられているので何度も読み直したいと思っている。

5章ではマイクロサービスが引き起こす可能性のある問題がいくつか紹介されている。それぞれの問題に対して、いつ起きるか、解決するためにはなにがあるかが紹介されている。個々の考え方を元に他の問題についても考えていけると良いと思った。

普段はデータ基盤についての仕事をしているが、最近はデータについてもモノリスなデータ置き場から分散したデータ置き場への変更が起きているように思える。その際にはアプリケーションと同じ問題が起きるのだろう。データに関しても最近はアプリケーションと同様にテストの話なども出ているし、早めに分散化についても勉強をしておこうと思う。

まとめ

  • マイクロサービス化を目指すときの指針を学べた
  • マイクロサービス化する際の方法をパターンとして学べた
  • ドメイン駆動という言葉から逃げ続けていたがそろそろ向き合う頃かもしれない