Azure Service Fabric完全解説

書籍情報

発売日 : 2021年09月18日

著者/編集 : Haishi Bai/清水 美樹/天野 ぴんく

出版社 : 日経BP

発行形態 : 単行本

書籍説明

内容紹介

モノシリックからマイクロサービスへ!Microsoftのクラウドサービスを支えるマルチプラットフォームのサービス統合基盤を徹底解説。

目次

第1部 Service Fabricの基礎

第1章 Hello, Service Fabric!
1.1 マイクロサービス
1.1.1 コンテナー化
1.1.2 スケジューリング
1.1.3 状態の調整
1.1.4 データの複製
1.1.5 サービスのパーティショニング
1.2 Service Fabricの考え方
1.2.1 アーキテクチャ
1.2.2 ノードとクラスター
1.2.3 アプリケーションとサービス
1.2.4 パーティションとレプリカ
1.2.5 プログラミングモード
1.2.6 ステートレス vs ステートフル
1.2.7 ゲストアプリケーションとコンテナー
1.3 Service Fabric開発の始め方
1.3.1 Windowsにおける開発環境のセットアップ
1.3.2 Azure上へのService Fabric のプロビジョニング
1.4 Hello, World!
1.5 ローカルクラスターの管理
1.5.1 Visual Studio Cloud Explorer
1.5.2 Service Fabric Explorer
1.5.3 Windows PowerShell
1.5.4 Service Fabric CLI
1.6 追加情報

第2章 ステートレスサービス
2.1 ASP.NET Core アプリケーションの実装
2.2 ステートレスサービスのスケーラビリティと可用性
2.2.1 可用性
2.2.2 スケーラビリティ
2.3 通信スタックの実装
2.3.1 既定の通信スタック
2.3.2 WCF通信スタック
2.3.3 カスタム通信スタック
2.4 追加情報

第3章 ステートフルサービス
3.1 Service Fabricステートフルサービスの構造
3.1.1 Reliable コレクション
3.1.2 Reliable 状態マネージャー
3.1.3 トランザクションレプリケーター
3.1.4 ロガー
3.1.5 一貫性
3.2 簡単なアプリケーション「Simple Store」
3.2.1 ショッピングカートサービス
3.2.2 Simple StoreのWebサイト
3.2.3 サービスのパーティション
3.3 パーティションのレプリカ
3.3.1 レプリカの役割
3.3.2 リソースの負荷分散
3.4 追加情報

第4章 アクターパターン
4.1 Service Fabric Reliable Actors
4.1.1 アクター
4.1.2 アクターのライフタイム
4.1.3 アクターの状態
4.1.4 アクターの通信方法
4.1.5 同時実行
4.2 アクターを使った三目並べゲーム
4.2.1 アクターモデル
4.2.2 アプリケーションの作成
4.2.3 アクターのインターフェイスの定義
4.2.4 Gameアクターの実装
4.2.5 Playerアクターの実装
4.2.6 テストクライアントの実装
4.2.7 ゲームをテストする
4.2.8 補足
4.3 タイマー、リマインダー、イベント
4.3.1 アクタータイマー
4.3.2 アクターリマインダー
4.3.3 アクターイベント
4.4 サービス診断とパフォーマンス監視の基礎
4.4.1 Windows イベントトレーシング
4.4.2 パフォーマンスカウンター
4.4.3 アクターと信頼性サービス
4.4.4 Actorの状態プロバイダー
4.5 追加情報

第5章 サービスのデプロイとアップグレード
5.1 Service Fabricアプリケーションのデプロイプロセス
5.1.1 パッケージ化
5.1.2 アップロード
5.1.3 登録とプロビジョニング
5.1.4 新規作成、置換、アップグレード
5.2 Service Fabricの正常性モデル
5.2.1 正常性の状態
5.2.2 正常性ポリシー
5.2.3 正常性レポートと集約
5.3 ローリングアップグレード
5.3.1 アップグレードプロセス
5.3.2 アップグレードモードとアップグレードパラメーター
5.4 さまざまな環境へのデプロイ
5.4.1 アプリケーションパラメーターとパラメーターファイル
5.4.2 アプリケーション発行プロファイル
5.5 暗黙のホストの使用
5.5.1 暗黙のホストの定義
5.5.2 RunAs ポリシー
5.5.3 Node.js アプリケーションのホスティング
5.6 リソース管理

第6章 可用性と信頼性
6.1 “壊れている”サービス
6.2 可用性の向上
6.3 信頼性の向上
6.4 Service Fabricのサービスの可用性
6.4.1 レプリカ
6.4.2 サービスの配置
6.4.3 サービスのフェールオーバー
6.4.4 ルーティングと負荷分散
6.4.5 高度なローリングアップグレード
6.5 Service Fabricサービスの信頼性
6.5.1 Windowsのイベントトレース機能
6.5.2 Azure診断
6.5.3 カオステスト
6.5.4 サービス状態のバックアップと復元

第7章 スケーラビリティとパフォーマンス
7.1 スケーラビリティとは
7.1.1 垂直スケーリングと水平スケーリング
7.1.2 ステートレスサービスとステートフルサービス
7.1.3 同種のインスタンスと異種混合のインスタンス
7.1.4 シングルテナントとマルチテナント
7.1.5 手動スケーリングと自動スケーリング
7.2 Service Fabricクラスターのスケーリング
7.2.1 Azure Resource ManagerとAzure 仮想マシンのスケールセット
7.2.2 Service Fabric クラスターの手動スケーリング
7.2.3 Service Fabric クラスターの自動スケーリング
7.2.4 Azure Insights による自動スケーリング
7.2.5 CDNによるスケーリング
7.3 ボトルネックの解決
7.3.1 状態(ステート)のボトルネック
7.3.2 通信のボトルネック
7.3.3 オーケストレーションのボトルネック

第2部 サービスのライフサイクル管理

第8章 スクリプティングによるService Fabric の操作
8.1 Azure Cloud Shell
8.2 PowerShell を使ってセキュリティで保護されたService Fabricクラスターを作成する
8.2.1 クラスターの保護に証明書を用いる
8.2.2 クライアント認証に証明書を用いる
8.2.3 クライアント認証にAzure Active Directoryを用いる
8.2.4 セキュリティで保護されたクラスターにVisual Studio からアプリケーションを公開する
8.3 クラスター管理コマンド
8.3.1 クエリコマンド
8.3.2 ノードの操作
8.4 アプリケーション管理コマンド
8.4.1 アプリケーションのデプロイ
8.4.2 アプリケーションのアップグレード
8.4.3 アプリケーションのロールバック
8.4.4 アプリケーションの破棄
8.4.5 Azure CLI
8.4.6 sfctl

第9章 クラスター管理
9.1 Service Fabricクラスターを解剖する
9.1.1 仮想マシンのスケールセット
9.1.2 仮想マシンと仮想ネットワークカード
9.1.3 仮想ネットワーク
9.1.4 ロードバランサー
9.1.5 ストレージアカウント
9.2 Service Fabricクラスターの高度な設定
9.2.1 ロールベースのアクセス制御
9.2.2 ネットワークセキュリティグループ
9.2.3 内部ロードバランサー
9.3 クラスター設定の更新

第10章 診断と監視
10.1 診断
10.1.1 診断データパイプライン
10.1.2 Azure 診断プログラムの設定
10.1.3 Microsoft Diagnostics EventFlow
10.1.4 ElasticsearchやKibana、EventFlow を使う
10.1.5 Azure OMS
10.1.6 Service Fabric ノードのトラブルシューティング
10.2 監視
10.2.1 Service Fabric Explorer
10.2.2 Application Insights

第11章 継続的デリバリー
11.1 CI、CD、DevOps
11.1.1 継続的インテグレーション
11.1.2 継続的デリバリー
11.1.3 DevOps(開発と運用)
11.2 継続的インテグレーションの設定
11.2.1 Azure DevOpsプロジェクトの準備
11.2.2 ビルド定義の作成
11.3 継続的デリバリーの設定
11.3.1 リリース定義の作成
11.3.2 デプロイの承認を要求
11.4 ソフトウェアのテスト容易性
11.4.1 可制御性
11.4.2 可観察性
11.4.3 分離可能性
11.4.4 明瞭性
11.5 自動テストの設定
11.5.1 単体テストの実装
11.5.2 ゲートチェックインの設定
11.5.3 負荷テストの実行

第3部 Linux とコンテナー

第12章 LinuxにおけるService Fabric
12.1 Service FabricのHello, WorldをLinuxで
12.1.1 Linux 開発環境の設定
12.1.2 Hello, World再び
12.2 通信リスナーを使う
12.3 他のサービスタイプやフレームワーク
12.3.1 ステートフルサービス
12.3.2 アクターサービス
12.3.3 ゲストバイナリサービス
12.4 Yeomanを使う

第13章 コンテナー
13.1 はじめてのDocker
13.1.1 Linux 上でのコンテナー化
13.1.2 Windows コンテナー
13.2 Dockerを始める
13.2.1 Linux でDockerを動かす
13.2.2 Windows 上でDockerを動かす
13.2.3 DockerをAzure 上で動かす
13.3 Service FabricとDocker
13.3.1 ASP.NET Core コンテナーをWindows でホストする
13.3.2 MinecraftサーバーコンテナーをLinux でホストする
13.4 Jenkinsを用いた継続的デプロイ

第14章 コンテナーのオーケストレーション
14.1 マイクロサービスアプリケーションとオーケストレーションエンジン
14.1.1 汎用マイクロサービスアプリケーションモデル
14.1.2 オーケストレーションエンジン
14.2 Service Fabricにおけるコンテナーオーケストレーション
14.2.1 DNSサービス
14.2.2 ウォッチドッグ
14.3 Service FabricでDocker Composeを用いる
14.3.1 マスターイメージの定義
14.3.2 スレーブイメージの定義
14.3.3 Docker Composeでサービスを構築する
14.3.4 アプリケーションのデプロイとテスト
14.4 サービスメッシュ
14.4.1 サービスメッシュとエンボイ
14.4.2 Service Fabric にエンボイをデプロイする

第4部 ワークロードとデザインパターン

第15章 スケーラブルなWeb
15.1 Azure PaaSのエコシステム
15.1.1 App Service
15.1.2 Azure Container Service(AKS)
15.1.3 仮想マシンスケールセット
15.1.4 Service Fabric
15.1.5 PaaS プラットフォームの選択
15.2 軽減によるスケーリング
15.2.1 CDN
15.2.2 ホームビュー
15.2.3 キャッシュ
15.2.4 事前計算値ビュー
15.2.5 データ操作
15.3 パーティションによるスケーリング
15.3.1 テナントマネージャー
15.3.2 サービスメッシュ(その2)
15.4 バーストによるスケーリング
15.5 機能拡張可能なコントロールプレーンの設計
15.5.1 汎用的なコントロールプレーンのアーキテクチャ
15.5.2 ワークロードのスケジューリング
15.5.3 新しいアプリケーションモデル

第16章 スケーラブルなインタラクティブシステム
16.1 インタラクティブシステムのテクニック
16.1.1 待機時間
16.1.2 スループット
16.2 CQRSとイベントソーシング
16.2.1 CQRS の背後にある基本的な考え方
16.2.2 コマンドとイベント
16.2.3 イベントソーシング
16.3 リアルタイムのデータストリーミングパイプライン
16.3.1 組み立て可能な処理パイプライン
16.3.2 処理シーケンスの実装
16.4 アクターを用いた処理のトポロジ
16.4.1 並行バッチ処理
16.4.2 上位N個のストリーム
16.4.3 フィールドで結合
16.4.4 キャッシュされた参照グリッド
16.5 演習:データの即時処理にWebSocketを用いる
16.5.1 製品アクター
16.5.2 国・地域アクター
16.5.3 全地域アクター
16.5.4 ゲートウェイアクター
16.5.5 WebSocketリスナー
16.5.6 テストクライアント

第17章 システムの統合
17.1 データストレージ
17.1.1 リレーショナルデータベース
17.1.2 NoSQL データベース
17.2 セキュリティ
17.2.1 Azure Active Directory
17.2.2 Azure Key Vault
17.2.3 カスタムドメインでSSL を有効にする
17.3 サービスブローカーとの統合
17.3.1 Open Service Broker API
17.3.2 Azure のOpen Service Broker
17.3.3 Service Fabric サービスカタログというサービス
17.4 メッセージングを用いた統合パターン
17.4.1 デッドレターチャネル
17.4.2 メッセージングゲートウェイ
17.4.3 トランザクションコーディネーター
17.4.4 メッセージトランスレーター
17.5 複数のService Fabricサービスを調整する

第5部 高度なトピック

第18章 サーバーレスコンピューティング
18.1 サーバーレスコンピューティングとは
18.1.1 サーバーレスデプロイ
18.1.2 サーバーレスプラットフォーム
18.1.3 サーバーレスアーキテクチャ
18.2 サーバーレスの利点
18.3 Azure におけるサーバーレス製品
18.3.1 Azure Container Instances
18.3.2 Azure Event Grid
18.3.3 Azure Functions
18.3.4 Azure Logic Apps
18.4 アクターを用いたリアクティブメッセージングパターン
18.4.1 メッセージ駆動型システム
18.4.2 応答性の高いシステム
18.4.3 耐性のあるシステム
18.4.4 弾力性のあるシステム
18.5 Sea Breezeにおける設計の諸原則
18.5.1 フルマネージド環境
18.5.2 コンテナーベースの環境
18.5.3 コミュニティとの密接な関係

第19章 人工知能
19.1 手短な人工知能入門
19.1.1 AI とは何か
19.1.2 機械学習(マシンラーニング)
19.1.3 ニューラルネットワーク
19.1.4 克服すべき課題と注意すべきこと
19.2 「おすすめ」を作る
19.2.1 Azure Machine Learning Studio を用いる
19.2.2 Service Fabric からサービスを呼び出す
19.2.3 Cognitive Services のRecommendation API を用いる
19.3 Computer Vision
19.3.1 OCR アプリケーションの構築
19.3.2 画像認識アプリケーションの研究
19.4 自然言語処理
19.4.1 音声の変換
19.4.2 ユーザーの意図を理解する
19.5 会話型UI
19.5.1 Bot FrameworkとBot Service を用いる
19.5.2 アプリケーションにWebベースのボットUI を埋め込む
19.5.3 ArchiBot
19.6 TensorFlowとService Fabric
19.6.1 Service Fabric を用いてTensorFlowクラスターをデプロイする
19.6.2 クラスター上のJupyter NotebookをTensorFlowコンテナーと連携させる

第20章 有機的なコンピューティングプレーンのオーケストレーション
20.1 静的なコンピューティングトポロジにデータを流し込む
20.1.1 データ生成とフィードバック
20.1.2 コマンドとコントロール
20.1.3 データ入力
20.1.4 データの変換と分析
20.1.5 ストレージ
20.1.6 プレゼンテーションとアクション
20.1.7 静的なコンピューティングトポロジを用いたサンプルパターン
20.1.8 エンドツーエンドのシナリオ
20.2 計算場所をデータの場所に移動する
20.2.1 エッジにおけるService Fabric
20.2.2 ワークロードの分散
20.3 おわりに

第6部 付録

付録A Azure PowerShellコマンドの使い方
A.1 インストール
A.2 サインイン
A.3 コマンドを見つけ出す
A.4 Azureリソースグループの管理
A.4.1 リソースグループの基本的な管理
A.4.2 ARMテンプレートのデプロイ
A.4.3 リソースグループのデプロイ

付録B パターン早見表
B.1 コンテナー
B.2 分散コンピューティング
B.3 マルチテナントシステム
B.4 パフォーマンスとスケーラビリティ
B.5 システムアーキテクチャ

著者情報

Bai, Haishi
haishi bai
IaaS、PaaS、ネットワーキング、スケーラブルコンピューティングサービスなど、Azureコンピューティングプラットフォームを担当するMicrosoft のシニアテクニカルエバンジェリスト。クラウドコンピューティングに関する本を何冊か執筆し、いくつかのオープンソースプロジェクトで活発に活動中。
清水 美樹
フリーライター。各種プログラミング入門書執筆・英書翻訳等を主な仕事とする。東京都在住。
清水, 美樹, 1963-
天野 ぴんく
設計から実装まで広く担当するフルスタックエンジニア。クラウドやコンテナーを中心としたシステム構築を手掛ける。
天野, ぴんく