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

[表紙]クラウドネイティブで実現する マイクロサービス開発・運用 実践ガイド

紙版発売
電子版発売

B5変形判/456ページ

定価3,960円(本体3,600円+税10%)

ISBN 978-4-297-13783-0

電子版

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

マイクロサービスはその実装の複雑さから,アーキテクチャを変えるだけでなく,組織構成の見直しやCI/CDによるオートメーション,複雑なシステムをどう可視化するかなどが,その成功に不可欠であることが分かってきました。近年では,クラウドネイティブ/Kubernetesの適用により,マイクロサービス固有のフレームワークに依存することなく,より簡潔にマイクロサービスを実装できるようになり,再び注目されています。本書では,特定のマイクロサービスフレームワークに過度に依存することなく,Kubernetes上でマイクロサービスを設計・実装・運用するためのノウハウを解説します。

こんな方におすすめ

  • クラウドネイティブ技術やKubernetesを利用した,マイクロサービスの設計・開発・運用に興味のある人
  • マイクロサービス開発プロジェクトに取り組み始めた開発者,ソフトウェアアーキテクト,プロジェクトマネージャー

本書のサンプル

本書の紙面イメージは次のとおりです。画像をクリックすることで拡大して確認することができます。

サンプル画像1

サンプル画像2

サンプル画像3

サンプル画像4

サンプル画像5

目次

概要編

第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

著者プロフィール

正野勇嗣(しょうのゆうじ)

NTTデータグループ 技術革新統括本部 部長。2005年NTTデータ入社。ソフトウェア開発技術のR&D,官公庁や金融機関などの大規模開発プロジェクトの支援やトラブルシューティングなど多数の技術開発やプロジェクト開発を経験。グローバル戦略室における全社Technology投資戦略の立案経験を経て,現在はデータ&インテリジェンス技術領域の戦略推進に従事。2015年頃から,マイクロサービスの魅力にハマり,その世界観をより深く知るため,Kubernetesを中心としたクラウドネイティブ技術を中心にさまざまな活動を実施している。


山田真也(やまだしんや)

NTTデータグループ 技術革新統括本部 課長。ソフトウェア開発技術や開発プロセスに関するR&D,公共・金融・法人分野での多岐案件のアーキテクチャ設計・開発支援を経験。2017年頃から,多数の案件へのマイクロサービス・クラウドネイティブやDevOps等の導入支援に従事。マイクロサービスやクラウド・コンテナの経験を通してKubernetesを中心としたクラウドネイティブ技術に興味を持ち,CKAの取得やKubernetesのエコシステムの調査・研究等を実施している。


宇都宮雅彦(うつのみやまさひこ)

NTTデータ 金融戦略本部 エグゼクティブITスペシャリスト。金融分野において,パブリッククラウドやクラウドネイティブ技術の導入支援に従事。2019年からRelationship Builder(全社の情報発信のロールモデル) を務め,クラウド・コンテナ技術の最新動向など金融分野のお客様に向けた講演実績多数。現在は金融機関で大規模コンテナプラットフォームとマイクロサービス開発のリードエンジニアを務めている。


横井一輝(よこいかずき)

NTTデータグループ 技術革新統括本部 主任。2019年のNTTデータ入社以来,システムのモダナイズ技術のR&Dに従事。金融系システムを中心にレガシーシステムの更改案件を経験。現在は,ソースコードを解析して事前にモダナイズのリスクを評価する手法を研究。モダナイズのアプローチとしてマイクロサービス移行に興味を持ち,マイクロサービスの関連技術を調査。


岡本隆史(おかもとたかし)

NTTデータグループ 技術革新統括本部 Technology Strategist。クラウド技術のスペシャリストとして,オブサーバビリティ/AIOps、FinOps,DevSecOpsなどのソリューションのグローバルレベルでの開発・普及展開,SRE・コンテナ技術などのトップエンジニア育成といった戦略立案のみでまったりするのを夢見ているが,現実は戦術実行も行っている。『Kubernetesポケットリファレンス』『Gitポケットリファレンス』をはじめ6冊の書籍執筆と,100記事以上の雑誌・Webメディアへの寄稿を行っている。