servcie fabric and cloud design pattern

Post on 16-Apr-2017

1.182 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Azure Service Fabric とCloud Design Pattern

Takekazu Omi takekazu.omi@kyrt.in

2016/4/16 R.1.0

自己紹介近江 武一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

top related