マイクロサービスとは何でしょうか?
小さな粒度のソフトウェアコンポーネントのことでしょうか?
いえいえ、その本質は違います。
マイクロサービスとは、サービス指向の革新的ソフトウェアアーキテクチャに加え、
コンテナやKubernetesといったアプリケーションランタイム、CI/CDや
アジャイルプロセスなどの開発手法、RESTやメッセージングなどによる
アプリケーション連携形態を包含する、クラウドネイティブコンピューティングの
包括的なアーキテクチャスタイルです。
本書では、マイクロサービスを、クラウドネイティブ時代のアーキテクチャスタイル
として捉えて、マイクロサービス流のソフトウェアアーキテクチャに加えて、
コンテナ、Kubernetes、サービスメッシュ、DevOps、ハイブリッド&マルチクラウド
など、DXを支えるクラウドネイティブテクノロジーの全体像を解説します。
DX実現のための最新技術動向を知りたい方、クラウドネイティブコンピューティング
の概要を理解したい方、そしてマイクロサービスに興味をお持ちの技術者にとって、
本書はおすすめの一冊です。本書でマイクロサービスの本質とポイントを学び、
「2025年の崖」を飛翔のきっかけとしてください。
■第1部 マイクロサービスのアーキテクチャ
第1章 デジタルトランスフォーメーション——マイクロサービスが求められる背景
1.1 デジタルトランスフォーメーションとは何か
1.2 2025年の崖
1.3 DX推進のための方策
第2章 クラウドネイティブコンピューティングとマイクロサービス
2.1 クラウドコンピューティングの歩みを振り返る
2.1.1 REST
2.1.2 クラウドサービスモデル
2.2 クラウドネイティブコンピューティング
2.3 クラウドネイティブコンピューティングを支える技術要素
2.3.1 コンテナ
2.3.2 コンテナオーケストレーション
2.3.3 DevOps
2.3.4 クラウドネイティブコンピューティングをすすめる理由
2.4 マイクロサービスとは何か
2.4.1 マイクロサービスアーキテクチャ
2.5 マイクロサービスの特徴
2.5.1 サービスによるコンポーネント設計
2.5.2 開発/運用体制
2.5.3 開発環境と永続データストアのガバナンス
2.5.4 基盤に対する考慮
2.6 マイクロサービスにおける開発/運用の流れ
2.7 マイクロサービスの適用基準
第3章 マイクロサービスアーキテクチャの基本
3.1 サービスの構造
3.2 レイヤードアーキテクチャ
3.2.1 制御の逆転(IoC)
3.3 ヘキサゴナルアーキテクチャ
3.4 データベースアクセス
3.5 トランザクション管理
3.6 データベース間の同期
3.7 データの結合
3.7.1 CQRS
3.7.2 イベントソーシング
3.7.3 CQRS&イベントソーシングのメリット/デメリット
3.8 サービス間連携
3.9 サービス化の進め方
3.9.1 アジャイル開発、1チーム、ドメイン駆動設計
3.9.2 サービス化は大きく始めて、必要に応じて細分化
3.9.3 セッション情報の維持
3.9.4 移行期間中の依存関係
第4章 マイクロサービスパターン
4.1 マイクロサービスパターン
4.2 データ管理パターン
4.2.1 データ管理パターンの背景と動機
4.2.2 データベース配置パターンの例
4.2.3 データ同期パターンの例
4.3 トランザクショナルメッセージングパターン
4.3.1 トランザクショナルメッセージングパターンの背景と動機
4.3.2 トランザクショナルメッセージングパターンの例
4.4 サービスディスカバリパターン
4.4.1 サービスディスカバリパターンの背景と動機
4.4.2 サービスディスカバリの方法に関するパターンの例
4.4.3 サービスレジストリパターン
4.4.4 サービスレジストリへの登録に関するパターンの例
4.5 外部APIパターン
4.5.1 外部APIパターンの背景と動機
4.5.2 外部APIパターンの例
4.6 通信パターン
4.6.1 通信パターンの背景と動機
4.6.2 通信パターンの例
4.7 デプロイメントパターン
4.7.1 デプロイメントパターンの背景と動機
4.7.2 デプロイメントパターンの例
4.8 可観測性パターン
4.8.1 可観測性パターンの背景と動機
4.8.2 可観測性パターンの例
4.9 リファクタリングパターン
4.9.1 リファクタリングパターンの背景と動機
4.9.2 リファクタリングパターンの例
■第2部 マイクロサービスを支えるクラウドネイティブテクノロジー
第5章 コンテナ&Kubernetes&サーバーレス
5.1 コンテナ
5.1.1 コンテナとは
5.1.2 アプリケーションの分離
5.1.3 プロセス、コンテナ、VM
5.1.4 コンテナを支える技術
5.1.5 コンテナの歴史
5.1.6 コンテナイメージ
5.1.7 Union File System
5.2 Kubernetes
5.2.1 コンピューターの拡張性
5.2.2 コンテナオーケストレーションとKubernetes
5.2.3 Kubernetesの機能概要
5.2.4 Kubernetesアーキテクチャ
5.3 サーバーレス
5.3.1 サーバーレスとは
5.3.2 サーバーレスの2つのペルソナ
5.3.3 サーバーレスアーキテクチャ
5.3.4 サーバーレスのユースケース
5.3.5 サーバーレスのメリット
5.3.6 サーバーレスの制約
5.4 デプロイメント技術の比較とまとめ
第6章 サービスメッシュ
6.1 サービスメッシュの必要性
6.1.1 マイクロサービスにおけるサービスへのアクセス
6.2 サービスメッシュとは
6.3 サービスメッシュでできるようになること
6.3.1 サービスディスカバリと負荷分散
6.3.2 トラフィックコントロール
6.3.3 サーキットブレーカー
6.3.4 分散トレーシングのためのテレメトリーデータの収集
6.3.5 セキュリティ
6.4 サービスメッシュのソフトウェア例
6.4.1 Istio
6.4.2 Linkerd
6.4.3 Consul
第7章 マイクロサービスの開発と運用
7.1 マイクロサービスの開発と運用
7.1.1 マイクロサービスの開発と運用のメリットと考慮点
7.2 マイクロサービスの開発と運用に必要なプラクティス
7.2.1 DevOps
7.2.2 継続的インテグレーション/継続的デリバリー(CI/CD)
7.2.3 GitOps
7.2.4 Infrastructure as Code/Immutable Infrastructure
7.3 マイクロサービス開発に必要な環境
7.3.1 コンテナの実行環境
7.3.2 統合開発環境、エディター、ツール
7.3.3 チーム開発の準備
7.3.4 ソースコードと構成ファイルの管理
7.4 リリースマネージメント
7.4.1 リリースの基本的な流れ
7.4.2 パイプライン
7.5 マイクロサービスの監視と運用
7.5.1 監視と運用の体制、DevOps組織とサイトリライアビリティエンジニアリング
7.5.2 可観測性(Observability)とモニタリング、ログ管理
第8章 クラウドデプロイメントモデルの動向
8.1 クラウドデプロイメントモデル
8.1.1 利用形態の多様化
8.2 ハイブリッドクラウド
8.2.1 ハイブリッドクラウドの利用形態
8.3 マルチクラウド
8.3.1 マルチクラウドのメリット
8.3.2 マルチクラウドの課題
8.4 コンテナとハイブリッド/マルチクラウド
8.5 分散クラウド
8.5.1 分散クラウドの定義
8.5.2 分散クラウドのアーキテクチャ
8.6 エッジコンピューティング
8.6.1 エッジコンピューティングが実現すること
8.6.2 エッジコンピューティングのアーキテクチャ
8.6.3 エッジコンピューティングの価値
8.6.4 エッジコンピューティングにおける分散クラウドの役割
8.7 まとめ
smatsu さん
2021-10-09
ガチな内容で歯ごたえあり。コンテナとKubernetes、クラウドネイティブ周辺のざっとした説明だけでなく、DXという時代背景の説明から始め、コンテナ技術の登場経緯とマイクロサービスというアーキテクチャの来歴、設計時の考え方と課題への対策、デザインパターンの解説、開発と運用の体制の在り方、分散クラウドにエッヂコンピューティングまで目配り良く解説してくれます。せっかく良書なのにページレイアウトだけが酷い出来で、最悪の場所で改ページを入れてくるセンスの悪さはなぜなのか。謎です。
Go Extreme さん
2021-11-06
マイクロサービスのアーキテクチャ:デジタルトランスフォーメーション―マイクロサービスが求められる背景 クラウドネイティブコンピューティングとマイクロサービス マイクロサービスアーキテクチャの基本 マイクロサービスパターン マイクロサービスを支えるクラウドネイティブテクノロジー:コンテナ&Kubernetes&サーバーレス サービスメッシュ マイクロサービスの開発と運用 クラウドデプロイメントモデルの動向
monotony さん
2022-03-27
オライリーの本より先に読む本として良くできている。特に前半部分の図を多用した概念説明はマイクロサービスの雰囲気を掴むのに最適。分かりやすかった。後半は要素技術の解説メインだが入門書として必要十分な範囲にとどめており、こちらはやはり、各々専門書を読んだほうが良さそう。