45
#azurej p #azurej p スススススススススススス スススススススススススス Azure Services Fabric スス スス スス ススススススススススススス ススススス スススススススス https://www.facebook.com/ dahatake/ https://twitter.com/ dahatake/ https://github.com/ dahatake/ https:// daiyuhatakeyama.wordpress.com/

Azure Service Fabric概要

Embed Size (px)

Citation preview

Page 1: Azure Service Fabric概要

#azurejp#azurejp

https://www.facebook.com/dahatake/https://twitter.com/dahatake/https://github.com/dahatake/https://daiyuhatakeyama.wordpress.com/

Page 2: Azure Service Fabric概要

#azurejp

Application の実行環境= Compute

Page 3: Azure Service Fabric概要

#azurejp

IaaS VM /VM

Scale Setsコンテナー

Page 4: Azure Service Fabric概要

#azurejpVirtual Machines

Storage 1vNIC 1

VM 1

Storage 2vNIC 2

VM 2

Page 5: Azure Service Fabric概要

#azurejpVM Scale Sets

VM 1 VM 2 VM 3

VM 4 VM 5 VM 5

Page 6: Azure Service Fabric概要

#azurejpAzure Container Service

Page 7: Azure Service Fabric概要

#azurejp

PaaS

IaaS VM /VM

Scale Setsコンテナー

マイクロサービス

既存フレームワーク

Web/モバイル サーバーレス

Page 8: Azure Service Fabric概要

#azurejp

マイクロサービス

既存フレームワーク

Web/ モバイル

サーバーレス イベント駆動コンピューティングのアプリケーション コンポーネント例 : IoT イベント、ゲーム イベント、運用イベント

フル マネージドの Web/ モバイル アプリケーション。インフラ管理なし例 : EC サイト、業務アプリ、サポート Web サイト

アジャイルな複数コンポーネントを備えた、大規模で可用性の高いアプリ例 : 大規模オンライン ゲーム、大規模サイト / 業務アプリフレームワーク / ランタイム / アプリケーション モデルに重点を置いたアプリ例 : 既存のエンタープライズ / 業務アプリ、既存コンポーネントでのスケール アウト

Page 9: Azure Service Fabric概要

#azurejp

App Service

Service Fabric

Cloud Services

Azure Functions

マイクロサービス

既存フレームワーク

Web/ モバイル

サーバーレス

Page 10: Azure Service Fabric概要

#azurejp

Services Fabric

Page 11: Azure Service Fabric概要

#azurejpAzure Service Fabric• マイクロサービス フレームワーク• ステートフル / ステートレス• .NET 、 Java API• Windows Server 2012 R2, 2016 、 Linux• Azure 、 Azure Stack 、

VMware 、 OpenStack 、 AWS…• 将来 : Docker 、 Windows 、 Hyper-V コンテナー

Page 12: Azure Service Fabric概要

#azurejpService Fabric を使っているサービス群

Azureコア インフラ

数千台のマシン

Power BI

Intune

80 万台のデバイス

AzureSQL Database

140 万のデータベース

Bing Cortana

5 億回 / 秒

AzureDocumenDB

数十億トランザクション

/ 週

Skypefor Business

ハイブリッド運用

AzureEvent Hubs

200 億イベント / 日

IoT Suit

e

6 年以上のサービス稼働実績

Page 13: Azure Service Fabric概要

#azurejpAzure Service Fabric の歴史• 2015/04 (Build 2015)• 発表 / 開発者プレビュー ( ローカル マシン )• 2015/05 (de:code 2015)• [DEV-024] Microsoft Azure Service Fabric によるレジリエントなマイクロサー

ビスの構築• channel9.msdn.com/Events/de-code/decode-2015/DEV-024• 2015/11• Azure サービス - パブリック プレビュー

• 2016/03 (Build 2016)• Azure サービス - GA ( 一般提供 ) 、西日本リージョン• Windows Server - パブリック プレビュー• Linux (Java SDK 、 Docker) - 限定プレビュー

Page 14: Azure Service Fabric概要

#azurejp• リソースプール作成のための、仮想マシンで構成されたクラスター

• クラスターにアプリケーションをデプロイ

• スケールアウト / スケールダウン

• リソース使用状況に応じて、自動的なアプリケーションの移動などの最適化

• アプリケーションの動作に影響がないように、透過的に障害検知と回復

• アプリケーションの稼働状況監視

?

• サービス停止無しでの、アプリケーションの更新

• 診断と監視

Azure 他のクラウドオンプレミス

Page 15: Azure Service Fabric概要

#azurejpステートフルなサービス

アプリケーション

PSSreplication

replication

PSS

Page 16: Azure Service Fabric概要

#azurejp障害への対処

アプリ 1

アプリ 2

Page 17: Azure Service Fabric概要

#azurejpダウンタイムのないサービスの更新

更新ドメイン (UD) ごとに更新を実施更新は、アプリ内で変更されたサービス、そのコード / 構成に限定

Node

Node

NodeNode

Node

Node

FD0/UD0

FD0/UD1

FD2/UD3

FD1/UD6

FD1/UD5

FD2/UD4

Service Package

B

Service Package

A

アプリ

2.0.0.0

Page 18: Azure Service Fabric概要

#azurejpアーキテクチャ

Your Application

Application ModelDeclarative Application Description Native and Managed APIs

Management Subsystem

Deploy, Upgrade and Monitoring

Communication Subsystem

Service discovery

Reliability Subsystem

Reliability, Availability,

Replication, Service Orchestration

Hosting & Activation

Application LifecycleTestability Subsystem

Fault inject, Test in Production

Federation SubsystemFederation a set of nodes to from a consistent scalable fabric

Transport SubsystemSecure Point-to-point communication

Page 19: Azure Service Fabric概要

#azurejpCompute と Services の分離仮想マシン マイクロサービス

• 各 VM に 1 つのサービス インスタンス

• 均一でないワークロード• コンピューティングの密度が低い• デプロイ / 更新が遅い• スケーリング /DR ( 災害復旧 ) が

遅い

• 各 VM に多数のマイクロサービス

• コンピューティングの密度が高い

• デプロイ / 更新が速い• スケーリングが速い

Page 20: Azure Service Fabric概要

#azurejpステートフル サービスのパーティション分割• スケール アウトのために、サービスをパーティショ

ン分割可能• 独自のパーティション分割スキームを選択可能• パーティションはクラスター内の複数マシンにスト

ライピングされる• クラスター変更時にレプリカが自動的にスケール ア

ウト / イン

Node 5Node 4Node 3 Node 6Node 2Node 1

P2

S

SS

P4SP1

SP3SS

S

Page 21: Azure Service Fabric概要

#azurejpハイボリューム ステートフルサービス

Hundreds of partitions

Service Fabric ClusterHundreds of gateway services

• サービスファブリック アプリ == クラスター内で、 1 プロセスとして稼働。仮想マシンなどは意識しない• それぞれのステートフルサービスは、自分の管理すべき一部のデータを保持する

Partition 1 Partition 2 Partition ‘n’

Page 22: Azure Service Fabric概要

#azurejp

Azure Services Fabric のインフラ

Page 23: Azure Service Fabric概要

#azurejpクラスター例

Primary: “DB”Services Fabric Core System “Front”

耐久性レベルインフラによる VM 再起動な

どを制御する特権レベル

Gold: “DS3” / 2 時間 @1 更新ドメイン

Bronze: “D2_V2” / 特権無し

信頼性レベルレプリカの数

Platinum: ノード数 9 以上

レプリカセット 9

Bronze: ノード数 5

レプリカセット 3

P

S S

S S

S

SS

S

P

S S

ノードタイプVM スケールセット

Page 24: Azure Service Fabric概要

#azurejpAzure Service Fabric のインフラ• 実体は VM スケールセット

• ロードバランサー• Public IP address• VM スケールセット ( そのもの )• クラスター• 幾つかの Storage Account

• 仮想マシンの中• RDP でログインは

可能

VM 自体の管理は現時点では自分で行う必要があるOS 修正プログラムは自動適用の予定あり

Page 25: Azure Service Fabric概要

#azurejpCluster Resource Manager• アプリケーションの監視 / 診断

Page 26: Azure Service Fabric概要

#azurejp

Services Fabric を使ったアプリケーション開発

Page 27: Azure Service Fabric概要

#azurejpService Fabric Programming ModelsGuest Executables( ゲスト実行可能ファイ

ル )• 任意の EXE を持ち込

• 任意の言語 /プログラミング モデ

• アプリとしてパッ

ケージング

• バージョニング / 更新

/正常性監視などの

機能を追加

Reliable Services( サービス )

• ステートレス / ステー

トフル

• 同時実行性

• Reliable Collection に

よる状態管理

• 完全なプラットフォー

ム統合

Reliable Actors( アクター )

• ステートレス / ステー

トフルな

アクター オブジェク

• 簡素化された

プログラミング モデ

• 単一スレッド モデル

• コンピューティングと

状態の

スケール アウトに最

• IoT / ゲームなどで利

Platform の一部機能は使えない :カスタムの正常性、負荷のレポート、サービス エンドポイントの登録、ステート

フル など

Page 28: Azure Service Fabric概要

#azurejp

Service Fabric infrastructure

Reliable Actors API

Reliable Services API

Stateless service

Statefull service Service Fabric Programming Models

Page 29: Azure Service Fabric概要

#azurejpService Fabric オークション アプリ

アプリケーション型 : sfAuction

サービス型 : Websiteゲスト実行可能ファイル

( ステートレス ) (Node.js)

サービス型 : Auctionサービス ( ステートフル )

(C#/.NET)

サービス型 : APIGatewayサービス ( ステートレス )

(C#/.NET)

Page 30: Azure Service Fabric概要

#azurejpService Fabric のプラットフォーム機能• 全てのコード / プログラミング モデル

• 高速なデプロイ 配置とアクティブ化• 信頼性 高密度• 健全性レポート 更新の調整

サービス型 : Website

ゲスト実行可能ファイル

( ステートレス ) (Node.js)

Page 31: Azure Service Fabric概要

#azurejpサービス型• サービス型は、コード / 構成 / データ パッケージで構成さ

れる• コード パッケージは、エントリ ポイント (DLL/EXE) を定義• 構成パッケージは、サービス固有の構成情報を定義• データ パッケージは、静的リソース (画像など ) を定義

• パッケージは、独立してバージョニング可能<ServiceManifest Name="QueueService" Version="1.0"> <ServiceTypes> <StatefulServiceType ServiceTypeName=“QueueServiceType” HasPersistedState="true" /> </ServiceTypes> <CodePackage Name="Code" Version="1.0"> <EntryPoint> <ExeHost> <Program>ServiceHost.exe</Program> </ExeHost> </EntryPoint> </CodePackage> <ConfigPackage Name="Config" Version="1.0" /> <DataPackage Name="Data" Version="1.0" /></ServiceManifest>

Service Type 1

Code Config Data

Page 32: Azure Service Fabric概要

#azurejpアプリケーション型• アプリ作成のための宣言的テンプレート• 一連のサービス型を含む• パッケージング / デプロイ / バージョニングのために使わ

れるApplication Type A

Service Type 1 Service Type 2 Service Type 3

Code Config Data Code Config Data Code Config Data

Page 33: Azure Service Fabric概要

#azurejpWeb ゲスト実行ファイル / Docker コンテナー

• ServiceManifest.xml<ServiceManifest Name="Pkg-Svc.Website" Version="1.0.0" …> <ServiceTypes> <StatelessServiceType ServiceTypeName="Svc.WebsiteType" UseImplicitHost="true"/> </ServiceTypes> <CodePackage Name="Code" Version="1.0.0"> <EntryPoint> <ExeHost> <Program>node.exe</Program> <Arguments>Server.js</Arguments> </ExeHost> </EntryPoint> </CodePackage></ServiceManifest>

<ContainerHost> <ImageName>myNodeImage:latest</ImageName> <Commands></Commands></ContainerHost>

Page 34: Azure Service Fabric概要

#azurejpService Fabric のプラットフォーム機能• 全てのコード / プログラミング モデル

• 高速なデプロイ 配置とアクティブ化• 信頼性 高密度• 健全性レポート 更新の調整

• ステートレス サービス モデル• サービス エンドポイントの検出• リソース使用量を基にした動的リソース分散• アプリケーション パターンの統合 ( アクター パターン、 Web

API など )• Visual Studio 開発 (F5 デバッグ、診断イベント、パッケージ

ング / デプロイ )

サービス型 : Website

ゲスト実行可能ファイル

( ステートレス ) (Node.js)

サービス型 : APIGateway

サービス ( ステートレス )

(C#/.NET)

Page 35: Azure Service Fabric概要

#azurejpService Fabric のプラットフォーム機能• 全てのコード / プログラミング モデル

• 高速なデプロイ 配置とアクティブ化• 信頼性 高密度• 健全性レポート 更新の調整

• ステートレス サービス モデル• サービス エンドポイントの検出• リソース使用量を基にした動的リソース分散• アプリケーション パターンの統合 ( アクター パターン、 Web API など )• Visual Studio 開発 (F5 デバッグ、診断イベント、パッケージング / デプロイ )

• ステートフル サービス モデル (Reliable Collection)• 信頼性が高くスケーラブルな状態• 外部ストレージに比べて低遅延

サービス型 : Website

ゲスト実行可能ファイル

( ステートレス ) (Node.js)

サービス型 : Auctionサービス ( ステート

フル )(C#/.NET)

サービス型 : APIGateway

サービス ( ステートレス )

(C#/.NET)

Page 36: Azure Service Fabric概要

#azurejpReliable Collections• ステートフル サービスの構築を簡単に• .NET Collections の進化形• データが複製され、複数のレプリカに永続化される• トランザクションによる複数 Colleciton のアトミックな

更新

IReliableDictionary<K,V> IReliableQueue<T>

Page 37: Azure Service Fabric概要

#azurejpReliable Actors ( アクター )• 仮想アクター プログラミング モデル

• ゲーム、 IoT など

• アクターとは、コンピューティングと状態の独立した単位• 多数のアクターが並列に実行

• 非同期メッセージングを使って通信• 単一スレッド実行 ( ターン ベースの同時実行性 )• 必要に応じて自動的に作成 /退避

Page 38: Azure Service Fabric概要

#azurejpオークション アプリの配置

Service Fabric クラスター

ロードバランサー

VMSS #1 ( ステートレス層 )

NodeType=“FrontEnd”ノード #1

WebsiteApiGatew

ay

ノード #2

WebsiteApiGatew

ay

VMSS #2 ( ステートフル層 )

NodeType=“BackEnd”ノード #3

Auction

ノード #4

Auction

Page 39: Azure Service Fabric概要

#azurejp

Auction ( パーティション #1)

ステートフルなオークション サービス

Users Dictionary

Email UserInfoU1 ItemId[]U2 ItemId[]Active Items

ListItemIdU1/“A”U2/“X”

U1’s Items Dictionary

ItemId ItemInfoU1/“A” 2016-2-1,

Bid[]U1/“B

”2016-2-5, Bid[]

U2’s Items Dictionary

ItemId ItemInfoU2/“X

”2016-3-3,

Bid[]U2/”Y

”2016-4-9,

Bid[]

APIGatewayCreateUserAsync

Page 40: Azure Service Fabric概要

#azurejp

StatefulMiddle-tierCompute

ステートフルサービスのパターンシンプルな設計、遅延最小化

Front End(Stateless Web)

データ処理と最終保存のための、データストア

• アプリケーションの状態を Compute 層でも保持

• 低遅延での読み書き

• スケールアウトのためのパーティション

• トランザクション制御は組み込み

• 移動を最小化

Load Balancer

Store Store

Page 41: Azure Service Fabric概要

#azurejp

Page 42: Azure Service Fabric概要

#azurejpAzure Service Fabric• マイクロサービス フレームワーク• ステートフル / ステートレス• .NET 、 Java API• Windows Server 2012 R2, 2016 、 Linux• Azure 、 Azure Stack 、

VMware 、 OpenStack 、 AWS…• 将来 : Docker 、 Windows 、 Hyper-V コンテナー

Page 43: Azure Service Fabric概要

#azurejp無料で短時間試せる環境も• Azure Service Fabric Party Cluster

• http://tryazureservicefabric.westus.cloudapp.azure.com/

Page 44: Azure Service Fabric概要

#azurejp

さあ、始めましょう !azure.com

Page 45: Azure Service Fabric概要

#azurejp

YouMicrosoft© 2015 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.

MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。