Stand Up and Shout!

勉強したことや、思いついたことを気ままに記述します

クラウドネイティブで実現するマイクロサービス開発・運用実践ガイドエンジニア選書

2023年9月25日に『クラウドネイティブで実現するマイクロサービス開発・運用実践ガイドエンジニア選書』が出版されました。

マインドマップによる整理

TBD

目次の俯瞰

クラウドネイティブで実現する マイクロサービス開発・運用 実践ガイド エンジニア選書
    概要編
        第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