TECH PLAY

Azure Service Fabric完全解説

6,930円 (税込)

楽天

Azure Service Fabric完全解説

書籍情報

発売日:

著者/編集: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-