祝ga、 service fabric 概要
TRANSCRIPT
Azure Service Fabric 概要Takekazu Omi
2016/5/21 R.1.0
C# ユーザー会 //build/ 2016 振り返り 勉強会
自己紹介近江 武一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
3
はじめにService Fabric の背景
2016/5/21 kyrt inc
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
5
Service Fabric 概要分散型システム プラットフォーム1. スケーラブル2. 信頼性が高く3. 管理しやすい‘ エンタープライズ クラスの Tier-1 クラウド スケール サービスを構築、管理のための次世代のミドルウェア プラットフォーム’
2016/5/21
https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-overview/
kyrt inc
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
7
Divide and rule
Azure そのものが突きつけられた課題⇨5年ほど前から社内利用
分割して統治せよ⇨モノリシックな大きなものではなく、分割された複数のサービスの組み合わせでアプリケーションを作成
kyrt inc2016/5/21
8
Applications composed of microservices
2016/5/21https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-overview/
kyrt inc
9
事例2016/5/21 kyrt inc
10
Regional Network Manager Microservices
kyrt inc2016/5/21ONS 2015: Wednesday Keynote - Mark Russinovich https://youtu.be/RffHFIhg5Sc
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
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
13
Cloud Scale Application
2016/5/21 kyrt inc
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
15
運用の自動化 : クラウド アプリケーションの重要な課題プロビジョニングデプロイ監視アップグレード削除
2016/5/21
Service Fabric プラットフォーム
kyrt inc
16kyrt inc2016/5/21
17
Microservicesはじめに
kyrt inc2016/5/21
18
マイクロサービスとは 全ての機能を盛り込んだモノリシック(一枚岩の)なアプリケーションではなく、分割された複数のサービスの組み合わせでアプリケーションを作るアーキテクチャ James Lewis が書いた
Martin Fowler 氏の Blog (日本語訳) で有名に2016/5/21 kyrt inc
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.")
20
超解説1. アプリケーションを 小さなService群の組み合わせで構築2. Serviceは個別にデプロイできるような単位がいい3. Service間はhttp のような軽量なプロトコルにしてSmart Endpointの実装にしよう4. Serviceはビジネス機能の粒度にして、チームを構成しよう5. Serviceが異なる言語で記述されたり別のデータストレージ技術を使うはありだ6. インフラの自動化でMicroservices の構築、デプロイ、運用の複雑さを減少しよう
kyrt inc2016/5/21
Microservice は、ソフトウェアのコンポーネント化、コンポーネントの組み合わせによるアプリケーションの構築という話しの正常進化
21
Martin Fowler 氏の問題提起Microservice の導入は根本的な複雑さをシステムにもたらし、生産性を低下させる。ターゲットシステムの複雑さがある値を超えた場合にだけ、 Microservice にはメリットがある。右図:縦軸が生産性、横軸が複雑さ参照:MicroservicePremium
⇨ http://martinfowler.com/bliki/MicroservicePremium.html
kyrt inc2016/5/21
22
Service Fabric の目標
A:Microservice のもたらす生産性の低下を小さくB: 生産性の低下と複雑さの関係のスレッショルドを左へC: Microservice のもたらす生産性の向上を大きく
kyrt inc2016/5/21
生産性
生産性
システムの複雑さ システムの複雑さ
AA
BB
CC
B を左へ
23
Service Fabric ClusterService Fabric は Cluster を構成する
2016/5/21 kyrt inc
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
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
26
Static Partitioning 問題このように Role の分割が静的に行われているのを、 Static Partitioning (静的分割?)と言う Static Partitioning は、 Role を増やせば、増すほど扱いづらくなります。ワークロードを事前に予測することが難しい場合もあり、リソースの利用効率という観点からはムダが生じやすい仕組み A: 複数の Role を Node に入れてしまえばいいのでは?
Service Fabric では、 Node が複数の Service をホストする2016/5/21 kyrt inc
27
Cluster: System View
2016/5/21
Failovermanager
Clustermanager
Naming
Image store
System Services
kyrt inc
28
Compute Partitioning
複数の Node から構成された Cluster を使い。 Node 内に複数のサービスをホスト出来るようにすることで、高密度で柔軟な構成を取ることが可能になりましたCDP: Compute Partitioning Guidance
https://msdn.microsoft.com/en-us/library/dn589773.aspx
kyrt inc2016/5/21
29
Sam Newman 著、佐藤 直生 監訳、木下 哲也訳2016 年 02月 発行ISBN978-4-87311-760-7原書 :Building Microserviceshttps://www.oreilly.co.jp/books/9784873117607/
kyrt inc2016/5/21
30kyrt inc2016/5/21
31
IaaSと PaaSの統合2016/5/21 kyrt inc
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
33
no lock-in to a specific cloud
https://msdn.microsoft.com/en-us/magazine/mt595752.aspx
2016/5/21 kyrt inc
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
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
36
ARM template
kyrt inc2016/5/21
37
解説1. 基本は、 LB + VM Scale Set + Cluster2. Cluster はクラスタの定義
⇨ Diagnostics Storage Account の設定⇨ 管理用の EndPoint 定義 など、 Service Fabric のサブシステムで使う情報を定義3. 各ノードで動作する Service Fabric のサブシステム は、 VM Extension で導入
kyrt inc2016/5/21
38
Service Fabric Explorer
kyrt inc2016/5/21
39
Application Modelアプリケーションモデル
2016/5/21 kyrt inc
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/
41
ApplicationSF では、 Application は複数の Service で構成されるApplication の全体の構成内容は、 ApplicationManifest.xml に定義
⇨ Application の Type 、 Version⇨パーテーション分割スキーマ、インスタンス数、リプリケーション係数、配置等⇨含まれる Service の情報
kyrt inc2016/5/21
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
43kyrt inc2016/5/21
Node 1
44
Node での実行Cluster は複数の Node 構成され Applicationが Cluster に Deply されると各ノードで
Code が実行されるNode 内では、複数の Application が動作するこの例では、 Node0 では、 MyApp の Actorのプライマリ、 WordCount の1つ目と 2 つ目の partition のセカンダリが動いている
kyrt inc2016/5/21
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
46
Service Fabric Programing modelプログラミングモデル概要、 Stateful Service と、 Partitioning
2016/5/21 kyrt inc
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
48
プログラミングモデル
kyrt inc2016/5/21
reliable service reliable actor guest executable
stateless service stateful service
※赤枠がステートフル
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/
50
Stateful and StatelessNodeへの状態の保存、レイテンシーの向上
2016/5/21 kyrt inc
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/
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
53
基本的な構造状態をローカルでサービス インスタンスに格納、 Node 間レプリケーションで高い可用性を実現 読み取りはローカルで実行され、待機時間が短く高スループット 書き込みはネットワーク IO が最小となり、待機時間が短く高スループット
kyrt inc2016/5/21
https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-reliable-services-reliable-collections/
54
stateless services + external store
kyrt inc2016/5/21
55
stateful services
kyrt inc2016/5/21
56
Partitioningスケーラブルなサービスの構築の中心的なパターン
2016/5/21 kyrt inc
https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-concepts-partitioning/
57
パーティション分割パーティション分割は、スケーラブルなサービスの構築の中心的なパターンパーティション分割とは、広義では状態
( データ ) の分割に関する概念Scalable
⇨CDP:Data Partitioning Guidancehttps://msdn.microsoft.com/en-us/library/dn589795.aspx
kyrt inc2016/5/21
58
Stateful Service のパーティション分割ApplicationManifest.xml ファイルに、パーティション定義を記述パーティションのルーティングは Service
Fabric のランタイムで提供( ServicePartitionResolver.GetDefault() )接続先の Node と該当データの割当は
Service Fabric のランタイムで管理kyrt inc2016/5/21
59
ActorActor
2016/5/21 kyrt inc
60
続きは、 Tokyo Jazug Night で
第 2 回 Tokyo Jazug Night2016-06-16(木) 19:00 - 21:30https://jazug.doorkeeper.jp/events/45265
kyrt inc2016/5/21
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
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
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
64
終kyrt inc2016/5/21
65kyrt inc2016/5/21
66
参考資料2016/5/21 kyrt inc
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
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
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
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
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