[Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric...

Post on 16-Apr-2017

666 views 7 download

Transcript of [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric...

Session ID: APP012

http://microsoft-events.jp/mstechsummit/session/#APP012

https://www.oreilly.co.jp/books/9784873117607/

http://ec.nikkeibp.co.jp/item/books/P98840.html

Microsoft Tech Summit

Azure ComputeContainer Service

VM Scale Sets

Virtual Machines

Batch

App Service

Service Fabric

Cloud Services

Azure Functions

Azure Compute のインフラ (IaaS)

高速、アジャイル

デプロイの統一フォーマット

ビルド、リリース、実行

巨大なコミュニティ

Dev Test Prod

コンテナー = OS仮想化

Container

Container

Container

従来型のVM = ハードウェア仮想化

VM VM VM

Windows Server コンテナー最高の速度、密度

Container Container Container

Hyper-V コンテナー分離とパフォーマンス

Container Container Container

クラウドIaaS

Dev

オーケストレーション

デプロイのパッケージ化

Linuxコンテナー

Windows Serverコンテナー

Hyper-Vコンテナー

アプリ

Azure Compute のプラットフォーム (PaaS)

Prescriptive

MicroservicesEvent-based

Azure App Serviceクラウド アプリの構築とスケーリング

Web Apps

Mobile Apps

Logic Apps

API Apps

Azure FunctionsAzure や外部サービスのイベントによって起動される

実行回数あたりの料金

C#、Node.js などのコード

オープン ソースのランタイムをどこでも実行可能

サーバーレス プラットフォーム

App Service

Azure Functions

サーバー管理なし

サーバーへのパッチ適用なし

サーバー ベースのスケーリングなし

細粒度のトランザクション

Service Fabricマネージド フレームワーク

Azure でのマイクロサービス

Microsoft Tech Summit

Pla

n1 Monitor + Learn

Releas

eDevelop + Test2

Development Production

4

3

https://12factor.net/ja/

モノリスのアプローチ マイクロサービスのアプローチ

• マイクロサービス アプリは、機能を小さいサービスに分割

• 各サービスを独立してデプロイし、複数のサーバー/

VM/コンテナーにわたってサービスのインスタンスを作成することで、スケール アウト

• モノリス (モノリシック アプリ)

には、ドメイン固有の機能が含まれている

• 通常、機能レイヤー (Web、ビジネス、データ) で分割される

• アプリを複数のサーバー/VM/コンテナーに配置することで、スケーリング

アプリ 1 アプリ 2アプリ 1

• 単一のモノリシック DB• 特定のテクノロジの階層

モノリスにおける状態 (ステート)

マイクロサービスにおける状態 (ステート)

• 相互接続されたマイクロサービス• 通常、状態の範囲は 1 つのマイクロサービス• 多様なテクノロジ

stateless services

stateless services with separate stores

statefulservices

stateless presentation services

Thumbnail

Service

Thumbnail

ServicePhoto Share

Service

Photo Share

Service

Photo Share

Service

Photo Share

ServiceThumbnail

Service

Photo Share Service

Thumbnail

SharedLib-v7

Photo Share

Service

SharedLib-v1

Photo Share

Service

node.js

Thumbnail

Service

.NET

Photo Share

Service

V1

Thumbnail

Service

V1

Thumbnail

Service

SharedLib-v7

Thumbnail

Service

V2

SharedLib-v1

https://azure.microsoft.com/ja-jp/solutions/microservice-applications/

Service Fabric Team Blog

https://blogs.msdn.microsoft.com/azureservicefabric/tag/case-study/

Azure 他のクラウドオンプレミス開発環境

Service Fabric for Windows Server

(GA)

Service Fabric for Linux

(プレビュー)

Azure 他のクラウドオンプレミス開発環境

Azure Consistent Private Cloud Azure Public Cloud

VMs and VM Scale Sets

VM Extensions

Mesosphere/Swarm

Marathon/Chronos/Swarm

クラスター管理

コンテナー/サービスのスケジューリング

ZooKeeperFederation and Reliability:• Failover manager

• Cluster manager

• Naming

• Image store service

• Leader Election

Hosting• Container activation and Monitoring

Balancing and Scheduling

• Resource Balancing & Placement

Application Programming Models• Stateful/Stateless services

• Reliable Actors

• Reliable Services

• Health Monitoring

Communication Subsystem • Service/Service Communication

• Sessions/Streams

•H

ealt

h m

an

ag

em

en

t an

d d

iag

no

stic

s

•Test

ab

ilit

y f

ram

ew

ork

データセンター (Azure、オンプレミス、AWSなど)

ロードバランサー

サーバー/VM #1

Service Fabric

アプリのコード

サーバー/VM #2

Service Fabric

アプリのコード サーバー/VM #3

Service Fabric

アプリのコード

サーバー/VM #4

Service Fabric

アプリのコードサーバー/VM #5

Service Fabric

アプリのコード

管理ポート 19080

Web リクエストポート 80/443

• 数千ノードをサポート• 自己回復• スケールアウト/イン

Azure Cloud Services(Web/Workerロール)

Azure Service Fabric(マイクロサービス)

• VM あたり 1 つのサービスインスタンス

• デプロイ、更新が遅い• スケーリングが遅い• 開発環境向けのエミュレーター

• マシン/VM あたり多数のマイクロサービス

• デプロイ、更新が早い• スケーリングが早い• 開発環境向け単一マシン クラスター

Cloud Services Deployment

Web Application

Web role Web role

Worker Application

Worker role Worker role Worker role Worker role Worker role

Storage queue

Service Bus

Azure cache Redis

Azure load balancer

Operational Insights

Table StorageAzure SQL database

Blob Storage

Storage queue

Table Storage

Service Bus

Azure SQL database

Azure cache Redis

Azure load balancer

Node

Service Fabric cluster

Node

Stateless Worker Service

Node

Node Node

Stateless Web Service

Stateless Worker Service

Stateless Worker Service

Stateless Worker Service

Stateless Web Service

Stateless Worker Service

Operational Insights

Blob Storage

Queues Storage

ステートレス サービス パターン

Front End(StatelessWeb)

StatelessMiddle-tierCompute

Cache

Load Balancer

StatefulMiddle-tierCompute

ステートフル サービス パターン設計の簡素化、遅延の削減

Front End(StatelessWeb)

Load Balancer

Cold Data StoresFor Exhaust(Optional)

cspkg

OPS

Inner Dev Loop

Mocks

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

Microsoft Tech Summit

Microsoft Tech Summit

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

Guest Executables(ゲスト実行可能ファイル)

• 任意の EXE を持ち込む

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

グ モデル

• アプリとしてパッケージン

• バージョニング/更新/正常

性監視などの機能を追加

• コンテナー

Reliable Services(サービス)

• ステートレス/ステートフル

• 同時実行性

• Reliable Collection に

よる状態管理

• 完全なプラットフォーム統

Reliable Actors(アクター)

• ステートレス/ステートフル

なアクター オブジェクト

• 簡素化されたプログラミン

グ モデル

• 単一スレッド モデル

• コンピューティングと状態

のスケール アウトに最適

• IoT / ゲームなどで利用

Platform の一部機能は使えない:

ステートフル

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

アプリケーション

レプリケーション レプリケーション

アプリ 1

アプリ 2

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

P2

S

S

S

P4

S

P1

S

P3S

S

S

更新ドメイン (UD) ごとに更新を実施

更新は、アプリ内で変更されたサービス、そのコード/構成に限定

Node

Node

NodeNode

Node

Node

Service

Package

B

Service

Package

A

Microsoft Tech Summit

Microsoft Tech Summit

Azureサービス

スタンドアロンクラスター

開発クラスター

Windows GA GA GA

Linux プレビュー - プレビュー

Mac - - プレビュー(Linux VM)

ステートレスサービス

ステートフルサービス

アクターゲスト

実行可能ファイル

コンテナー

Windowsクラスター

.NET .NET .NET WindowsWindowsコンテナー

(今後)

Linuxクラスター

(プレビュー)

Java.NET

(今後)Java.NET

LinuxLinux

コンテナー

Microsoft Tech Summit