概要
こちらをポチった。
https://www.amazon.co.jp/dp/toc/4295008583
マイクロサービスパターン[実践的システムデザインのためのコード解説]
モチベーション
ここ5年ほどマイクロサービスを追いかけていて、いくつか記事/書籍執筆・講演・取材対応などを行っているが、
体系的にまとめられた本書で何が新しいかを確認する。
https://qiita.com/kounan13/items/da791bfdb6b379287342
書籍の概観
ざっくり3つ。
- 分割論
- 品質/保守性
- 基盤
1. 分割論
分散トランザクションなどの弊害を最小化するために、どんな単位でマイクロサービスを分割するかが書かれている。
- 業務
- Chapter2:分割について
- Chapter5:DDDとか
- DB系
- Chapter4:分散トランザクションとか
- Chapter7:クエリ
- 通信系
- Chapter3:RESTとかgRPCとか
- Chapter6:イベントドリブンとかコレオグラフィとか
- Chapter8:API GatewayとかGraphQLとか
2. 品質/保守性
テストやリファクタリングなどの保守性について語られている。
- Chapter9/10:テスト
- Chapter13:リファクタリング
3. 基盤
コンテナやサーバレスといったアーキテクチャ関連の記載があり内容としても、近年使われている技術を軸としており、最新トレンドに追従している。
- Chapter12:KubenetesやAWS Lambdaに関する記載があり、実践的な印象
参考:Amazonに掲載されている目次
Chapter 1 モノリシック地獄からの脱出
Chapter 2 サービスへの分割
Chapter 3 マイクロサービスアーキテクチャで使われるプロセス間通信
Chapter 4 サーガによるトランザクションの管理
Chapter 5 マイクロサービスアーキテクチャにおけるビジネスロジックの設計
Chapter 6 イベントソーシングを使ったビジネスロジックの開発
Chapter 7 マイクロサービスアーキテクチャでのクエリーの実装
Chapter 8 外部APIパターン
Chapter 9 マイクロサービスのテスト(前編)
Chapter 10 マイクロサービスのテスト(後編)
Chapter 11 本番環境に耐えられるサービスの開発
Chapter 12 マイクロサービスのデプロイ
Chapter 13 マイクロサービスのリファクタリング
まとめ。で、何が新しいか
- 具体的・実践的な内容が増えてきた
- 分割論一つ取ってみても、具体的な設計を想起できるほどになってきた
- おおよそのポイント以前から出ているものから変わらない
- 2014年に投稿されたJames Lewis/Martin FowlerのMicroservicesで記載されている9つの特徴から大きく増えてはいない印象
参考:Microservicesに掲載されている目次
Componentization via Services
Organized around Business Capabilities
Products not Projects
Smart endpoints and dumb pipes
Decentralized Governance
Decentralized Data Management
Infrastructure Automation
Design for failure
Evolutionary Design