絵で見てわかるマイクロサービスの仕組み
書籍情報
発売日 : 2021年07月12日
著者/編集 : 樽澤 広亨/佐々木 敦守/森山 京平/松井 学/石井 真一/三宅 剛史
出版社 : 翔泳社
発行形態 : 単行本
書籍説明
内容紹介
本書では、マイクロサービスを、クラウドネイティブ時代のアーキテクチャスタイルとして捉えて、マイクロサービス流のソフトウェアアーキテクチャに加えて、コンテナ、Kubernetes、サービスメッシュ、DevOps、ハイブリッド&マルチクラウドなど、DXを支えるクラウドネイティブテクノロジーの全体像を解説します。DX実現のための最新技術動向を知りたい方、クラウドネイティブコンピューティングの概要を理解したい方、そしてマイクロサービスに興味をお持ちの技術者にとって、おすすめの一冊です。
目次
■第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 まとめ
第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 まとめ
著者情報
樽澤 広亨
樽澤, 広亨
佐々木 敦守
佐々木, 敦守
森山 京平
森山, 京平
松井 学
松井, 学
石井 真一
石井, 真一
三宅 剛史
三宅, 剛史