servcie fabric and cloud design pattern
TRANSCRIPT
自己紹介近江 武一JAZUG Azure Storage 担当(自称)Microsoft MVP for Azure http://www.slideshare.net/takekazuomi
kyrt inc 2
kyrt.in
github.com/takekazuomi
white paper
監訳
2016/4/16
3
はじめにService Fabric の背景
2016/4/16 kyrt inc
4
Service Fabric の全体を通して話をするには、1 時間では短すぎるので、今回はアーキテクチャ関連にフォーカスを置いて話します
間にちょくちょく、 Azure クラウドデザインパターンで話題に上がっていた課題をService Fabric がどのように取り組んでいるのかを挟んで行きます
今後数回に分けて勉強会を企画していますkyrt inc2016/4/16
kyrt inc 5
CDP 本 以下、 CDP のリンク先は英語ですが、翻訳あります Microsoft patterns & practices Cloud Design Patterns: Prescriptive
Architecture Guidance for Cloud Applications⇨ http://msdn.microsoft.com/en-us/library/dn56809
9.aspx
クラウドデザインパターン Azure を例としたクラウドアプリケーション設計の手引き⇨ http://ec.nikkeibp.co.jp/item/books/P98330.html⇨ 日経 BP
2016/4/16
6
Service Fabric とは( 140 文字で)分散システム プラットフォーム
スケーラブルで高信頼性、マイクロサービスの簡単なパッケージ化、デプロイ、管理を実現
次世代のミドルウェア プラットフォームエンタープライズ クラスの Tier-1 クラウド スケール アプリケーションを構築管理
kyrt inc2016/4/16
7
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
kyrt inc2016/4/16
出典 : BUILD 2015 2-640 Microsoft Azure Service Fabric Architecture
8
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/4/16
http://blogs.msdn.com/b/windowsazurej/archive/2015/04/23/announcing-azure-service-fabric-reducing-complexity-in-a-hyper-scale-world.aspx
kyrt inc
9
Divide and rule
Azure そのものが突きつけられた課題⇨5年ほど前から社内利用
分割して統治せよ⇨モノリシックな大きなものではなく、分割された複数のサービスの組み合わせでアプリケーションを作成
kyrt inc2016/4/16
10
Regional Network Manager Microservices
kyrt inc2016/4/16ONS 2015: Wednesday Keynote - Mark Russinovich https://youtu.be/RffHFIhg5Sc
11
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
⇨ データとコードを近くに配置⇨ CDP:Caching Guidance
https://msdn.microsoft.com/en-us/library/dn589802.aspx 運用の自動化(後述)
kyrt inc2016/4/16
12
クラウド アプリケーションの重要な課題プロビジョニングデプロイ監視アップグレード削除
2016/4/16
Service Fabric プラットフォーム
kyrt inc
13
Service Fabric とはMiroservice プラットフォーム
⇨アプリケーションの開発、配置、管理IaaS と PaaS の統合
⇨クラスター リソース分散システム実行環境
⇨レイテンシーの向上⇨データのパーティショニング
kyrt inc2016/4/16
14kyrt inc2016/4/16
15
Microservicesはじめに
kyrt inc2016/4/16
16
マイクロサービスとは 全ての機能を盛り込んだモノリシック(一枚岩の)なアプリケーションではなく、分割された複数のサービスの組み合わせでアプリケーションを作るアーキテクチャ James Lewis が書いた
Martin Fowler 氏の Blog (日本語訳) で有名に2016/4/16 kyrt inc
17
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/4/16
コンウェイの法則「システムを設計する組織は、その構造をそっくりまねた構造の設計を生み出してしまう」 (原文 : "Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.")
18
超解説1. アプリケーションを 小さなService群の組み合わせで構築2. Serviceは個別にデプロイできるような単位がいい3. Service間はhttp のような軽量なプロトコルにしてSmart Endpointの実装にしよう4. Serviceはビジネス機能の粒度にして、チームを構成しよう5. Serviceが異なる言語で記述されたり別のデータストレージ技術を使うはありだ6. インフラの自動化でMicroservices の構築、デプロイ、運用の複雑さを減少しよう
kyrt inc2016/4/16
Microservice は、ソフトウェアのコンポーネント化、コンポーネントの組み合わせによるアプリケーションの構築という話しの正常進化
19
Martin Fowler 氏の問題提起Microservice の導入は根本的な複雑さをシステムにもたらし、生産性を低下させる。ターゲットシステムの複雑さがある値を超えた場合にだけ、 Microservice にはメリットがある。右図:縦軸が生産性、横軸が複雑さ参照:MicroservicePremium
⇨ http://martinfowler.com/bliki/MicroservicePremium.html
kyrt inc2016/4/16
20
Service Fabric の目標
A:Microservice のもたらす生産性の低下を小さくB: 生産性の低下と複雑さの関係のスレッショルドを左へC: Microservice のもたらす生産性の向上を大きく
kyrt inc2016/4/16
生産性
生産性
システムの複雑さ システムの複雑さ
AA
BB
CC
21
Service Fabric Cluster
2016/4/16 kyrt inc
22
Cloud Service (PaaSv1)モダンなクラウドアプリケーションでは、高可用、スケーラブルを実現するために、「Immutable InfrastructureとDisposable Components」という戦略を取ります。 Azure だと、 Web/Worker Role で実装される Cloud Service がそれです。この戦略では、各 Node は状態を持たず、 Node障害の場合に容易に代替 Node を割り当てて対応でき、処理能力が足りない場合は Node を追加することでスケールすることができます。PaaSv1 では、全ての Role は仮想マシンの専有配置です。 (Node=Instance)そのため、 OS の設定やランタイムのインストールなど細かいことを自由にできるという大きなメリットがありますが「もう少し配置に自由度が欲しいよね」というのが今回の話しです。
2016/4/16 kyrt inc
23
例:Availability
可用性を保った構成とするためには、最低2つのNode に配置する必要があります
その結果、 Role の粒度を小さくすると Node(=インスタンス ) の数が増えますCDP: Compute Partitioning Guidance で言う、 logical decomposition と、 physical partition の考慮事項が複雑になります
⇨ https://msdn.microsoft.com/en-us/library/dn589773.aspx
2016/4/16 kyrt inc
24
Static Partitioning 問題このように Role の分割が静的に行われているのを、
Static Partitioning (静的分割?)と言います。Static Partitioning は、 Role を増やせば、増すほど扱いづらくなります。ワークロードを事前に予測することが難しい場合もあり、リソースの利用効率という観点からはムダが生じやすい仕組みです。A: 複数の Role を Node に入れてしまえばいいのでは?
2016/4/16 kyrt inc
25
Cluster: System View
2016/4/16
Failovermanager
Clustermanager
Naming
Image store
System Services
kyrt inc
26
Compute Partitioning
複数の Node から構成された Cluster を使い。 Node 内に複数のサービスをホスト出来るようにすることで、高密度で柔軟な構成を取ることが可能になりましたCDP: Compute Partitioning Guidance
https://msdn.microsoft.com/en-us/library/dn589773.aspx
kyrt inc2016/4/16
27
Sam Newman 著、佐藤 直生 監訳、木下 哲也訳2016 年 02月 発行ISBN978-4-87311-760-7原書 :Building Microserviceshttps://www.oreilly.co.jp/books/9784873117607/
kyrt inc2016/4/16
28kyrt inc2016/4/16
29
IaaSと PaaSの統合2016/4/16 kyrt inc
VMs and VM Scale Sets
Azure Public CloudAzure-Consistent Private Cloud
VM Extensions
SCALR, RightScale, Mesos, Swarm
Service Fabric (VMs and Containers)
BatchApp Service
MediaWeb Apps
MobileApps
Apprenda, CloudFoundryJelastic, Marathon
Infrastructure
IaaS and IaaS+
General Compute
PaaS
Vertical compute PaaS
Open Choice at Every Layer
Cluster Orchestration
参照: https://channel9.msdn.com/Events/Build/2015/3-618
31
Azure の次世代 PaaS
Resource Manager Template⇨宣言的なリソース管理
VM Scale Set⇨Container サポート
Service Fabric⇨Open - Windows/Linux, C#/Java サポート
kyrt inc2016/4/16
ONS 2015: Wednesday Keynote - Mark Russinovich https://youtu.be/RffHFIhg5ScBUILD 2015: 3-618 The Next Generation of Azure Compute Platform with Mark Russinovich
32
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/4/16 kyrt inc
Service Fabric Cluster の構成Demo
kyrt inc 33
34
ARM template
kyrt inc2016/4/16
35
解説1. 基本は、 LB + VM Scale Set + Cluster2. Cluster はクラスタの定義
⇨ Diagnostics Storage Account の設定⇨ 管理用の EndPoint 定義 など、 Service Fabric のサブシステムで使う情報を定義3. 各ノードで動作する Service Fabric のサブシステム は、 VM Extension で導入
kyrt inc2016/4/16
36
Service Fabric Explorer
kyrt inc2016/4/16
37
Service Fabric Programing modelプログラミングモデル概要、 Stateful Service と、 Partitioning
2016/4/16 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
39
Service Fabric API
APIは 2つ1. RELIABLE ACTORS APIコンカレンシー、ステートの保存などをライブラリ側で実装
2. RELIABLE SERVICES APIやること多いけど、 ASP.NETなどを動かすには便利
kyrt inc2016/4/16
40
Framework の選択RELIABLE ACTORS APIS RELIABLE SERVICES APIS
問題領域が数多くの独立な状態とロジックで構成
複数のコンポーネントの間のロジックを自分で制御したい
外部との対話をあまり必要としない single thread のオブジェクトである
reliable collections (like .NET Dictionary and Queue) の保存は自分で管理したい
platform が通信を管理 通信や partitioning scheme の管理、通信か自分で行いたい
kyrt inc2016/4/16
https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-choose-framework/
41
Stateful and StatelessNodeへの状態の保存、レイテンシーの向上
2016/4/16 kyrt inc
kyrt inc 42
概要Stateful Service は、 Reliable Collection で実装Actor は、 基本 Stateful 前提(属性でコントロールできる)Reliable Collection は、レイテンシーの向上に貢献CDP: Caching Guidance の別解
https://msdn.microsoft.com/en-us/library/dn589802.aspx
2016/4/16
Service Fabric Application Scenarios https://azure.microsoft.com/en-gb/documentation/articles/service-fabric-application-scenarios/
43
☆Reliable Collection
重要:状態の永続化に利用kyrt inc2016/4/16
44
基本的な構造状態をローカルでサービス インスタンスに格納、 Node 間レプリケーションで高い可用性を実現 読み取りはローカルで実行され、待機時間が短く高スループット 書き込みはネットワーク IO が最小となり、待機時間が短く高スループット
kyrt inc2016/4/16
https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-reliable-services-reliable-collections/
45
stateless services + external store
kyrt inc2016/4/16
46
stateful services
kyrt inc2016/4/16
47
Partitioningスケーラブルなサービスの構築の中心的なパターン
2016/4/16 kyrt inc
https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-concepts-partitioning/
48
パーティション分割パーティション分割は、スケーラブルなサービスの構築の中心的なパターンパーティション分割とは、広義では状態
( データ ) の分割に関する概念Scalable
⇨CDP:Data Partitioning Guidancehttps://msdn.microsoft.com/en-us/library/dn589795.aspx
kyrt inc2016/4/16
49
Stateful Service のパーティション分割ApplicationManifest.xml ファイルに、パーティション定義を記述パーティションのルーティングは Service
Fabric のランタイムで提供( ServicePartitionResolver.GetDefault() )接続先の Node と該当データの割当は
Service Fabric のランタイムで管理kyrt inc2016/4/16
50
たぶんここまで終kyrt inc2016/4/16
51kyrt inc2016/4/16
52
Actor
2016/4/16 kyrt inc
53
Actor とは何か?Carl Hewitt 1973Isolated components
⇨single-thread code と state を encapsulateAsynchronous communication
kyrt inc2016/4/16
54
Service Fabric に置ける Actor
Stateful と Stateless の 2種類ActorProxy 経由の簡単な呼び出し
kyrt inc2016/4/16
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
55
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/4/16
56kyrt inc2016/4/16
57
おまけApache Mesos, Hadoop YARN, Spark
2016/4/16 kyrt inc
58
Cluster を用意して、その上でアプリケーションを高密度で走らせるという方法は、 Service Fabric だけでなく、最近のトレンドプロセスの方が仮想化より軽い単一テナントなら単純にアイソレーションより効率を求めても良いAuto Scale で仮想マシンを上げるのは、レイテンシーが大きい諸々あって、あちこちで似たようなことをやっている
kyrt inc2016/4/16
59
Apache Mesos
2016/4/16 kyrt inc
60
Apache Mesos Apache Mesos は、 twitter 社などで使われている Cluster
Manager です。Service Fabric と似た位置に属する OSS のプロダクトです。BUILD 2015/3-612では、 Cluster Orchestration で並んでました。今回の資料では、 Cluster Manager と呼んでます。 ちょっと脱線して、 「Mesos 使うと Static Partitioning から開放されるぜ」という話しが面白かったので紹介。 Building and Deploying Application to Apache Mesos
⇨ 「Static Partition IS BAD 、 Operating System === Datacenter 、 Mesos => data center の kernelだ」というようなことが書いてあります。
⇨ http://www.slideshare.net/charmalloc/buildingdeployingapplicationsmesos
2016/4/16 kyrt inc
VMs and VM Scale Sets
Azure Public CloudAzure-Consistent Private Cloud
VM Extensions
SCALR, RightScale, Mesos, Swarm
Service Fabric (VMs and Containers)
BatchApp Service
MediaWeb Apps
MobileApps
Apprenda, CloudFoundryJelastic, Marathon
Infrastructure
IaaS and IaaS+
General Compute
PaaS
Vertical compute PaaS
Open Choice at Every Layer
Cluster Orchestration
参照: https://channel9.msdn.com/Events/Build/2015/3-618
62
Mesos Overview Mesos は、 master daemon と、各
cluster node 上で実行される slave daemon 、およびこれらの slave 上で task を実行する Mesos の application(framework とも呼ばれます)で構成
cluster node は、 containerizer で動作し、linux の control cgroups や namespaces で分離されたもので、 Docker で分離されたものが用意。 (Mesos containerizer , Docker containerizer)
slave のリソース状況に合わせて、 複数のアプリケーションを node に配置することができ、高密度配置が可能http://mesos.apache.org/documentation/latest/mesos-architecture/
2016/4/16 kyrt inc
63
Hadoop YARNHadoop 生まれの Resource Manager for Cluser
2016/4/16 kyrt inc
64
YARN - Yet-Another-Resource-Negotiator
2016/4/16 kyrt inc
65
YARN (2) 大規模な Cluster では、 Job Tracker がボトルネックになる 任意の分散処理フレームワークやアプリケーションの作成を容易にする新しいフレームワーク ( MR専用ではない、 Spark でも利用可) YARN は、汎用的な分散アプリケーションの開発や、そのようなアプリケーションからの(メモリや CPU といった)リソース要求のハンドリング、スケジューリングを行い、実行を監督するためのデーモンと
API を提供 YARN の紹介
⇨ http://www.ibm.com/developerworks/jp/analytics/library/bd-yarn-intro/ MR2 と YARN の手短な解説
⇨ http://www.cloudera.co.jp/blog/mr2-and-yarn-briefly-explained.html
2016/4/16 kyrt inc
662016/4/16 kyrt inc
67
Apache SparkCluster Manager 上で動く OSS
2016/4/16 kyrt inc
68
Spark + Mesos 、 YARN の利用Spark は、 Mesos でも YARN でも動く( Cluster Manager と呼ばれる) Standalone
⇨ a simple cluster manager included with Spark that makes it easy to set up a cluster.
Apache Mesos⇨ 汎用の cluster manager 、 Hadoop MapReduce and service applications.
Hadoop YARN⇨ the resource manager in Hadoop 2.
Amazon EC2 ⇨ In addition, Spark’s EC2 launch scripts make it easy to launch a standalone
cluster on Amazon EC2.
2016/4/16 kyrt inc
69
Apache Spark OverviewSpark には、アプリケーションを cluster 上で動かすために、 Cluster Manger というコンポーネントがある
2016/4/16
http://spark.apache.org/docs/latest/cluster-overview.html
kyrt inc
70
Cluster Manger
Cluster から必要な計算リソースを割当⇨CPU(core) 、 memory
クラスター上で実行されるタスクの調整⇨タスクの開始指示、タスクの実行のモニター、失敗したタスクの再開
同一 Cluster 上での複数のアプリケーション動作2016/4/16 kyrt inc
712016/4/16
終kyrt inc
72
参考資料2016/4/16 kyrt inc
73
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/4/16 kyrt inc
74
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/4/16 kyrt inc
75
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/4/16 kyrt inc
76
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/4/16
77
大規模分散システムの現在 – 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/4/16 kyrt inc