azure service fabric 概要

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

Upload: daiyu-hatakeyama

Post on 16-Apr-2017

223 views

Category:

Technology


1 download

TRANSCRIPT

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

Page 3: Azure Service Fabric 概要

#azurejp「マイクロサービスアーキテクチャ」• 2016/02 発行• マイクロサービスとは何か、

長所と短所、定義と概念、設計思想、アーキテクトの役割、分割、デプロイ、テスト、監視、セキュリティ

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

Page 4: Azure Service Fabric 概要

#azurejp「プログラミングAzure Service Fabric 」• 近日発行予定• Azure Service Fabric の

使い方の基本と活用シナリオを徹底解説

Page 5: Azure Service Fabric 概要

#azurejp

マイクロサービス 登場の背景

Page 6: Azure Service Fabric 概要

#azurejpなぜマイクロサービスか ?• アプリを継続的に進化• 顧客の期待に応えるため、機能を早くデリバリ• 大規模なサービスを構築、運用• コスト削減のため、リソースを効率的な利用

Plan1 Monitor +

Learn

Release

Develop + Test2

Development Production

4

3

Page 7: Azure Service Fabric 概要

#azurejp典型的な課題 – ユーザーのFeedback

“ フィードバックありがとうございます !

頂戴したコメントは、数年後に予定しています次のリリースに反映させていただきます。”

The OLD way

ベータ

サービスイン

ベータ

サービスイン

Page 8: Azure Service Fabric 概要

#azurejpリリースサイクル改善の課題

迅速に 頻繁に 確実に

Page 9: Azure Service Fabric 概要

#azurejpアジャイル 開発

Development Development Development Development

1~2週

DEV

Page 10: Azure Service Fabric 概要

#azurejpインフラ構築・運用

Development Development Development Development

3ヶ月

インフラ引き渡し

DEVQA

OPS

Page 11: Azure Service Fabric 概要

#azurejpDevOps の誕生

AgileInfrastructure

DevOpsAgile

Agile

インフラ自動化技術

WebOperatio

n

Agile Infrastructu

re

Page 12: Azure Service Fabric 概要

#azurejp

全てのシステムにアジャイルを適用する

の ?

Page 13: Azure Service Fabric 概要

#azurejp

ユーザー資産業務ワークフロー

「ライフサイクルを分けたい」

顧客

商品

受注

EC サイト /App

商品検索

商品管理

配送 / 請求

CRM5 年 ? 3 ヵ

月 ?

Page 14: Azure Service Fabric 概要

#azurejp

Customer #1

バージョン管理自社で SaaS 提供

IaaS 上で動作

Version 1.0

Customer #2

Version 1.0

Customer #3

Version 2.0

Version 1.0

Version 2.0

Page 15: Azure Service Fabric 概要

#azurejp

“ 分割して統治せよ”

Page 16: Azure Service Fabric 概要

#azurejp

ThumbnailService

ThumbnailServicePhoto Share

ServicePhoto Share

ServicePhoto Share

Service

マイクロサービスアーキテクチャの利点

Photo ShareService

ThumbnailService

Photo Share ServiceThumbnail

SharedLib-v7

Photo ShareService

SharedLib-v1

Photo ShareServicenode.js

ThumbnailService

.NET

Photo ShareService

V1

ThumbnailService

V1Thumbnail

ServiceSharedLib-v7

独立してスケール 異なるテクノロジースタック

依存関係の独立独立してデプロイ可能

ThumbnailService

V2

SharedLib-v1

メンテ可能な状態を継続できる

Page 17: Azure Service Fabric 概要

#azurejp

• 単一のデータベース• 単一テクノロジーのレイヤ

従来型のステート マイクロサービスのステート

• マイクロサービスがグラフ状に結合• マイクロサービス毎のステート• 様々なテクノロジーが使われる

stateless Service

stateless Service with separate stores

stateful Service

stateless presentation Service

Page 18: Azure Service Fabric 概要

#azurejpCompute リソースの使い方の違い仮想マシン Container / Service Fabric

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

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

遅い

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

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

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

Page 19: Azure Service Fabric 概要

#azurejpいずれでも、マイクロサービス は実現可能

Service Fabric

Container Service

VM Scale Sets

マイクロサービス フレームワーク

オーケストレーションとコンポジション

柔軟なインフラ

Page 20: Azure Service Fabric 概要

#azurejp

物理コンピューター 仮想マシン

Process

Container

More isolated More efficient

ハードウェア Not shared Shared Shared Shared

カーネル Not shared Not shared Shared* Shared

システム リソース

(ex: File System)

Not shared Not shared Not shared Shared

* Windows Hyper-V コンテナは、カーネルを共有しません

分離レベルの違い

Page 21: Azure Service Fabric 概要

#azurejp

Service Fabric

Page 22: Azure Service Fabric 概要

#azurejpツール と Platform の乱立

• Rolling Upgrades• Availability Guarantees• Scale Out Architecture• Resource Governance• Density• Packaging &

Deployment• Policy Enforcement• Granular Versioning• Stateful Workloads• Leader Election

• Mesos• Kubernetes• Zookeeper• Redis• Raven• Yarn• Fleet• Containers

?

Page 23: Azure Service Fabric 概要

#azurejp分散システムの Platform• Rolling Upgrades• Availability Guarantees• Scale Out Architecture• Resource Governance• Density• Packaging & Deployment• Policy Enforcement• Granular Versioning• Stateful Workloads• Leader Election

Service Fabric

Page 24: Azure Service Fabric 概要

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

VMware 、 OpenStack 、 AWS…

Page 25: Azure Service Fabric 概要

#azurejpService Fabric for Linux ( プレビュー )• 変える必要がないものは、変えない

• ランタイムの挙動や概念は同じ• 同じ Azure ポータル、 Service Fabric Explorer のエクスペリエンス

• 変える必要があるものは、変える• Linux 向けの開発エクスペリエンス• Azure CLI 、 Eclipse 、 Yoeman 、 Jenkins 、 apt-get インストール、 LTTng トレース…• Mac 、 Linux向けの開発環境• Java 、 C# (.NET Core) のサポート• コンテナー オーケストレーションのサポート

• Azure 上 のクラスター• 開発クラスター

• LinuxMac (Vagrant/VirtualBox による Linux VM)

Azureサービス

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

開発クラスター

Windows GA GA GALinux プレビュー - プレビュー

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

Page 26: 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 27: Azure Service Fabric 概要

#azurejp

Page 28: Azure Service Fabric 概要

#azurejpマイクロサービスの事例

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

Service Fabric Team Bloghttps://blogs.msdn.microsoft.com/azureservicefabric/tag/case-study/

Page 29: 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 30: Azure Service Fabric 概要

#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 Service• Reliable Actors• Reliable Service• 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 Service

Page 31: Azure Service Fabric 概要

#azurejp

App1 App2

Orchestration - Deployments

App Type Packages Service Fabric Cluster VMs

Page 32: Azure Service Fabric 概要

#azurejp

App1 App2

Orchestration - Failures

App Type Packages Service Fabric Cluster VMs

#FAIL

Page 33: Azure Service Fabric 概要

#azurejp

Purple NodesGreen Nodes

App1 App2

Orchestration - Constraints

App Type Packages Service Fabric Cluster VMs

Page 34: Azure Service Fabric 概要

#azurejp

App1 App2

Orchestration - Capacity

App Type Packages Service Fabric Cluster VMs

Page 35: Azure Service Fabric 概要

#azurejp

App1 App2

Orchestration - Balancing

App Type Packages Service Fabric Cluster VMs

Page 36: Azure Service Fabric 概要

#azurejp

App1 App2

Orchestration – Scale-out Service

App Type Packages Service Fabric Cluster VMs

Page 37: Azure Service Fabric 概要

#azurejp

App1 App2

Orchestration – Scale-out Cluster

App Type Packages Service Fabric Cluster VMs

Page 38: Azure Service Fabric 概要

#azurejp

UD3

UD2

UD1

App1 App2

Orchestration - Upgrade

App Type Packages Service Fabric Cluster VMs

App2.1

Page 39: Azure Service Fabric 概要

#azurejpService Fabric Orchestration – 規約• フォルトドメインとアップグレートドメイン (topology

awareness)• フォルト ドメイン -> 独立した場所、 障害時の分離 (電源、ネットワー

クなど )• アップグレードドメイン -> ローリングアップグレード時に停止時間を

なくする

• 場所の制約• プロパティと値にタグ付け

• 個別ワークロード時に選択しやすいように ex: (HasGPU == True)• Node Capacity

• 使用リソースの変更に迅速に対応

Page 40: Azure Service Fabric 概要

#azurejpService Fabric Orchestration – 最適化• Default Metrics

• クラスター内で基本的なワークフローのもののみ

• Custom Metrics• 全ノードが効率的に使用されるための、リソース定義が可能

• Metric への重みづけ• Metric 同士で重みづけが可能 ex: “このサービスでは、メモリーはディスクよりも重要”

• トリガーベースでプロアクティブに再配置• “Service Fabric が対応する前だけ、クラスターがアンバランスになる”

• 移動コスト• 幾つかのサービスは、小さくて、移動も容易• サービスを移動せずにクラスターの問題を解決できるのであれば、そちらを選択

Page 41: Azure Service Fabric 概要

#azurejp

Azure Service Fabric のインフラ

Page 42: Azure Service Fabric 概要

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

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

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

可能

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

Page 43: Azure Service Fabric 概要

#azurejpクラスター例

Primary: “DB”Service 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 44: Azure Service Fabric 概要

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

Page 45: Azure Service Fabric 概要

#azurejpYoeman 、 Eclipse ツール

Page 46: Azure Service Fabric 概要

#azurejpService Fabric での CI/CDSource Control Build

cspkg

Test

DEV OPSOPS

PPL

PROD

Inner Dev Loop

Mocks

Page 47: Azure Service Fabric 概要

#azurejp

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

Page 48: Azure Service Fabric 概要

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

ル )• 任意の EXE を持ち込

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

• アプリとしてパッ

ケージング

• バージョニング / 更新

/正常性監視などの

機能を追加

Reliable Service( サービス )

• ステートレス / ステー

トフル

• 同時実行性

• Reliable Collection に

よる状態管理

• 完全なプラットフォー

ム統合

Reliable Actors( アクター )

• ステートレス / ステー

トフルな

アクター オブジェク

• 簡素化された

プログラミング モデ

• 単一スレッド モデル

• コンピューティングと

状態の

スケール アウトに最

• IoT / ゲームなどで利

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

フル など

Page 49: Azure Service Fabric 概要

#azurejpサポートされているプログラミング モデル

ステートレスサービス

ステートフルサービス

アクターゲスト

実行可能ファイル

コンテナー

Windowsクラスター .NET .NET .NET Windows

Windowsコンテナー

(今後 )Linux

クラスター( プレ

ビュー )

Java.NET (今後 ) Java

.NET Linux Linuxコンテナー

Page 50: Azure Service Fabric 概要

#azurejp

Service Fabric infrastructure

Reliable Actors API

Reliable Service API

Stateless service

Statefull service Service Fabric Programming Models

Page 51: 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 52: 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 53: Azure Service Fabric 概要

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

アプリケーション型 : sfAuction

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

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

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

(C#/.NET)

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

(C#/.NET)

Page 54: Azure Service Fabric 概要

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

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

サービス型 : Website

ゲスト実行可能ファイル

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

Page 55: 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 56: Azure Service Fabric 概要

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

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

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

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

ング / デプロイ )

サービス型 : Website

ゲスト実行可能ファイル

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

サービス型 : APIGateway

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

(C#/.NET)

Page 57: Azure Service Fabric 概要

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

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

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

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

サービス型 : Website

ゲスト実行可能ファイル

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

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

フル )(C#/.NET)

サービス型 : APIGateway

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

(C#/.NET)

Page 58: Azure Service Fabric 概要

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

更新

IReliableDictionary<K,V> IReliableQueue<T>

Page 59: Azure Service Fabric 概要

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

• ゲーム、 IoT など

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

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

Page 60: 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 61: 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 62: Azure Service Fabric 概要

#azurejp

Queues Storage

ステートレス サービス パターン• パーティション分割されたストレージと

ステートレス サービスをスケーリング

• キューで信頼性を向上

• キャッシュで読み取り遅延を削減

• 状態 ( ステート ) の整合性のために自分でトランザクションを管理

• 別々に管理される多くの構成要素

Front End(StatelessWeb)

StatelessMiddle-tierCompute

Cache

Load Balancer

Page 63: Azure Service Fabric 概要

#azurejp

StatefulMiddle-tierCompute

ステートフル サービス パターン設計の簡素化、遅延の削減• 状態 ( ステート ) をコンピューティング層に配置

• 低遅延の読み書き

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

• 組み込みトランザクション

• 少ない構成要素

• 外部データ ストア ( オプション )

Front End(StatelessWeb)

Load Balancer

Cold Data StoresFor Exhaust(Optional)

Page 64: Azure Service Fabric 概要

#azurejpステートフル サービスのパーティション分割• スケール アウトのために、サービスをパーティション分割可能• 独自のパーティション分割スキームを選択可能• パーティションはクラスター内の複数マシンにストライピングされる• クラスター変更時にレプリカが自動的にスケール アウト / イン

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

P2

S

SS

P4SP1

SP3SS

S

Page 65: Azure Service Fabric 概要

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

Hundreds of partitions

Service Fabric ClusterHundreds of gateway Service

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

Partition 1 Partition 2 Partition ‘n’

Page 66: Azure Service Fabric 概要

#azurejp

まとめ

Page 67: Azure Service Fabric 概要

#azurejpMicroservice で更に柔軟性の高いインフラを手に入れる• Azure は更に高い柔軟性を持つ

• Windows / Linux 環境• Azure Stack / オンプレミス との整合性

• Azure Container Service• Docker ベースの Orchestration環境

• Azure Service Fabric• .NET / Java アプリケーションの

Page 68: Azure Service Fabric 概要

#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 69: Azure Service Fabric 概要

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

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

Page 70: Azure Service Fabric 概要

#azurejp

© 2016 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.