Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

祝GA、 Service Fabric 概要

3,163 views

Published on

C#ユーザー会 //build/ 2016振り返り 勉強会
Service Fabric概要、背景、概念的なことを中心としています。

Published in: Technology
  • Be the first to comment

祝GA、 Service Fabric 概要

  1. 1. Azure Service Fabric 概要 Takekazu Omi takekazu.omi@kyrt.in 2016/5/21 R.1.0 C#ユーザー会 //build/ 2016振り返り 勉強会
  2. 2. 自己紹介 近江 武一 JAZUG Azure Storage 担当(自称) Microsoft MVP for Azure http://www.slideshare.net/takekazuomi kyrt inc 2 kyrt.in github.com/takekazuom i white paper 監訳 2016/5/21
  3. 3. はじめに Service Fabric の背景 2016/5/21 kyrt inc 3
  4. 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 4
  5. 5. Service Fabric 概要 分散型システム プラットフォーム 1. スケーラブル 2. 信頼性が高く 3. 管理しやすい ‘エンタープライズ クラスの Tier-1 クラウド スケール サービスを構築、 管理のための次世代のミドルウェア プラットフォーム’ 2016/5/21 https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-overview/ kyrt inc 5
  6. 6. Battle-hardened for over 5 years Azure 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 6
  7. 7. Divide and rule Azure そのものが突きつけられた課題 ⇨5年ほど前から社内利用 分割して統治せよ ⇨モノリシックな大きなものではなく、分割された複 数のサービスの組み合わせでアプリケーションを 作成 kyrt inc 72016/5/21
  8. 8. Applications composed of microservices 2016/5/21 https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-overview/ kyrt inc 8
  9. 9. 事例 2016/5/21 kyrt inc 9
  10. 10. Regional Network Manager Microservices kyrt inc 102016/5/21 ONS 2015: Wednesday Keynote - Mark Russinovich https://youtu.be/RffHFIhg5Sc
  11. 11. 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
  12. 12. Service Fabric Cluster Age of Ascent Architecture Spatial (In Space) Gaia (stateless) Trade Inventory Production CommsNavigation PlayerAccount CrewCommerce Alliance Avatar (stateless) AI Events web browser or device game function services CDN aggregate services physics service routing services https://channel9.msdn.com/Events/Build/2016/B874
  13. 13. Cloud Scale Application 2016/5/21 kyrt inc 13
  14. 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 inc 142016/5/21
  15. 15. 運用の自動化:クラウドアプリケーションの重要な課題 プロビジョニング デプロイ 監視 アップグレード 削除 2016/5/21 Service Fabric プラットフォーム kyrt inc 15
  16. 16. kyrt inc 162016/5/21
  17. 17. Microservices はじめに kyrt inc 172016/5/21
  18. 18. マイクロサービスとは  全ての機能を盛り込んだ モノリシック(一枚岩の) なアプリケーションではな く、分割された複数の サービスの組み合わせ でアプリケーションを作る アーキテクチャ  James Lewis が書いた Martin Fowler 氏の Blog (日本語訳)で有名に 2016/5/21 kyrt inc 18
  19. 19. Microservices 論点 by James Lewis 1.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 inc 192016/5/21 コンウェイの法則 「システムを設計する組織は、その構造をそっくりまねた構造の設 計を生み出してしまう」 (原文: "Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.")
  20. 20. 超解説 1. アプリケーションを 小さなService群の組み合わせで構築 2. Serviceは個別にデプロイできるような単位がいい 3. Service間はhttpのような軽量なプロトコルにしてSmart Endpointの実 装にしよう 4. Serviceはビジネス機能の粒度にして、チームを構成しよう 5. Serviceが異なる言語で記述されたり別のデータストレージ技術を使う はありだ 6. インフラの自動化でMicroservicesの構築、デプロイ、運用の複雑さを 減少しよう kyrt inc 202016/5/21 Microservice は、ソフトウェアのコンポーネント化、コンポーネントの 組み合わせによるアプリケーションの構築という話しの正常進化
  21. 21. Martin Fowler氏の問題提起 Microservice の導入は根本的な複 雑さをシステムにもたらし、生産性を 低下させる。 ターゲットシステムの複雑さがある値 を超えた場合にだけ、 Microservice にはメリットがある。 右図:縦軸が生産性、横軸が複雑さ 参照:MicroservicePremium ⇨ http://martinfowler.com/bliki/Mic roservicePremium.html kyrt inc 212016/5/21
  22. 22. Service Fabric の目標 A:Microserviceのもたらす生産性の低下を小さく B: 生産性の低下と複雑さの関係のスレッショルドを左へ C: Microserviceのもたらす生産性の向上を大きく kyrt inc 222016/5/21 生産性 生産性 システムの複雑さ システムの複雑さ AA B B C C Bを左へ
  23. 23. Service Fabric Cluster Service Fabric は Cluster を構成する 2016/5/21 kyrt inc 23
  24. 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 24
  25. 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 25
  26. 26. Static Partitioning 問題  このようにRoleの分割が静的に行われているのを、Static Partitioning (静的分割?)と言う  Static Partitioning は、Role を増やせば、増すほど扱いづら くなります。ワークロードを事前に予測することが難しい場合 もあり、リソースの利用効率という観点からはムダが生じや すい仕組み  A:複数のRoleをNodeに入れてしまえばいいのでは? Service Fabricでは、Nodeが複数のServiceをホストする 2016/5/21 kyrt inc 26
  27. 27. Cluster: System View 2016/5/21 Failover manager Cluster manager Naming Image store System Services kyrt inc 27
  28. 28. Compute Partitioning 複数のNodeから構成されたClusterを使い。 Node内に複数のサービスをホスト出来るように することで、高密度で柔軟な構成を取ることが可 能になりました CDP:Compute Partitioning Guidance https://msdn.microsoft.com/en- us/library/dn589773.aspx kyrt inc 282016/5/21
  29. 29. Sam Newman 著、佐藤 直 生 監訳、木下 哲也訳 2016年02月 発行 ISBN978-4-87311-760-7 原書:Building Microservices https://www.oreilly.co.jp/books/9784873117607/ kyrt inc 292016/5/21
  30. 30. kyrt inc 302016/5/21
  31. 31. IaaSとPaaSの統合 2016/5/21 kyrt inc 31
  32. 32. 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 Management Federation / Reliability Management Testability Hosting Communication Application model ZK
  33. 33. no lock-in to a specific cloud https://msdn.microsoft.com/en-us/magazine/mt595752.aspx 2016/5/21 kyrt inc 33
  34. 34. Azureの次世代 PaaS Resource Manager Template ⇨宣言的なリソース管理 VM Scale Set ⇨Container サポート Service Fabric ⇨Open - Windows/Linux, C#/Java サポート kyrt inc 342016/5/21 ONS 2015: Wednesday Keynote - Mark Russinovich https://youtu.be/RffHFIhg5Sc BUILD 2015: 3-618 The Next Generation of Azure Compute Platform with Mark Russinovich
  35. 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 35
  36. 36. ARM template kyrt inc 362016/5/21
  37. 37. 解説 1. 基本は、LB + VM Scale Set + Cluster 2. Cluster はクラスタの定義 ⇨ Diagnostics Storage Account の設定 ⇨ 管理用の EndPoint 定義 など、Service Fabric のサブシステムで使う情報を定義 3. 各ノードで動作するService Fabric のサブ システム は、VM Extension で導入 kyrt inc 372016/5/21
  38. 38. Service Fabric Explorer kyrt inc 382016/5/21
  39. 39. Application Model アプリケーションモデル 2016/5/21 kyrt inc 39
  40. 40. Application Model 図 kyrt inc 402016/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. 41. Application SFでは、Applicationは複数のServiceで構成される Applicationの全体の構成内容は、 ApplicationManifest.xml に定義 ⇨ ApplicationのType、Version ⇨ パーテーション分割スキーマ、インスタンス数、リプリケー ション係数、配置等 ⇨ 含まれるServiceの情報 kyrt inc 412016/5/21
  42. 42. Service  Serviceの構成内容は、 ServiceManifest.xmlに定義 ⇨ ServiceのType、Version ⇨ ヘルスチェックの設定、負荷分散のメトリック等のservice meta dataを指定 ⇨ SetupEntryPoint 、StartupTask的なやつ  Serviceは、Code、Data、Configで構成され、Codeは processにホストされる  Serverが複数partitionで構成される場合は、別ノードへ展開 される kyrt inc 422016/5/21
  43. 43. kyrt inc 432016/5/21 Node 1
  44. 44. Nodeでの実行 Clusterは複数のNode構成されApplication がClusterにDeplyされると各ノードでCodeが 実行される Node内では、複数のApplicationが動作する この例では、Node0では、MyAppのActorの プライマリ、WordCountの1つ目と2つ目の partitionのセカンダリが動いている kyrt inc 442016/5/21
  45. 45. Serverの配置 MyAp p.A MyAp p.S WC.S P1 WC.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 inc 452016/5/21
  46. 46. Service Fabric Programing model プログラミングモデル概要、Stateful Service と、 Partitioning 2016/5/21 kyrt inc 46
  47. 47. 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. 48. プログラミングモデル kyrt inc 482016/5/21 reliable service reliable actor guest executable stateless service stateful service ※赤枠がステートフル
  49. 49. Framework の選択 RELIABLE ACTORS APIS RELIABLE SERVICES APIS 問題領域が数多くの独立な状態とロジッ クで構成 複数のコンポーネントの間のロジックを自 分で制御したい 外部との対話をあまり必要としない single thread のオブジェクトである reliable collections (like .NET Dictionary and Queue) の保存は自分で 管理したい platform が通信を管理 通信やpartitioning schemeの管理、通 信か自分で行いたい kyrt inc 492016/5/21 https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-choose-framework/
  50. 50. Stateful and Stateless Nodeへの状態の保存、レイテンシーの向上 2016/5/21 kyrt inc 50
  51. 51. 概要 Stateful Service は、Reliable Collection で実装 Actor は、 基本Stateful前提(属性でコントロールでき る) Reliable Collection は、レイテンシーの向上に貢献 CDP: Caching Guidance の別解 https://msdn.microsoft.com/en-us/library/dn589802.aspx kyrt inc 512016/5/21 Service Fabric Application Scenarios https://azure.microsoft.com/en-gb/documentation/articles/service-fabric-application-scenarios/
  52. 52. ☆Reliable Collection 重要:状態の永続化に利用 kyrt inc 522016/5/21 Jazug Tokyo Night 第1回 Azure Fabric Service Reliable Collection の紹介 http://www.slideshare.net/takekazuomi/azure-fabric-service-reliable-collection
  53. 53. 基本的な構造 状態をローカルでサービス インスタンスに格納、Node間レプリケーションで 高い可用性を実現  読み取りはローカルで実行され、待機時間が短く高スループット  書き込みはネットワーク IO が最小となり、待機時間が短く高スループット kyrt inc 532016/5/21 https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-reliable-services-reliable-collections/
  54. 54. stateless services + external store kyrt inc 542016/5/21
  55. 55. stateful services kyrt inc 552016/5/21
  56. 56. Partitioning スケーラブルなサービスの構築の中心的なパターン 2016/5/21 kyrt inc 56 https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-concepts-partitioning/
  57. 57. パーティション分割 パーティション分割は、スケーラブルなサービス の構築の中心的なパターン パーティション分割とは、広義では状態 (データ) の分割に関する概念 Scalable ⇨CDP:Data Partitioning Guidance https://msdn.microsoft.com/en- us/library/dn589795.aspx kyrt inc 572016/5/21
  58. 58. Stateful Service のパーティション分割 ApplicationManifest.xml ファイルに、パー ティション定義を記述 パーティションのルーティングはService Fabric のランタイムで提供 (ServicePartitionResolver.GetDefault()) 接続先のNodeと該当データの割当は Service Fabric のランタイムで管理 kyrt inc 582016/5/21
  59. 59. Actor Actor 2016/5/21 kyrt inc 59
  60. 60. 続きは、Tokyo Jazug Nightで 第2回 Tokyo Jazug Night 2016-06-16(木)19:00 - 21:30 https://jazug.doorkeeper.jp/events/45265 kyrt inc 602016/5/21
  61. 61. Actor とは何か?  Carl Hewitt 1973 https://ja.wikipedia.org/wiki/%E3%82%A2%E3% 82%AF%E3%82%BF%E3%83%BC%E3%83%A 2%E3%83%87%E3%83%AB  Isolated components( single-thread )  code とstate をencapsulate  Asynchronous communication kyrt inc 612016/5/21
  62. 62. Service Fabric に置けるActor StatefulとStatelessの2種類 ActorProxy経由の簡単な呼び出し kyrt inc 622016/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. 63. Concurrency  logical context は、単 一のthread で実行 (STA)  Actors runtime allows reentrancy by default  state の復元、保存は 自動 https://azure.microsoft.com/e n- gb/documentation/articles/ser vice-fabric-reliable-actors- introduction/ kyrt inc 632016/5/21
  64. 64. 終 kyrt inc 642016/5/21
  65. 65. kyrt inc 652016/5/21
  66. 66. 参考資料 2016/5/21 kyrt inc 66
  67. 67. Service Fabric documentation http://azure.microsoft.com/en- us/documentation/services/service-fabric/ BUILD 2015, The Next Generation of Azure Compute Platform with Mark Russinovich https://channel9.msdn.com/Events/Build/2015/3-618 Microsoft Azure Service Fabric Architecture https://channel9.msdn.com/Events/Build/2015/2-640 Deep Dive into Microsoft Azure Service Fabric Reliable Actors https://channel9.msdn.com/Events/Build/2015/2-66 2016/5/21 kyrt inc 67
  68. 68. Service Fabric documentation http://azure.microsoft.com/en- us/documentation/services/service-fabric/ BUILD 2015, The Next Generation of Azure Compute Platform with Mark Russinovich https://channel9.msdn.com/Events/Build/2015/3-618 Microsoft Azure Service Fabric Architecture https://channel9.msdn.com/Events/Build/2015/2-640 Deep Dive into Microsoft Azure Service Fabric Reliable Actors https://channel9.msdn.com/Events/Build/2015/2-66 2016/5/21 kyrt inc 68
  69. 69. Service Fabric documentation http://azure.microsoft.com/en- us/documentation/services/service-fabric/ BUILD 2015, The Next Generation of Azure Compute Platform with Mark Russinovich https://channel9.msdn.com/Events/Build/2015/3-618 Microsoft Azure Service Fabric Architecture https://channel9.msdn.com/Events/Build/2015/2-640 Deep Dive into Microsoft Azure Service Fabric Reliable Actors https://channel9.msdn.com/Events/Build/2015/2-66 2016/5/21 kyrt inc 69
  70. 70. Building MicroServices with Service Fabric https://channel9.msdn.com/events/Build/2016/T69 3 Service Fabric Deploying and Managing Applications with Service Fabric https://channel9.msdn.com/Events/Build/2016/ P431 Azure Service Fabric for Developers https://channel9.msdn.com/Events/Build/2016/ B874 kyrt inc 702016/5/21
  71. 71.  大規模分散システムの現在 – Twitter, 丸山不二夫 ⇨ http://www.slideshare.net/maruyama097  Evolution of The Twitter Stack, Chris Aniszczyk ⇨ http://www.slideshare.net/caniszczyk/twitter- opensourcestacklinuxcon2013  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-intro/ 2016/5/21 kyrt inc 71

×