エンジニア選書シリーズクラウドネイティブで実現する マイクロサービス開発・運用 実践ガイド
2023年9月25日紙版発売
2023年9月25日電子版発売
正野勇嗣,山田真也,宇都宮雅彦,横井一輝,岡本隆史 著
B5変形判/456ページ
定価3,960円(本体3,600円+税10%)
ISBN 978-4-297-13783-0
書籍の概要
この本の概要
マイクロサービスはその実装の複雑さから,アーキテクチャを変えるだけでなく,組織構成の見直しやCI/CDによるオートメーション,複雑なシステムをどう可視化するかなどが,その成功に不可欠であることが分かってきました。近年では,クラウドネイティブ/Kubernetesの適用により,マイクロサービス固有のフレームワークに依存することなく,より簡潔にマイクロサービスを実装できるようになり,再び注目されています。本書では,特定のマイクロサービスフレームワークに過度に依存することなく,Kubernetes上でマイクロサービスを設計・実装・運用するためのノウハウを解説します。
こんな方におすすめ
- クラウドネイティブ技術やKubernetesを利用した,マイクロサービスの設計・開発・運用に興味のある人
- マイクロサービス開発プロジェクトに取り組み始めた開発者,ソフトウェアアーキテクト,プロジェクトマネージャー
本書のサンプル
本書の紙面イメージは次のとおりです。画像をクリックすることで拡大して確認することができます。
目次
概要編
第1章 マイクロサービス概論
- 1.1 本書について
- 1.1.1 本書に込めた思い
- 1.1.2 マイクロサービスの捉え方
- 1.1.3 本書の価値
- 1.1.4 本書の構成
- 1.2 マイクロサービスの概要
- 1.2.1 マイクロサービスとは
- 1.2.2 マイクロサービスの起源と歴史
- 1.2.3 なぜマイクロサービスが必要なのか
- 1.2.4 マイクロサービスに対する誤解
- 1.2.5 マイクロサービス化を可能とする技術
- 1.3 マイクロサービス化を成功に導くプラクティス
- 1.3.1 アジャイルとマイクロサービスの親和性
- 1.3.2 マイクロサービス時代のアーキテクチャ
- 1.3.3 マイクロサービスをどの単位で分ければ良いか
- 1.3.4 組織とケーパビリティ
- 1.3.5 見える化する技術の重要性と多様化
実践編
第2章 マイクロサービスの実装
- 2.1 サンプルアプリケーションの概要と開発環境構築
- 2.1.1 本書で実装するマイクロサービスの全体像
- 2.1.2 マイクロサービス開発環境の構築
- 2.2 アプリケーションの実装
- 2.2.1 リクエスト/レスポンス型通信によるマイクロサービスの実装
- 2.2.2 BFFによるバックエンドサービスの統合
- 2.2.3 シングルページアプリケーションの実装
- 2.2.4 マイクロサービスのデプロイ
- 2.2.5 イベント駆動型通信によるマイクロサービスの実装
第3章 サンプルアプリケーションへの非機能の実装
- 3.1 書籍オンラインショップ「Book Shop」の動作確認
- 3.1.1 本節で解説する内容
- 3.1.2 「Book Shop」の動作確認
- 3.1.3 「Book Shop」の機能紹介
- 3.2 サービスのモニタリングと可用性の向上
- 3.2.1 ヘルスチェックとProbeによるモニタリング
- 3.2.2 グレースフルシャットダウンによる安全なサービスの停止
- 3.3 サービスメッシュによるサービス連携
- 3.3.1 横断的関心事を扱うサービスメッシュ
- 3.3.2 バックエンドサービス間のトラフィック管理
- 3.3.3 バックエンドサービス間の通信セキュリティ
- 3.4 ユーザの認証・認可
- 3.4.1 ユーザの認証・認可とOpenID Connect
- 3.4.2 Keycloakを使った認証・認可の実装
第4章 マイクロサービスにおけるデータ管理
- 4.1 サービス間のデータ整合性の維持
- 4.1.1 SAGAによるトランザクション管理
- 4.1.2 TCCによるトランザクション管理
- 4.1.3 イベントソーシングによるデータ永続化
- 4.2 マイクロサービスでのクエリ操作
- 4.2.1 APIコンポジションを使ったクエリ
- 4.2.2 CQRSを使ったクエリ
第5章 マイクロサービスのテスト
- 5.1 ユニットテスト
- 5.1.1 マイクロサービス開発におけるユニットテストのポイント
- 5.1.2 Go言語を用いたテストコードの例
- 5.1.3 ユニットテストと静的解析
- 5.2 インテグレーションテスト
- 5.2.1 APIテスト
- 5.2.2 E2Eテスト
- 5.3 システムテスト
- 5.3.1 機能テスト
- 5.3.2 非機能テスト
第6章 マイクロサービスのためのCI/CD設計
- 6.1 CI/CDの概要
- 6.1.1 CI/CDとは何か
- 6.1.2 マイクロサービスの開発にCI/CDが重要な背景
- 6.1.3 CI/CDに取り組み始めるにあたり
- 6.2 CI/CDの設計
- 6.2.1 CI/CD全体に関わる設計
- 6.2.2 CIに関わる設計
- 6.2.3 CDに関わる設計
- 6.3 実装するCI/CDの全体像
- 6.3.1 CI/CDパイプラインの全体像と解説内容
- 6.3.2 CI/CDの設計サマリ
第7章 マイクロサービスアプリケーションにおけるCI/CDの実装
- 7.1 GitLab CIによるCIの実装
- 7.1.1 ここで解説する内容
- 7.1.2 CIパイプラインの実装
- 7.2 Argo CDによるGitOpsの実装
- 7.2.1 Argo CDとは
- 7.2.2 実装するCDパイプラインの全体像
- 7.2.3 Argo CDのセットアップ
- 7.2.4 GitOpsの実装
第8章 発展的なCI/CD戦略
- 8.1 Argo Rolloutsによるプログレッシブデリバリの実装
- 8.1.1 Argo Rolloutsとは
- 8.1.2 Argo Rolloutsによるプログレッシブデリバリのパイプライン全体像
- 8.1.3 Argo Rolloutsのセットアップ
- 8.1.4 プログレッシブデリバリの実装
- 8.2 CI/CDの高みを目指すために
- 8.2.1 発展的なソフトウェア開発ライフサイクル手法
- 8.2.2 CD成熟度モデル
- 8.2.3 より高度なCI/CDのプロセス設計
第9章 マイクロサービスの信頼性を支えるオブザーバビリティ
- 9.1 オブザーバビリティの世界へようこそ
- 9.1.1 オブザーバビリティとは何か
- 9.1.2 オブザーバビリティと監視の関係
- 9.1.3 オブザーバビリティをはじめよう
- 9.2 シグナルの種類と性質を知る
- 9.2.1 主要な3つのシグナル
- 9.2.2 その他のシグナル
- 9.3 オブザーバビリティの実装プロセスを考える
- 9.3.1 出発点はどこにあるか
- 9.3.2 計測の手段を検討する
- 9.3.3 どのようなプロセスで実装するか
- 9.4 シグナルのパイプラインを設計する
- 9.4.1 シグナルの収集方法を設計する
- 9.4.2 シグナルの保存方法を設計する
- 9.4.3 シグナルの利用方法を設計する
- 9.4.4 定期的に見直す
- 9.5 より良いオブザーバビリティを目指して
- 9.5.1 ユーザ体験を改善する
- 9.5.2 開発者体験を改善する
- 9.5.3 障害をシミュレートする
- 9.5.4 組織文化をモダナイズする
- 9.5.5 定量的な評価を導入する
- 9.5.6 ビジネスへのフィードバックループを作る
- 9.5.7 長い旅のはじまり
発展編
第10章 マイクロサービスの実践プラクティス
- 10.1 マイクロサービスの特徴を表すフレームワーク
- 10.1.1 マイクロサービスの9つの特徴
- 10.1.2 The Twelve-Factor AppとBeyond the Twelve-Factor App
- 10.1.3 マイクロサービスの分割とDDD
- 10.2 マイクロサービスデザインパターン
- 10.2.1 マイクロサービス間のデータ整合を取るためのパターン
- 10.2.2 レガシーモダナイゼーションパターン
- 10.3 マイクロフロントエンド
- 10.3.1 フロントエンドの技術トレンド
- 10.3.2 フロントエンドの分割と統合
- 10.3.3 マイクロフロントエンドの構築とデプロイ
第11章 マイクロサービスの今後
- 11.1 開発スタイル
- 11.1.1 AIやデータを活用した開発:AIDev
- 11.1.2 運用:AIOps
- 11.1.3 セキュリティ
- 11.2 マイクロサービスのアーキテクチャトレンド
- 11.2.1 WebAssembly
- 11.2.2 eBPF
- 11.2.3 Edge Computing on Kubernetes
この本に関連する書籍
-
AWSクラウドネイティブデザインパターン
AWSをはじめとするクラウドサービス利用の広まりやコンテナ技術の進歩に伴い,「クラウドネイティブ」といえるアプリケーションの構築が容易になりつつあります。本書で...
-
Kubernetesの知識地図 ——現場での基礎から本番運用まで
Kubernetesの基礎から本番運用のベストプラクティスまで,押さえておきたい情報源を第一線のエンジニアが厳選。進化を続けるKubernetesと幅広いエコシステムについての...
-
AWSで実現するモダンアプリケーション入門 〜サーバーレス、コンテナ、マイクロサービスで何ができるのか
アプリケーションの設計・構築・管理を継続的に見直し,変化に迅速な対応をする開発戦略として,注目されている「モダンアプリケーション」。高い俊敏性・柔軟性のある...
-
Docker/Kubernetes 実践コンテナ開発入門
話題のコンテナ技術,Docker/Kubernetesの基礎から実際にアプリケーションを作るまでを解説した入門書です。Docker/Kubernetesを実際の現場で活用している著者が最新情...