35
#azurej p #azurej p Azure Service Fabric Azure Container Service - 開開開開開開 - 開開 開開 開開開開開開開開開開開開開 開開開開開 開開開開開開開開 https://www.facebook.com/ dahatake/ https://twitter.com/ dahatake/ https://github.com/ dahatake/ https:// daiyuhatakeyama.wordpress.com/

NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

Embed Size (px)

Citation preview

Page 1: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejp#azurejp

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

Page 2: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejp

Page 3: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejpAzure アプリケーションプラットフォーム

Build on the OS (IaaS)

開発プラットフォーム (PaaS) 上に構築

Cloud ServicesService Fabric

App Service Functionsモノリシックな

3 階層ステートレス アプリ

クラウドネイティブ、マイクロサービスベースの

アプリ

Web, Mobile, API, Logic Apps

サーバーレス、イベント駆動の関数

StorageVirtual Machines and Containers

Networking

CloudFoundry, OpenShift, Apprenda,

Jetlastic, など

Web とモバイル マイクロサービス サーバーレスコンピューティング

既存のフレームワーク

サードパーティフレームワーク

他の PaaS

Page 4: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejp

RyuJIT, SIMDRuntime Compilers

.NET Compiler Platform (“Roslyn”)C#/F#/VB Languages

.NET Core 1.0 Libraries

.NET Framework 4.6 Libraries

LibrariesCommon

.NET Framework 4.6

.NET Core 1.0

Fully-featured and integrated .NET libraries and runtime for Windows

Modular and optimized .NET libraries and runtimes

ASP.NET Core 1.0 UniversalWindows AppsWPF Windows

FormsASP.NET

4.6

CoreCLR .NET Native

Page 5: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejp#azurejp

Page 6: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejp

・ Apache Mesos もしくは Docker Swarm 環境を展開  - マスタノード、エージェント VM の自動デプロイ  - VM スケールセット設定・ Docker 関連の各種ツールと API をサポート  - Marathon, Chronos を含むツール

Azure Container Service

Page 7: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejp

Orchestrator

Azure Container Service• Mesos/Swarm のエコシステム + Azure のスケーラビ

リティ

Cont

aine

r

Cont

aine

r

Cont

aine

r

Cont

aine

r

Cont

aine

r

Cont

aine

r

Cont

aine

r

Cont

aine

r

Cont

aine

r

Cont

aine

r

Cont

aine

r

Azure 仮想マシン スケールセット

Cont

aine

r

Cont

aine

r

Cont

aine

r

Cont

aine

r

仮想マシンリソースの確保 仮想ネットワークの構成 可用性セット / スケールセット

の構成 ロードバランサの構成 Mesos/Swarm 環境の構築

Page 8: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejpAzure Container Service の特徴

Page 9: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejp

Visual Studio 2015 Tools for Docker (Preview) Docker ファイルのスキャッフォールド

Dockerfile, docker-compose.yml,DockerTask.ps1

Linux Docker のみ。Windows Container は今後 Version 0.40.0 (2016/9/16 現在 )

Visual Studio Code Dockerfile and Docker Compose File support Dockerfile, yml のインテリセンス http://aka.ms/DockerToolsForVSCode

Docker Tools for Visual Studio Team Services Docker Build Linux Agent Build Release Management http://aka.ms/DockerToolsForVSTS

Page 10: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejp#azurejp

Page 11: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejpAzure Service Fabric• マイクロサービス フレームワーク• ステートフル / ステートレス / アクター• Windows Server 、 Linux• Docker コンテナー サポート ( 将来 )• .NET 、 Java API• Azure 、 Azure Stack 、

VMware 、 OpenStack 、 AWS…

Page 12: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#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: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejp

Azure Consistent Private Cloud Azure Public Cloud

VMs and VM Scale Sets

VM Extensions

Mesosphere/Swarm

Marathon/Chronos/Swarm

Cluster ManagementFederation and Reliability:• Failover manager• Cluster manager• Naming

• Image store service• Leader Election

Container/Service schedulingHosting• Container activation and MonitoringBalancing and Scheduling• Resource Balancing & Placement

ZooKeaper

Application Programming Models• Stateful/Stateless services• Reliable Actors• Reliable Services• Health Monitoring

Communication Subsystem • Service/Service Communication• Sessions/Streams

•He

alth

man

agem

ent a

nd

diag

nost

ics•

Test

abilit

y fra

mew

ork

Service Fabric と Azure Container Services

Page 14: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

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

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

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

可能

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

Page 15: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#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 16: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejp

Programming Model

Page 17: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

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

ル )• 任意の EXE を持ち込

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

• アプリとしてパッ

ケージング

• バージョニング / 更新

/正常性監視などの

機能を追加

Reliable Services( サービス )

• ステートレス / ステー

トフル

• 同時実行性

• Reliable Collection に

よる状態管理

• 完全なプラットフォー

ム統合

Reliable Actors( アクター )

• ステートレス / ステー

トフルな

アクター オブジェク

• 簡素化された

プログラミング モデ

• 単一スレッド モデル

• コンピューティングと

状態の

スケール アウトに最

• IoT / ゲームなどで利

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

フル など

Page 18: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#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 19: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

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

れるApplication Type A

Service Type 1 Service Type 2 Service Type 3

Code Config Data Code Config Data Code Config Data

Page 20: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

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

アプリケーション型 : sfAuction

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

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

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

(C#/.NET)

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

(C#/.NET)

Page 21: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

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

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

サービス型 : Website

ゲスト実行可能ファイル

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

Page 22: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#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 23: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

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

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

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

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

ング / デプロイ )

サービス型 : Website

ゲスト実行可能ファイル

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

サービス型 : APIGateway

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

(C#/.NET)

Page 24: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

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

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

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

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

サービス型 : Website

ゲスト実行可能ファイル

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

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

フル )(C#/.NET)

サービス型 : APIGateway

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

(C#/.NET)

Page 25: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

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

更新

IReliableDictionary<K,V> IReliableQueue<T>

Page 26: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

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

• ゲーム、 IoT など

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

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

Page 27: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

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

Service Fabric クラスター

ロードバランサー

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

NodeType=“FrontEnd”ノード #1

WebsiteApiGatew

ay

ノード #2

WebsiteApiGatew

ay

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

NodeType=“BackEnd”ノード #3

Auction

ノード #4

Auction

Page 28: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#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 29: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejp

StatefulMiddle-tierCompute

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

Front End(Stateless Web)

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

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

• 低遅延での読み書き

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

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

• 移動を最小化

Load Balancer

Store Store

Page 30: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

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

Hundreds of partitions

Service Fabric ClusterHundreds of gateway services

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

Partition 1 Partition 2 Partition ‘n’

Page 31: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejp#azurejp

Page 32: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejpAzure Service Fabric を動かす• Service Fabric developer SDK のダウンロード

• http://aka.ms/ServiceFabricSDK

• Service Fabric Course (Microsoft Virtual Academy)• http://bit.do/ServiceFabric

• サンプルと FREE clusters• http://aka.ms/ServiceFabricSamples and

http://aka.ms/tryservicefabric • Service Fabric on Linux へのサインアップ

• http://aka.ms/SFlinuxpreview • フィードバックにご協力ください• http://aka.ms/ServiceFabricForum or internally winfabtalk alias

Page 33: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejp

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

Page 34: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#azurejp

インフラエンジニア、アーキテクト、 IT 戦略立案に関わる皆様を対象にクラウドを活用したビジネスのデジタルトランスフォーメーションに必要な

マイクロソフトの最新技術情報と実践的ノウハウをご紹介します

2016 年 11 月 1 日 (火 ) – 11 月 2 日 (水 ) ヒルトン東京お台場

http://microsoft-events.jp/mstechsummit/

Page 35: NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -

#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.

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