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

66
Session ID: APP012

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

Page 1: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

Session ID: APP012

Page 2: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

Page 3: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

Page 4: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

Page 5: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 6: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

Microsoft Tech Summit

Page 7: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

Azure ComputeContainer Service

VM Scale Sets

Virtual Machines

Batch

App Service

Service Fabric

Cloud Services

Azure Functions

Page 8: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

Azure Compute のインフラ (IaaS)

Page 9: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

高速、アジャイル

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

ビルド、リリース、実行

巨大なコミュニティ

Dev Test Prod

Page 10: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

コンテナー = OS仮想化

Container

Container

Container

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

VM VM VM

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

Container Container Container

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

Container Container Container

Page 11: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

クラウドIaaS

Dev

オーケストレーション

デプロイのパッケージ化

Linuxコンテナー

Windows Serverコンテナー

Hyper-Vコンテナー

アプリ

Page 12: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 13: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

Prescriptive

MicroservicesEvent-based

Page 14: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 15: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

Web Apps

Mobile Apps

Logic Apps

API Apps

Page 16: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

実行回数あたりの料金

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

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

Page 17: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

App Service

Azure Functions

サーバー管理なし

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

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

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

Page 18: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

Azure でのマイクロサービス

Page 19: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

Microsoft Tech Summit

Page 20: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

Pla

n1 Monitor + Learn

Releas

eDevelop + Test2

Development Production

4

3

Page 21: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

https://12factor.net/ja/

Page 22: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

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

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

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

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

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

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

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

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

Page 23: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

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

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

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

stateless services

stateless services with separate stores

statefulservices

stateless presentation services

Page 24: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

Page 25: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 26: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 27: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 28: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

Service Fabric Team Blog

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

Page 29: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 30: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

Service Fabric for Windows Server

(GA)

Service Fabric for Linux

(プレビュー)

Page 31: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

Page 32: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 33: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

Page 34: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

データセンター (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

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

Page 35: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

Azure Cloud Services(Web/Workerロール)

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

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

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

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

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

Page 36: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

Page 37: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

Page 38: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

Queues Storage

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

Front End(StatelessWeb)

StatelessMiddle-tierCompute

Cache

Load Balancer

Page 39: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

StatefulMiddle-tierCompute

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

Front End(StatelessWeb)

Load Balancer

Cold Data StoresFor Exhaust(Optional)

Page 40: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 41: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

cspkg

OPS

Inner Dev Loop

Mocks

Page 42: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 43: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

Page 44: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 45: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 46: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

Microsoft Tech Summit

Page 47: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 48: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

Microsoft Tech Summit

Page 49: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

Page 50: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 51: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

• 任意の EXE を持ち込む

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

グ モデル

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

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

性監視などの機能を追加

• コンテナー

Reliable Services(サービス)

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

• 同時実行性

• Reliable Collection に

よる状態管理

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

Reliable Actors(アクター)

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

なアクター オブジェクト

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

グ モデル

• 単一スレッド モデル

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

のスケール アウトに最適

• IoT / ゲームなどで利用

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

ステートフル

Page 52: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

<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 53: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

アプリケーション

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

Page 54: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

アプリ 1

アプリ 2

Page 55: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

P2

S

S

S

P4

S

P1

S

P3S

S

S

Page 56: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

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

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

Node

Node

NodeNode

Node

Node

Service

Package

B

Service

Package

A

Page 57: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

Microsoft Tech Summit

Page 58: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 59: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

Microsoft Tech Summit

Page 60: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

Azureサービス

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

開発クラスター

Windows GA GA GA

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

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

Page 61: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

ステートレスサービス

ステートフルサービス

アクターゲスト

実行可能ファイル

コンテナー

Windowsクラスター

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

(今後)

Linuxクラスター

(プレビュー)

Java.NET

(今後)Java.NET

LinuxLinux

コンテナー

Page 62: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 63: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発

Microsoft Tech Summit

Page 64: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 65: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発
Page 66: [Microsoft Tech Summit] Linux/Java にも対応! Azure Service Fabric を使ったマイクロサービス開発