マイクロサービスパターン[実践的システムデザインのためのコード解説]読了

今関わっているサービスがマイクロサービスによる実装を目指しているとのことだったので、予習のつもりで読み進めてみた。

本の内容としては架空のモノリシックなサービスをマイクロサービスに置き換えていく上でのポイントをまとめた感じで、サービスの分割やトランザクションの管理等についての言及が記載されていた。

個人的に興味深かったのはトランザクション管理部分で、複数のサービスにまたがるような操作を実行している途中で処理に失敗した場合、その他のサービスでどう対処すべきかや実装案についてまとめてあった。本書では各サービスごとにDBを作成すべきというスタンスだったので、この辺りの実装は確かに重要になりそうだなとは感じた。

ただ、そもそも今関わっているサービスがそこまで複雑なものにもなりそうになかったので、あまり本書で得るような知識が生かせそうな場面はなさそうだった。また別の現場でマイクロサービスに関わるようなことがあれば、改めて読み直してみようと思う。

余談ではあるが、マイクロサービスの難しさはその設計難易度にあると思う。昔関わったマイクロサービスもサービスの分割が上手くいかず失敗していたし、本書でもシステムが複雑になることをマイクロサービスアーキテクチャの欠点として挙げている(前述のトランザクション管理も、そもそも単一DBで管理するモノリスサービスならそこまで難しくはならないはず)。昔いた会社の勉強会では(講師の考えでは)マイクロサービスの欠点は特にないというスタンスだったが、本書の複雑な内容を見る限り特にそんなことは無いように思う。