Azureでmicroservicesに触れてみる
-
Upload
kazunori-hamamoto -
Category
Technology
-
view
343 -
download
2
Transcript of Azureでmicroservicesに触れてみる
自己紹介
C# / VB.NET / Python / PHP
Microsoft MVP Azure
ウイスキー、日本酒
JAZUG Fukuoka(ふくあず)
Fukuoka.NET(ふくてん)
ラブライブ! - 東條希 推し
濱本 一慶(はまもと かずのり)
@airish9 (修羅イバー)
de:code 2016
SNR-003 - 始めよう! ドメイン駆動設計&マイクロサービス開発~C# とAzure Service Fabric で最高の DDD 開発を~
[NDA]DEV-013 - まだまだ進化が止まらない! 開発者のためのMicrosoft Azure 最新機能
DBP-010 - Using Azure Data Services for Modern Data Applications
DEV-016 - 止まらないサービスを~ マイクロサービスプラットフォーム「Azure Service Fabric」
ARC-009 - RDB 技術者のための NoSQL ガイド
[NDA]CHK-010 - Azure SQL Database: Current and Future
de:code 2016
SNR-009 - Why Red Hat ♥’s Azure
DOO-005 - 裏 Inside Azure ~OSS視点で理解する、Azureのテクノロジー&アーキテクチャー~
DBP-016 - NoSQL in Azure ~ドキュメント指向データベース Azure DocumentDB 徹底解説~
モノリシックとマイクロサービス
モノリシック
一枚岩のシステム
全ての要素が1プロセスに詰め込まれている
機能単位での分割(Web,ビジネス, データ)
スケールする場合は複数のサーバーに配置する
システム単位の変更
モノリシックとマイクロサービス
マイクロサービス
機能を細かいサービスの組み合わせでシステムを作るアーキテクチャ
“マイクロ”≠小さい役割を担うサービスの範囲が”マイクロ”
James Lewis氏のBlog記事で有名になった(記事の日本語訳)
Martin Fowler氏が言うMicroservicesの特性
サービスを通じたコンポーネント化
ビジネス機能ごとにサービスを構築(コンウェイの法則)
プロジェクトではなくプロダクト
スマートなエンドポイントと土管
分散統治
分散データ管理
インフラ自動化
障害のための設計
進化的な設計
Microservicesの導入に関する問題
根本的な複雑さを産み生産性が低下する
システムの複雑さある程度高いと効果が出る
参考 : http://martinfowler.com/bliki/MicroservicePremium.html
生産
性
システムの複雑さ
マイクロサービス
モノリシック
Web Apps
MobileApps
APIManagement
APIApps
LogicApps
NotificationHubs
Content DeliveryNetwork (CDN)
MediaServices
HDInsight MachineLearning
StreamAnalytics
DataFactory
EventHubs
MobileEngagement
BiztalkServices
HybridConnections
ServiceBus
StorageQueues
Backup
StorSimple
SiteRecovery
Import/Export
SQLDatabase
DocumentDB
RedisCache
Search
Tables
SQL DataWarehouse
Azure AD Connect Health
AD PrivilegedIdentity Mngt
OperationalInsights
CloudServices
Batch Remote App
ServiceFabric Visual Studio
ApplicationInsights
Azure SDK
Team Project
ActiveDirectory
Multi-FactorAuthentication
Automation
Portal
Key Vault
Store /Marketplace
VM Image Gallery& VM Depot
SECURITY & MANAGEMENT
PLATFORM SERVICESHYBRID
OPERATIONS
PaaS
マイクロサービス
Web/モバイル
サーバーレス イベント駆動コンピューティング
フルマネージドアプリケーション
複数のサービスから構成された、大規模で可用性の高いアプリ
フレームワーク,ランタイム,アプリケーションモデルに重点を置いたアプリ
Service Fabric
2015/04(Build 2015)
発表・開発者プレビュー
2015/11
Azure Service Fabric Preview
2016/03(Build 2016)
Azure Service Fabric GA – 西日本
Windows Server – Public Preview
Linux(Java SDK, Docker) - Preview
Service Fabricの機能
Application deployment services:
ローリングアップデート&ロールバック
協力なバージョン管理
並列実行サポート
アプリケーションを発見するための名前付け
パーティショニング
負荷分散と配置制約(placement constraints)
一貫性のある状態でのレプリケーション
一貫性のある分散型コレクション
Service Fabricマイクロサービス プラットフォーム
プロビジョニング
デプロイ
監視
クラスター環境
ノーロックイン
ステートフル / ステートレス
マクロサービスアプリケーションAPI
.NET / Java
Service Fabric
Microsoft社内で5年間運用されていた
Service Fabricで運用されているもの
Azure
SQLDatabase / DocumentDB / Power BI / NetworkingEvent Hubs / Service Bus
Intune
Bing Cortana
Skype for Businness
Service Fabricの効果生
産性
システムの複雑さ システムの複雑さ
生産
性A
B B
A
CC
A:Microserviceにかかる生産性の低下を小さくB:Microserviceのメリットが得られる複雑さを小さくC:Microsericeのメリットを大きく
Service Fabric
https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-overview/
No lock-in
https://msdn.microsoft.com/en-us/magazine/mt595752.aspx
Here are some of the benefits of Service Fabric:
Runs on Azure, on-premises or in any cloud. A very important characteristic of
Service Fabric is that you can run it on Azure, but also on-premises, on your own
bare-metal servers or virtual machine (VMs), and even in other third-party hosted clouds. There’s no lock-in to a specific cloud. You could even run a Service
Fabric cluster in Amazon Web Services (AWS).
Supports Windows or Linux. Currently (late 2015) Service Fabric supports Windows,
but it will also support Linux and containers (Windows images and Docker images).
Fully vetted. Service Fabric has been used for several years by Microsoft to power
many of its cloud products.
Service Fabricの構成(Azure)
VM Scale SetService Fabric
Cluster
Public IP
Load Balancer
NetworkVM StorageLog Storage Diagnostic
Storage
Service Fabricの構成(Azure)
LB + VM Scale Set + Cluster
Cluster
監査ログストレージアカウントの指定
管理用エンドポイント
信頼性のランク(プラチナ / ゴールド / シルバー / ブロンズ)
ノードのVM数,耐久性の選択
各ノードはVM Extensionsを利用して連携する https://azure.microsoft.com/ja-jp/documentation/articles/virtual-machines-windows-
extensions-features/
Cloud Serive(PaaSv1)の問題点
Azure Cloud Services (Web Role/Worker Role)
可用性を保つには複数Node(=インスタンス)が必要
Roleを増やすとNodeが増える
Nodeが増えるとリソースに無駄が生じやすい
Static Partitioning問題というらしい
デプロイ更新が遅い
スケーリング / DRが遅い
複数のRoleをNodeに入れてしまえばいいのではないか?Service FabricではNodeに複数Roleを格納する
Cloud Serive(PaaSv1)とService Fabric
Azure Cloud Services (Web Role/Worker Role)
• 各 Node に 1つのRole
• 均一でないワークロード• コンピューティングの密度が低い• デプロイ/更新が遅い• スケーリング/DR (災害復旧) が遅い
Azure Service Fabric(ステートレス/ステートフル/アクター サービス)
• 各 Node に複数のRole
• マイクロサービスの密度が高い• デプロイ/更新が速い• クラスター内でのマイクロサービスの
スケーリングが速い
Application model
https://azure.microsoft.com/en-us/documentation/articles/service-fabric-application-model/
Application
Applicationは複数のServiceから構成される
ApplicationManifest.xmlに定義
アプリケーションが保持するServiceの情報
アプリケーションのTypeとVersion
インスタンス数など
Service
ServiceはCode,Data,Configから構成される
ServiceManifest.xmlに定義
Code(実行可能ファイル)の情報
Configの情報
Data(静的リソース)の情報
サービスのTypeとVersion
サービス用のEndpointに関する情報
<?xml version="1.0" encoding="utf-8"?><ServiceManifest Name="Stateless1Pkg"Version="1.0.0"><ServiceTypes><StatelessServiceType
ServiceTypeName="Stateless1Type" /></ServiceTypes>
<CodePackage Name="Code" Version="1.0.0"><EntryPoint>
<ExeHost><Program>Stateless1.exe</Program>
</ExeHost></EntryPoint>
</CodePackage>
<ConfigPackage Name="Config" Version="1.0.0" />
<Resources><Endpoints>
<Endpoint Name="ServiceEndpoint" /></Endpoints>
</Resources></ServiceManifest>
<ContainerHost><ImageName>myNodeImage:latest</ImageName><Commands></Commands>
</ContainerHost>
プログラミングモデル
Guest Executables(ゲスト実行可能ファイル)
• 任意の EXE を持ち込む
• 任意の言語/
プログラミング モデル
• アプリとしてパッケージング
• バージョニング/更新/
正常性監視などの
機能を追加
Reliable Services(サービス)
• ステートレス/ステートフル
• 同時実行性
• Reliable Collection に
よる状態管理、
トランザクション
• 完全なプラットフォーム
Reliable Actors(アクター)
• ステートレス/ステートフルな
アクター オブジェクト
• 簡素化された
プログラミング モデル
• 単一スレッド モデル
• コンピューティングと状態の
スケール アウトに最適
https://azure.microsoft.com/ja-jp/documentation/articles/service-fabric-choose-framework/
Stateful / Stateless
Reliable
service
Stateless
service
Stateful
service
Reliable
actor
Guest
executable
StatefulのPartitioning
サービスのパーティション分割可能
ルーティングはService Fabricのランタイムが行う
Nodeとデータの割り当てはService Fabricのランタイムが管理
Node 5Node 4Node 3 Node 6Node 2Node 1
P2
S
S
S
P4
S
P1
S
P3S
S
S
まとめ
Microservices
システムを細かいサービスで構成するアーキテクチャ
チーム構成もマイクロサービスを意識する必要がある
開発当初は生産性が落ちる、採用する際の見極め大事
Service Fabric
マイクロサービスプラットフォーム
LB + VM Scale Set + Cluster
Serviceの種類はStateful と Statelessで大きく2つ
しゅくだい
プログラミングモデル部分をもっと深く
Reliable Services / Reliable Actors
Service Fabricのランタイムに関する部分
続きは、ふくあず で!!
参考
Azure Fabric Service - 第1回 Tokyo Jazug Night
https://channel9.msdn.com/Blogs/MVP-Azure/01-Tokyo-Jazug-Night
祝GA、 Service Fabric 概要
http://www.slideshare.net/takekazuomi/ga-service-fabric
止まらないサービスを~ マイクロサービスプラットフォーム 「Azure Service Fabric」
https://docs.com/decode2016/1872/dev-016-azure-service-fabric