Azure Service Fabric概要
-
Upload
daiyu-hatakeyama -
Category
Technology
-
view
95 -
download
0
Transcript of Azure Service Fabric概要
#azurejp#azurejp
https://www.facebook.com/dahatake/https://twitter.com/dahatake/https://github.com/dahatake/https://daiyuhatakeyama.wordpress.com/
#azurejp
Application の実行環境= Compute
#azurejp
IaaS VM /VM
Scale Setsコンテナー
#azurejpVirtual Machines
Storage 1vNIC 1
VM 1
Storage 2vNIC 2
VM 2
#azurejpVM Scale Sets
VM 1 VM 2 VM 3
VM 4 VM 5 VM 5
#azurejpAzure Container Service
#azurejp
PaaS
IaaS VM /VM
Scale Setsコンテナー
マイクロサービス
既存フレームワーク
Web/モバイル サーバーレス
#azurejp
マイクロサービス
既存フレームワーク
Web/ モバイル
サーバーレス イベント駆動コンピューティングのアプリケーション コンポーネント例 : IoT イベント、ゲーム イベント、運用イベント
フル マネージドの Web/ モバイル アプリケーション。インフラ管理なし例 : EC サイト、業務アプリ、サポート Web サイト
アジャイルな複数コンポーネントを備えた、大規模で可用性の高いアプリ例 : 大規模オンライン ゲーム、大規模サイト / 業務アプリフレームワーク / ランタイム / アプリケーション モデルに重点を置いたアプリ例 : 既存のエンタープライズ / 業務アプリ、既存コンポーネントでのスケール アウト
#azurejp
App Service
Service Fabric
Cloud Services
Azure Functions
マイクロサービス
既存フレームワーク
Web/ モバイル
サーバーレス
#azurejp
Services Fabric
#azurejpAzure Service Fabric• マイクロサービス フレームワーク• ステートフル / ステートレス• .NET 、 Java API• Windows Server 2012 R2, 2016 、 Linux• Azure 、 Azure Stack 、
VMware 、 OpenStack 、 AWS…• 将来 : Docker 、 Windows 、 Hyper-V コンテナー
#azurejpService Fabric を使っているサービス群
Azureコア インフラ
数千台のマシン
Power BI
Intune
80 万台のデバイス
AzureSQL Database
140 万のデータベース
Bing Cortana
5 億回 / 秒
AzureDocumenDB
数十億トランザクション
/ 週
Skypefor Business
ハイブリッド運用
AzureEvent Hubs
200 億イベント / 日
IoT Suit
e
6 年以上のサービス稼働実績
#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) - 限定プレビュー
#azurejp• リソースプール作成のための、仮想マシンで構成されたクラスター
• クラスターにアプリケーションをデプロイ
• スケールアウト / スケールダウン
• リソース使用状況に応じて、自動的なアプリケーションの移動などの最適化
• アプリケーションの動作に影響がないように、透過的に障害検知と回復
• アプリケーションの稼働状況監視
?
• サービス停止無しでの、アプリケーションの更新
• 診断と監視
Azure 他のクラウドオンプレミス
#azurejpステートフルなサービス
アプリケーション
PSSreplication
replication
PSS
#azurejp障害への対処
アプリ 1
アプリ 2
#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
#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
#azurejpCompute と Services の分離仮想マシン マイクロサービス
• 各 VM に 1 つのサービス インスタンス
• 均一でないワークロード• コンピューティングの密度が低い• デプロイ / 更新が遅い• スケーリング /DR ( 災害復旧 ) が
遅い
• 各 VM に多数のマイクロサービス
• コンピューティングの密度が高い
• デプロイ / 更新が速い• スケーリングが速い
#azurejpステートフル サービスのパーティション分割• スケール アウトのために、サービスをパーティショ
ン分割可能• 独自のパーティション分割スキームを選択可能• パーティションはクラスター内の複数マシンにスト
ライピングされる• クラスター変更時にレプリカが自動的にスケール ア
ウト / イン
Node 5Node 4Node 3 Node 6Node 2Node 1
P2
S
SS
P4SP1
SP3SS
S
#azurejpハイボリューム ステートフルサービス
Hundreds of partitions
Service Fabric ClusterHundreds of gateway services
• サービスファブリック アプリ == クラスター内で、 1 プロセスとして稼働。仮想マシンなどは意識しない• それぞれのステートフルサービスは、自分の管理すべき一部のデータを保持する
Partition 1 Partition 2 Partition ‘n’
#azurejp
Azure Services 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 スケールセット
#azurejpAzure Service Fabric のインフラ• 実体は VM スケールセット
• ロードバランサー• Public IP address• VM スケールセット ( そのもの )• クラスター• 幾つかの Storage Account
• 仮想マシンの中• RDP でログインは
可能
VM 自体の管理は現時点では自分で行う必要があるOS 修正プログラムは自動適用の予定あり
#azurejpCluster Resource Manager• アプリケーションの監視 / 診断
#azurejp
Services Fabric を使ったアプリケーション開発
#azurejpService Fabric Programming ModelsGuest Executables( ゲスト実行可能ファイ
ル )• 任意の EXE を持ち込
む
• 任意の言語 /プログラミング モデ
ル
• アプリとしてパッ
ケージング
• バージョニング / 更新
/正常性監視などの
機能を追加
Reliable Services( サービス )
• ステートレス / ステー
トフル
• 同時実行性
• Reliable Collection に
よる状態管理
• 完全なプラットフォー
ム統合
Reliable Actors( アクター )
• ステートレス / ステー
トフルな
アクター オブジェク
ト
• 簡素化された
プログラミング モデ
ル
• 単一スレッド モデル
• コンピューティングと
状態の
スケール アウトに最
適
• IoT / ゲームなどで利
用
Platform の一部機能は使えない :カスタムの正常性、負荷のレポート、サービス エンドポイントの登録、ステート
フル など
#azurejp
Service Fabric infrastructure
Reliable Actors API
Reliable Services API
Stateless service
Statefull service Service Fabric Programming Models
#azurejpService Fabric オークション アプリ
アプリケーション型 : sfAuction
サービス型 : Websiteゲスト実行可能ファイル
( ステートレス ) (Node.js)
サービス型 : Auctionサービス ( ステートフル )
(C#/.NET)
サービス型 : APIGatewayサービス ( ステートレス )
(C#/.NET)
#azurejpService Fabric のプラットフォーム機能• 全てのコード / プログラミング モデル
• 高速なデプロイ 配置とアクティブ化• 信頼性 高密度• 健全性レポート 更新の調整
サービス型 : Website
ゲスト実行可能ファイル
( ステートレス ) (Node.js)
#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
#azurejpアプリケーション型• アプリ作成のための宣言的テンプレート• 一連のサービス型を含む• パッケージング / デプロイ / バージョニングのために使わ
れるApplication Type A
Service Type 1 Service Type 2 Service Type 3
Code Config Data Code Config Data Code Config Data
#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>
#azurejpService Fabric のプラットフォーム機能• 全てのコード / プログラミング モデル
• 高速なデプロイ 配置とアクティブ化• 信頼性 高密度• 健全性レポート 更新の調整
• ステートレス サービス モデル• サービス エンドポイントの検出• リソース使用量を基にした動的リソース分散• アプリケーション パターンの統合 ( アクター パターン、 Web
API など )• Visual Studio 開発 (F5 デバッグ、診断イベント、パッケージ
ング / デプロイ )
サービス型 : Website
ゲスト実行可能ファイル
( ステートレス ) (Node.js)
サービス型 : APIGateway
サービス ( ステートレス )
(C#/.NET)
#azurejpService Fabric のプラットフォーム機能• 全てのコード / プログラミング モデル
• 高速なデプロイ 配置とアクティブ化• 信頼性 高密度• 健全性レポート 更新の調整
• ステートレス サービス モデル• サービス エンドポイントの検出• リソース使用量を基にした動的リソース分散• アプリケーション パターンの統合 ( アクター パターン、 Web API など )• Visual Studio 開発 (F5 デバッグ、診断イベント、パッケージング / デプロイ )
• ステートフル サービス モデル (Reliable Collection)• 信頼性が高くスケーラブルな状態• 外部ストレージに比べて低遅延
サービス型 : Website
ゲスト実行可能ファイル
( ステートレス ) (Node.js)
サービス型 : Auctionサービス ( ステート
フル )(C#/.NET)
サービス型 : APIGateway
サービス ( ステートレス )
(C#/.NET)
#azurejpReliable Collections• ステートフル サービスの構築を簡単に• .NET Collections の進化形• データが複製され、複数のレプリカに永続化される• トランザクションによる複数 Colleciton のアトミックな
更新
IReliableDictionary<K,V> IReliableQueue<T>
#azurejpReliable Actors ( アクター )• 仮想アクター プログラミング モデル
• ゲーム、 IoT など
• アクターとは、コンピューティングと状態の独立した単位• 多数のアクターが並列に実行
• 非同期メッセージングを使って通信• 単一スレッド実行 ( ターン ベースの同時実行性 )• 必要に応じて自動的に作成 /退避
#azurejpオークション アプリの配置
Service Fabric クラスター
ロードバランサー
VMSS #1 ( ステートレス層 )
NodeType=“FrontEnd”ノード #1
WebsiteApiGatew
ay
ノード #2
WebsiteApiGatew
ay
VMSS #2 ( ステートフル層 )
NodeType=“BackEnd”ノード #3
Auction
ノード #4
Auction
#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
#azurejp
StatefulMiddle-tierCompute
ステートフルサービスのパターンシンプルな設計、遅延最小化
Front End(Stateless Web)
データ処理と最終保存のための、データストア
• アプリケーションの状態を Compute 層でも保持
• 低遅延での読み書き
• スケールアウトのためのパーティション
• トランザクション制御は組み込み
• 移動を最小化
Load Balancer
Store Store
#azurejp
#azurejpAzure Service Fabric• マイクロサービス フレームワーク• ステートフル / ステートレス• .NET 、 Java API• Windows Server 2012 R2, 2016 、 Linux• Azure 、 Azure Stack 、
VMware 、 OpenStack 、 AWS…• 将来 : Docker 、 Windows 、 Hyper-V コンテナー
#azurejp無料で短時間試せる環境も• Azure Service Fabric Party Cluster
• http://tryazureservicefabric.westus.cloudapp.azure.com/
#azurejp
さあ、始めましょう !azure.com
#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.
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。