71
Azure Service Fabric 概 Takekazu Omi [email protected] 2016/5/21 R.1.0 C# 概概概概概 //build/ 2016 概概概概 概概概

祝GA、 Service Fabric 概要

Embed Size (px)

Citation preview

Page 1: 祝GA、 Service Fabric 概要

Azure Service Fabric 概要Takekazu Omi

[email protected]

2016/5/21 R.1.0

C# ユーザー会 //build/ 2016 振り返り 勉強会

Page 2: 祝GA、 Service Fabric 概要

自己紹介近江 武一JAZUG Azure Storage 担当(自称)Microsoft MVP for Azure http://www.slideshare.net/takekazuomi

kyrt inc 2

kyrt.in

github.com/takekazuomi

white paper

監訳

2016/5/21

Page 3: 祝GA、 Service Fabric 概要

3

はじめにService Fabric の背景

2016/5/21 kyrt inc

Page 4: 祝GA、 Service Fabric 概要

4

2015/4/20 Azure Service Fabric を発表 Service Fabric は、高度な制御プラットフォーム 開発者や ISV は、拡張性とカスタマイズ性の高いクラウド サービスを構築可 ミッションクリティカルなクラウド サービスを提供してきたマイクロソフトの経験を

基礎として開発 5 年以上にわたって実際に運用 基盤となるテクノロジは、 Azure のコア インフラストラクチャに使用(実証済) Skype for Business 、 Intune、Event Hubs 、DocumentDB 、Azure SQL

Database 、Bing Cortana などの基盤で利用 毎秒 5 億回を超える評価に対応可能な拡張性

BUILD 2016 でGA

2016/5/21

http://blogs.msdn.com/b/windowsazurej/archive/2015/04/23/announcing-azure-service-fabric-reducing-complexity-in-a-hyper-scale-world.aspx

kyrt inc

Page 5: 祝GA、 Service Fabric 概要

5

Service Fabric 概要分散型システム プラットフォーム1. スケーラブル2. 信頼性が高く3. 管理しやすい‘ エンタープライズ クラスの Tier-1 クラウド スケール サービスを構築、管理のための次世代のミドルウェア プラットフォーム’

2016/5/21

https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-overview/

kyrt inc

Page 6: 祝GA、 Service Fabric 概要

6

Battle-hardened for over 5 yearsAzure Core Infrastructure thousands of machines

Azure Document DB billions transactions/week

Intune 800k devices

Skype for Business Hybrid Ops

Event Hubs 20bn events/day

Azure SQL Database 1.4 million databases

Bing Cortana 500m evals/sec

PowerBI

2016/5/21

出典 : BUILD 2015 2-640 Microsoft Azure Service Fabric Architecture

kyrt inc

Page 7: 祝GA、 Service Fabric 概要

7

Divide and rule

Azure そのものが突きつけられた課題⇨5年ほど前から社内利用

分割して統治せよ⇨モノリシックな大きなものではなく、分割された複数のサービスの組み合わせでアプリケーションを作成

kyrt inc2016/5/21

Page 8: 祝GA、 Service Fabric 概要

8

Applications composed of microservices

2016/5/21https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-overview/

kyrt inc

Page 9: 祝GA、 Service Fabric 概要

9

事例2016/5/21 kyrt inc

Page 10: 祝GA、 Service Fabric 概要

10

Regional Network Manager Microservices

kyrt inc2016/5/21ONS 2015: Wednesday Keynote - Mark Russinovich https://youtu.be/RffHFIhg5Sc

Page 11: 祝GA、 Service Fabric 概要

High Performance

Credit: ESO/L. Calçada

Empire building, economic price wars, real-time space twitch-combat.

• Millions of players concurrently in single contiguous universe.

• 50,000+ simultaneous players, real-time in the same battle.

• 267 million networked application messages per second. (23 trillion per day)

https://channel9.msdn.com/Events/Build/2016/B874

Page 12: 祝GA、 Service Fabric 概要

Service Fabric Cluster

Age of Ascent Architecture

Spatial(In Space)

Gaia (stateless)

Trade Inventory Production

CommsNavigation

Player Account Crew Commerce Alliance

Avatar(stateless)

AI Events

web browseror device

game function services

CDN

32 Microservices

aggregateservices

physicsservice

routingservices

https://channel9.msdn.com/Events/Build/2016/B874

Page 13: 祝GA、 Service Fabric 概要

13

Cloud Scale Application

2016/5/21 kyrt inc

Page 14: 祝GA、 Service Fabric 概要

14

Cloud Scale Application 基本戦略 Reliable

⇨ 複製を持つ – replication⇨ CDP:Data Replication and Synchronization Guidance

https://msdn.microsoft.com/en-us/library/dn589787.aspx Scalable

⇨ partition 分割する – partitioning⇨ CDP:Data Partitioning Guidance

https://msdn.microsoft.com/en-us/library/dn589795.aspx Low latency

⇨ データとコードを近くに配置 – data locality⇨ CDP:Caching Guidance

https://msdn.microsoft.com/en-us/library/dn589802.aspx 運用の自動化(後述)

kyrt inc2016/5/21

Page 15: 祝GA、 Service Fabric 概要

15

運用の自動化 : クラウド アプリケーションの重要な課題プロビジョニングデプロイ監視アップグレード削除

2016/5/21

Service Fabric プラットフォーム

kyrt inc

Page 16: 祝GA、 Service Fabric 概要

16kyrt inc2016/5/21

Page 17: 祝GA、 Service Fabric 概要

17

Microservicesはじめに

kyrt inc2016/5/21

Page 18: 祝GA、 Service Fabric 概要

18

マイクロサービスとは 全ての機能を盛り込んだモノリシック(一枚岩の)なアプリケーションではなく、分割された複数のサービスの組み合わせでアプリケーションを作るアーキテクチャ James Lewis が書いた

Martin Fowler 氏の Blog (日本語訳) で有名に2016/5/21 kyrt inc

Page 19: 祝GA、 Service Fabric 概要

19

Microservices 論点 by James Lewis1.Componentization via Services別プロセスで動作するサービスによってアプリケーションのコンポーネント化2.Organized around Business Capabilitiesビジネス機能ごとにサービスを構築(コンウェイの法則)3.Products not Projectsプロジェクトではなくプロダクトにフォーカス4.Smart endpoints and dumb pipesスマートなエンドポイントとダムバイプ

5.Decentralized Governance分散統治6.Decentralized Data Management分散データ管理7.Infrastructure Automationインフラ自動化8.Design for failure失敗を前提とした設計9.Evolutionary Design進化する設計

kyrt inc2016/5/21

コンウェイの法則「システムを設計する組織は、その構造をそっくりまねた構造の設計を生み出してしまう」 ( 原文 : "Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.")

Page 20: 祝GA、 Service Fabric 概要

20

超解説1. アプリケーションを 小さなService群の組み合わせで構築2. Serviceは個別にデプロイできるような単位がいい3. Service間はhttp のような軽量なプロトコルにしてSmart Endpointの実装にしよう4. Serviceはビジネス機能の粒度にして、チームを構成しよう5. Serviceが異なる言語で記述されたり別のデータストレージ技術を使うはありだ6. インフラの自動化でMicroservices の構築、デプロイ、運用の複雑さを減少しよう

kyrt inc2016/5/21

Microservice は、ソフトウェアのコンポーネント化、コンポーネントの組み合わせによるアプリケーションの構築という話しの正常進化

Page 21: 祝GA、 Service Fabric 概要

21

Martin Fowler 氏の問題提起Microservice の導入は根本的な複雑さをシステムにもたらし、生産性を低下させる。ターゲットシステムの複雑さがある値を超えた場合にだけ、 Microservice にはメリットがある。右図:縦軸が生産性、横軸が複雑さ参照:MicroservicePremium

⇨ http://martinfowler.com/bliki/MicroservicePremium.html

kyrt inc2016/5/21

Page 22: 祝GA、 Service Fabric 概要

22

Service Fabric の目標

A:Microservice のもたらす生産性の低下を小さくB: 生産性の低下と複雑さの関係のスレッショルドを左へC: Microservice のもたらす生産性の向上を大きく

kyrt inc2016/5/21

生産性

生産性

システムの複雑さ システムの複雑さ

AA

BB

CC

B を左へ

Page 23: 祝GA、 Service Fabric 概要

23

Service Fabric ClusterService Fabric は Cluster を構成する 

2016/5/21 kyrt inc

Page 24: 祝GA、 Service Fabric 概要

24

Cloud Service (PaaSv1)モダンなクラウドアプリケーションでは、高可用、スケーラブルを実現するために、「Immutable InfrastructureとDisposable Components」という戦略を取ります。 Azure だと、 Web/Worker Role で実装される Cloud Service がそれです。この戦略では、各 Node は状態を持たず、 Node障害の場合に容易に代替 Node を割り当てて対応でき、処理能力が足りない場合は Node を追加することでスケールすることができます。PaaSv1 では、全ての Role は仮想マシンの専有配置です。 (Node=Instance)そのため、 OS の設定やランタイムのインストールなど細かいことを自由にできるという大きなメリットがありますが「もう少し配置に自由度が欲しいよね」というのが今回の話しです。

2016/5/21 kyrt inc

Page 25: 祝GA、 Service Fabric 概要

25

例:Availability

可用性を保った構成とするためには、最低2つの Node に配置する必要があるその結果、 Role の粒度を小さくすると Node(=インスタンス ) の数が増えるCDP: Compute Partitioning Guidance で言う、 logical decomposition と、 physical

partition の考慮事項が複雑となる⇨ https://msdn.microsoft.com/en-us/library/dn589773.aspx

2016/5/21 kyrt inc

Page 26: 祝GA、 Service Fabric 概要

26

Static Partitioning 問題このように Role の分割が静的に行われているのを、 Static Partitioning (静的分割?)と言う Static Partitioning は、 Role を増やせば、増すほど扱いづらくなります。ワークロードを事前に予測することが難しい場合もあり、リソースの利用効率という観点からはムダが生じやすい仕組み A: 複数の Role を Node に入れてしまえばいいのでは?

Service Fabric では、 Node が複数の Service をホストする2016/5/21 kyrt inc

Page 27: 祝GA、 Service Fabric 概要

27

Cluster: System View

2016/5/21

Failovermanager

Clustermanager

Naming

Image store

System Services

kyrt inc

Page 28: 祝GA、 Service Fabric 概要

28

Compute Partitioning

複数の Node から構成された Cluster を使い。 Node 内に複数のサービスをホスト出来るようにすることで、高密度で柔軟な構成を取ることが可能になりましたCDP: Compute Partitioning Guidance

https://msdn.microsoft.com/en-us/library/dn589773.aspx

kyrt inc2016/5/21

Page 29: 祝GA、 Service Fabric 概要

29

Sam Newman  著、佐藤 直生 監訳、木下 哲也訳2016 年 02月 発行ISBN978-4-87311-760-7原書 :Building Microserviceshttps://www.oreilly.co.jp/books/9784873117607/

kyrt inc2016/5/21

Page 30: 祝GA、 Service Fabric 概要

30kyrt inc2016/5/21

Page 31: 祝GA、 Service Fabric 概要

31

IaaSと PaaSの統合2016/5/21 kyrt inc

Page 32: 祝GA、 Service Fabric 概要

VM Extensions

Mesosphere/Swarm

Marathon/Chronos/Swarm

VMs and VM Scale Sets

Azure Public CloudPrivate CloudInfrastructure

IaaS and IaaS+

Container/Service scheduling

Open Choice at Every Layer

Cluster ManagementFederation / Reliability

Management

Testability

Hosting

Communication

Application model

ZK

Page 33: 祝GA、 Service Fabric 概要

33

no lock-in to a specific cloud

https://msdn.microsoft.com/en-us/magazine/mt595752.aspx

2016/5/21 kyrt inc

Page 34: 祝GA、 Service Fabric 概要

34

Azure の次世代 PaaS

Resource Manager Template⇨宣言的なリソース管理

VM Scale Set⇨Container サポート

Service Fabric⇨Open - Windows/Linux, C#/Java サポート

kyrt inc2016/5/21

ONS 2015: Wednesday Keynote - Mark Russinovich https://youtu.be/RffHFIhg5ScBUILD 2015: 3-618 The Next Generation of Azure Compute Platform with Mark Russinovich

Page 35: 祝GA、 Service Fabric 概要

35

Service Fabric ⇨ PaaS V2, Reliable Service, Process base

VM Scale Set⇨ Next Gen Worker Role, elastic autoscale で迅速に同一の VM を作成

IaaS+ ( Managed IaaS )⇨ VM Extension, Backup, Monitoring

IaaS⇨ Windows, Linux, custom Image

2016/5/21 kyrt inc

Page 36: 祝GA、 Service Fabric 概要

36

ARM template

kyrt inc2016/5/21

Page 37: 祝GA、 Service Fabric 概要

37

解説1. 基本は、 LB + VM Scale Set + Cluster2. Cluster はクラスタの定義

⇨ Diagnostics Storage Account の設定⇨ 管理用の EndPoint 定義 など、 Service Fabric のサブシステムで使う情報を定義3. 各ノードで動作する Service Fabric のサブシステム は、 VM Extension で導入  

kyrt inc2016/5/21

Page 38: 祝GA、 Service Fabric 概要

38

Service Fabric Explorer

kyrt inc2016/5/21

Page 39: 祝GA、 Service Fabric 概要

39

Application Modelアプリケーションモデル

2016/5/21 kyrt inc

Page 40: 祝GA、 Service Fabric 概要

40

Application Model 図

kyrt inc2016/5/21

Cluster

Application

Service

Code Package

Data Package

Configuration Package

ApplicationManifest.xml

ServiceManifest.xml

https://azure.microsoft.com/en-us/documentation/articles/service-fabric-application-model/

Page 41: 祝GA、 Service Fabric 概要

41

ApplicationSF では、 Application は複数の Service で構成されるApplication の全体の構成内容は、 ApplicationManifest.xml に定義

⇨ Application の Type 、 Version⇨パーテーション分割スキーマ、インスタンス数、リプリケーション係数、配置等⇨含まれる Service の情報

kyrt inc2016/5/21

Page 42: 祝GA、 Service Fabric 概要

42

Service Service の構成内容は、 ServiceManifest.xml に定義

⇨ Service の Type 、 Version⇨ ヘルスチェックの設定、負荷分散のメトリック等の service meta data を指定

⇨ SetupEntryPoint 、 StartupTask的なやつ Service は、 Code 、 Data 、 Config で構成され、 Codeは process にホストされる Server が複数 partition で構成される場合は、別ノードへ展開される

kyrt inc2016/5/21

Page 43: 祝GA、 Service Fabric 概要

43kyrt inc2016/5/21

Node 1

Page 44: 祝GA、 Service Fabric 概要

44

Node での実行Cluster は複数の Node 構成され Applicationが Cluster に Deply されると各ノードで

Code が実行されるNode 内では、複数の Application が動作するこの例では、 Node0 では、 MyApp の Actorのプライマリ、 WordCount の1つ目と 2 つ目の partition のセカンダリが動いている

kyrt inc2016/5/21

Page 45: 祝GA、 Service Fabric 概要

45

Server の配置MyAp

p.AMyAp

p.SWC.S

P1WC.S

P2 WC.SL CM FM FA NS 1 NS 2 NS 3

Node 0 P S S S S S S S S

Node 1 P S ○ S S S P S S

Node 2 S P P S S S P S

Node 3 S S P S S P S S P

Node 4 S S S P S S S S

kyrt inc2016/5/21

Page 46: 祝GA、 Service Fabric 概要

46

Service Fabric Programing modelプログラミングモデル概要、 Stateful Service と、 Partitioning

2016/5/21 kyrt inc

Page 47: 祝GA、 Service Fabric 概要

Service Fabric Programming Models

Reliable Actors APIReliable Services API

Azure Private Clouds

Applications composed of microservices

High Availability

Hyper-Scale

Hybrid Operations

High Density

Rolling Upgrades Stateful

services

Low Latency Fast startup & shutdown

Container Orchestration & lifecycle management Replication &

Failover

Simple programming models

Load balancing

Self-healingData Partitioning

Automated Rollback

Health Monitoring

Placement Constraints

Service Fabric

参照: https://channel9.msdn.com/Events/Build/2015/3-618

Page 48: 祝GA、 Service Fabric 概要

48

プログラミングモデル

kyrt inc2016/5/21

reliable service reliable actor guest executable

stateless service stateful service

※赤枠がステートフル

Page 49: 祝GA、 Service Fabric 概要

49

Framework の選択RELIABLE ACTORS APIS RELIABLE SERVICES APIS

問題領域が数多くの独立な状態とロジックで構成

複数のコンポーネントの間のロジックを自分で制御したい

外部との対話をあまり必要としない single thread のオブジェクトである

reliable collections (like .NET Dictionary and Queue) の保存は自分で管理したい

platform が通信を管理 通信や partitioning scheme の管理、通信か自分で行いたい

kyrt inc2016/5/21

https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-choose-framework/

Page 50: 祝GA、 Service Fabric 概要

50

Stateful and StatelessNodeへの状態の保存、レイテンシーの向上

2016/5/21 kyrt inc

Page 51: 祝GA、 Service Fabric 概要

kyrt inc 51

概要Stateful Service は、 Reliable Collection で実装Actor は、 基本 Stateful 前提(属性でコントロールできる)Reliable Collection は、レイテンシーの向上に貢献CDP: Caching Guidance の別解

https://msdn.microsoft.com/en-us/library/dn589802.aspx

2016/5/21

Service Fabric Application Scenarios https://azure.microsoft.com/en-gb/documentation/articles/service-fabric-application-scenarios/

Page 52: 祝GA、 Service Fabric 概要

52

☆Reliable Collection重要:状態の永続化に利用

kyrt inc2016/5/21

Jazug Tokyo Night 第1回 Azure Fabric Service Reliable Collection の紹介 http://www.slideshare.net/takekazuomi/azure-fabric-service-reliable-collection 

Page 53: 祝GA、 Service Fabric 概要

53

基本的な構造状態をローカルでサービス インスタンスに格納、 Node 間レプリケーションで高い可用性を実現 読み取りはローカルで実行され、待機時間が短く高スループット 書き込みはネットワーク IO が最小となり、待機時間が短く高スループット

kyrt inc2016/5/21

https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-reliable-services-reliable-collections/

Page 54: 祝GA、 Service Fabric 概要

54

stateless services + external store

kyrt inc2016/5/21

Page 55: 祝GA、 Service Fabric 概要

55

 stateful services

kyrt inc2016/5/21

Page 56: 祝GA、 Service Fabric 概要

56

Partitioningスケーラブルなサービスの構築の中心的なパターン

2016/5/21 kyrt inc

https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-concepts-partitioning/

Page 57: 祝GA、 Service Fabric 概要

57

パーティション分割パーティション分割は、スケーラブルなサービスの構築の中心的なパターンパーティション分割とは、広義では状態

( データ ) の分割に関する概念Scalable

⇨CDP:Data Partitioning Guidancehttps://msdn.microsoft.com/en-us/library/dn589795.aspx

kyrt inc2016/5/21

Page 58: 祝GA、 Service Fabric 概要

58

Stateful Service のパーティション分割ApplicationManifest.xml ファイルに、パーティション定義を記述パーティションのルーティングは Service

Fabric のランタイムで提供( ServicePartitionResolver.GetDefault() )接続先の Node と該当データの割当は

Service Fabric のランタイムで管理kyrt inc2016/5/21

Page 59: 祝GA、 Service Fabric 概要

59

ActorActor

2016/5/21 kyrt inc

Page 60: 祝GA、 Service Fabric 概要

60

続きは、 Tokyo Jazug Night で

第 2 回 Tokyo Jazug Night2016-06-16(木) 19:00 - 21:30https://jazug.doorkeeper.jp/events/45265

kyrt inc2016/5/21

Page 61: 祝GA、 Service Fabric 概要

kyrt inc 61

Actor とは何か?Carl Hewitt 1973

https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%AF%E3%82%BF%E3%83%BC%E3%83%A2%E3%83%87%E3%83%AB

Isolated components ( single-thread )code と state を encapsulateAsynchronous communication

2016/5/21

Page 62: 祝GA、 Service Fabric 概要

62

Service Fabric に置ける Actor

Stateful と Stateless の 2種類ActorProxy 経由の簡単な呼び出し

kyrt inc2016/5/21

ActorId actorId = ActorId.NewId();string applicationName = "fabric:/CalculatorActorApp";ICalculatorActor calculatorActor = ActorProxy.Create<ICalculatorActor>(actorId, applicationName);double result = calculatorActor.AddAsync(2, 3).Result;

Garbage Collection⇨Active Actor table への add/remove⇨Actor lifecycle and Garbage Collection

Page 63: 祝GA、 Service Fabric 概要

63

Concurrency logical context は、単一の thread で実行( STA ) Actors runtime allows

reentrancy by default state の復元、保存は自動https://azure.microsoft.com/en-gb/documentation/articles/service-fabric-reliable-actors-introduction/

kyrt inc2016/5/21

Page 64: 祝GA、 Service Fabric 概要

64

終kyrt inc2016/5/21

Page 65: 祝GA、 Service Fabric 概要

65kyrt inc2016/5/21

Page 66: 祝GA、 Service Fabric 概要

66

参考資料2016/5/21 kyrt inc

Page 67: 祝GA、 Service Fabric 概要

67

Service Fabric documentationhttp://azure.microsoft.com/en-us/documentation/services/service-fabric/

BUILD 2015, The Next Generation of Azure Compute Platform with Mark Russinovichhttps://channel9.msdn.com/Events/Build/2015/3-618

Microsoft Azure Service Fabric Architecturehttps://channel9.msdn.com/Events/Build/2015/2-640

Deep Dive into Microsoft Azure Service Fabric Reliable Actorshttps://channel9.msdn.com/Events/Build/2015/2-66

2016/5/21 kyrt inc

Page 68: 祝GA、 Service Fabric 概要

68

Service Fabric documentationhttp://azure.microsoft.com/en-us/documentation/services/service-fabric/

BUILD 2015, The Next Generation of Azure Compute Platform with Mark Russinovichhttps://channel9.msdn.com/Events/Build/2015/3-618

Microsoft Azure Service Fabric Architecturehttps://channel9.msdn.com/Events/Build/2015/2-640

Deep Dive into Microsoft Azure Service Fabric Reliable Actorshttps://channel9.msdn.com/Events/Build/2015/2-66

2016/5/21 kyrt inc

Page 69: 祝GA、 Service Fabric 概要

69

Service Fabric documentationhttp://azure.microsoft.com/en-us/documentation/services/service-fabric/

BUILD 2015, The Next Generation of Azure Compute Platform with Mark Russinovichhttps://channel9.msdn.com/Events/Build/2015/3-618

Microsoft Azure Service Fabric Architecturehttps://channel9.msdn.com/Events/Build/2015/2-640

Deep Dive into Microsoft Azure Service Fabric Reliable Actorshttps://channel9.msdn.com/Events/Build/2015/2-66

2016/5/21 kyrt inc

Page 70: 祝GA、 Service Fabric 概要

70

Building MicroServices with Service Fabrichttps://channel9.msdn.com/events/Build/2016/T693

Service Fabric Deploying and Managing Applications with Service Fabrichttps://channel9.msdn.com/Events/Build/2016/P431

Azure Service Fabric for Developershttps://channel9.msdn.com/Events/Build/2016/B874

kyrt inc2016/5/21

Page 71: 祝GA、 Service Fabric 概要

71

大規模分散システムの現在 – Twitter, 丸山不二夫⇨ http://www.slideshare.net/maruyama097

Evolution of The Twitter Stack, Chris Aniszczyk⇨ http://www.slideshare.net/caniszczyk/twitter-opensourcestacklinu

xcon2013 Google が Borg の詳細を公開 ,  Abel Avram

⇨ http://www.infoq.com/jp/news/2015/04/google-borg mesos, omega, borg: a survey,  Andrew Wang

⇨ http://www.umbrant.com/blog/2015/mesos_omega_borg_survey.html

YARN の紹介⇨ http://www.ibm.com/developerworks/jp/analytics/library/bd-yarn-in

tro/2016/5/21 kyrt inc