ROOM
J
ハイパー
スケール
可用性 俊敏性
Web
Apps
Mobile
Apps
API
Management
API
Apps
Logic
Apps
Notification
Hubs
Content Delivery
Network (CDN)
Media
Services
HDInsight Machine
Learning
Stream
Analytics
Data
Factory
Event
Hubs
Mobile
Engagement
Biztalk
Services
Hybrid
Connections
Service
Bus
Storage
Queues
Backup
StorSimple
Site
Recovery
Import/Export
SQL
Database
DocumentDB
Redis
Cache
Search
Tables
SQL Data
Warehouse
Azure AD
Connect Health
AD Privileged
Identity Mngt
Operational
Insights
Cloud
Services
Batch Remote App
Service
Fabric Visual Studio
Application
Insights
Azure SDK
Team Project
Active
Directory
Multi-Factor
Authentication
Automation
Portal
Key Vault
Store /
Marketplace
VM Image Gallery
& VM Depot
SECURITY &
MANAGEMENT PLATFORM SERVICES HYBRID
OPERATIONS
インフラ (IaaS) 開発フレームワーク (PaaS)
プレビュー
GA
「アプリ作成者」
開発者 非開発者
Microsoft Azure
業務アプリSaaS移行 Docker
Virtual
Machine
s単発の
ステートフル/
スレートレス
ソリューション
VM
Scale Sets
スケーラブルな
ステートレス
ソリューション
Container
Service
コンテナーに
デプロイされる
スケーラブルな
Dockerイメージ
オーケスト
レーション
差別化 短期開発既存アプリへの投資
Batch
カスタムの
HPC
ソリューション
Cloud
Services
カスタムの
モノリシック
3階層
ステートレス
ソリューション
Service
Fabric
カスタムの
マイクロサービス
ベースの
ステートレス/
ステートフル
ソリューション
Power
Apps
モバイル
ソリュー
ションの
GUI 設計
App Service
Web/
モバイル/
APIの
高速開発
ワークフロー
オーケスト
レーション
ベースの
統合
ソリューション
LogicWeb/
Mobile/API
占有環境で
App
Serviceを
利用
Environment
IaaS
VM /
VM
Scale Sets
コンテナー
Storage 1vNIC 1
VM 1
Storage 2vNIC 2
VM 2
VM 1 VM 2 VM 3
VM 4 VM 5 VM 5
PaaS
IaaS
VM /
VM
Scale Sets
マイクロ
サービス
Web/
モバイル
サーバーレス
イベント駆動コンピューティングのアプリケーション コンポーネント
例: IoT イベント、ゲーム イベント、運用イベント
フル マネージドの Web/モバイル アプリケーション。インフラ管理なし
例: EC サイト、業務アプリ、サポート Web サイト
アジャイルな複数コンポーネントを備えた、大規模で可用性の高いアプリ
例: 大規模オンライン ゲーム、大規模サイト/業務アプリ
フレームワーク/ランタイム/アプリケーション モデルに重点を置いたアプリ
例: 既存のエンタープライズ/業務アプリ、既存コンポーネントでのスケール
アウト
App Service
Service Fabric
Cloud Services
Azure Functions
モノリシック アプリケーション マイクロサービス アプリケーション
• マイクロサービス アプリは、
機能を小さいサービスに
分割
• 各サービスを独立してデプロイし、複数の
サーバー/VM/コンテナーにわたってサービスの
インスタンスを作成することで、スケール アウト
• モノリス アプリには、ドメイン
固有の機能が含まれている
• 通常、機能レイヤー (Web、
ビジネス、データ) で分割される
• アプリを複数のサーバー/VM/コンテナーに
配置することで、スケールする
アプリ 1 アプリ 1 アプリ 2
Service Fabric クラスター
Spatial
(In Space)
Gaia
(ステートレス)
Trade Inventory Production CommsNavigation
PlayerAccount CrewCommerce Alliance
Avatar
(ステートレス)
AI Events
Webブラウザー/
デバイス
ゲーム機能
サービス
CDN
集約
サービス
物理
サービス
ルーティング
サービス
パブリック クラウド
(Azure)
他のクラウドオンプレミス/
プライベート クラウド
Service Fabric
マイクロサービス フレームワーク
channel9.msdn.com/Events/de-code/decode-2015/DEV-024
<ServiceManifest Name="QueueService" Version="1.0">
<ServiceTypes>
<StatefulServiceType ServiceTypeName=“QueueServiceType”
HasPersistedState="true" />
</ServiceTypes>
<CodePackage Name="Code" Version="1.0">
<EntryPoint>
<ExeHost>
<Program>ServiceHost.exe</Program>
</ExeHost>
</EntryPoint>
</CodePackage>
<ConfigPackage Name="Config" Version="1.0" />
<DataPackage Name="Data" Version="1.0" />
</ServiceManifest>
アプリ 1
アプリ 2
Azure Cloud Services
(Web Role/Worker Role)
Azure Service Fabric
(ステートレス/ステートフル/アクター サービス)
• 各 VM に 1 つのサービス インスタンス
• 均一でないワークロード
• コンピューティングの密度が低い
• デプロイ/更新が遅い
• スケーリング/DR (災害復旧) が遅い
• 各 VM に多数のマイクロサービス
• マイクロサービスの密度が高い
• デプロイ/更新が速い
• クラスター内でのマイクロサービスの
スケーリングが速い
アプリ 1
アプリ 2
更新ドメイン (UD) ごとに
更新を実施
更新は、アプリ内で
変更されたサービス、
そのコード/構成に限定
Node
Node
NodeNode
Node
Node
Service
Package
B
Service
Package
A
Guest Executables
(ゲスト実行可能ファイル)
• 任意の EXE を持ち込む
• 任意の言語/
プログラミング モデル
• アプリとしてパッケージング
• バージョニング/更新/
正常性監視などの
機能を追加
Reliable Services
(サービス)
• ステートレス/ステートフル
• 同時実行性
• Reliable Collection に
よる状態管理、
トランザクション
• 完全なプラットフォーム
統合
Reliable Actors
(アクター)
• ステートレス/ステートフルな
アクター オブジェクト
• 簡素化された
プログラミング モデル
• 単一スレッド モデル
• コンピューティングと状態の
スケール アウトに最適
アプリケーション型: sfAuction
サービス型: Website
ゲスト実行可能ファイル
(ステートレス) (Node.js)
サービス型: Auction
サービス (ステートフル)
(C#/.NET)
サービス型: APIGateway
サービス (ステートレス)
(C#/.NET)
Service Fabric クラスター
ロード
バランサー
VMSS #1 (ステートレス層)
NodeType=“FrontEnd”
ノード #1
Website
ApiGateway
ノード #2
Website
ApiGateway
VMSS #2 (ステートフル層)
NodeType=“BackEnd”
ノード #3
Auction
ノード #4
Auction
サービス型: Website
ゲスト実行可能ファイル
(ステートレス) (Node.js)
<ServiceManifest Name="Pkg-Svc.Website" Version="1.0.0" …>
<ServiceTypes>
<StatelessServiceType ServiceTypeName="Svc.WebsiteType" UseImplicitHost="true"/>
</ServiceTypes>
<CodePackage Name="Code" Version="1.0.0">
<EntryPoint>
<ExeHost>
<Program>node.exe</Program>
<Arguments>Server.js</Arguments>
</ExeHost>
</EntryPoint>
</CodePackage>
</ServiceManifest>
<ContainerHost>
<ImageName>myNodeImage:latest</ImageName>
<Commands></Commands>
</ContainerHost>
サービス型: Website
ゲスト実行可能ファイル
(ステートレス) (Node.js)
サービス型: APIGateway
サービス (ステートレス)
(C#/.NET)
サービス型: Website
ゲスト実行可能ファイル
(ステートレス) (Node.js)
サービス型: Auction
サービス (ステートフル)
(C#/.NET)
サービス型: APIGateway
サービス (ステートレス)
(C#/.NET)
IReliableDictionary<K,V> IReliableQueue<T>
Node 5Node 4Node 3 Node 6Node 2Node 1
P2
S
S
S
P4
S
P1
S
P3S
S
S
ロード
バランサー
ステートフル
データ
ロード
バランサー
他の
内部層?
ステートレス
コンピュー
ティング
ステートレス
Web
キ
ャ
ッ
シ
ュ
ステートレス
Web
ステートフル
コンピューティング
Auction (パーティション #1)
Users Dictionary
Email UserInfo
U1 ItemId[]
U2 ItemId[]
Active Items List
ItemId
U1/“A”
U2/“X”
U1’s Items Dictionary
ItemId ItemInfo
U1/“A” 2016-2-1, Bid[]
U1/“B” 2016-2-5, Bid[]
U2’s Items Dictionary
ItemId ItemInfo
U2/“X” 2016-3-3, Bid[]
U2/”Y” 2016-4-9, Bid[]
APIGatewayCreateUserAsync
Reliable Actors (アクター)
github.com/dotnet/orleans
JBSの事例紹介
深層学習のService Fabricアプリ
自己紹介
• Eduardo GONZALEZ
• 日本ビジネスシステムズ株式会社
• 社会システムデザインセンター
• テクニカルマネージャー
• R&D、プロトタイプ開発、機械学習
@wm_eddie
概要
• AO2.0の概要
• アーキテクチャ/深層学習モデルのマイクロサービス化
• Service Fabricを選んだ理由
AO2.0の概要
AmbientOffice 2.0 on
Hybrid CI & Applications for Information Workers
ヘルプデスク
サービス
Client Platforms
Context-Awareness
Platform (CAP)
Application
Services
Hybrid Communication
Infrastructure Services
各社データセンター
(NTTComm/IIJ etc.)
運用/監視
サービスAzure
Services
On-Premise Systems
AI技術応用
AO2.0
アプリ
Cloud
基盤
AMI (Augmented Mind Intelligence)
AMI 解決方針
 今、最優先でアクションを要するメールだけ抽出提示
• ビジネスシーンでは、予定調整、タスク依頼への対応が重要
(仮説)
• その他、コンテキストを理解した優先度決定
 ToDo作成、予定作成などアクションのスムーズな実施
を支援
• 予定調整:参加者、候補日提示、選択、確保の一連の流れを支援
タスク実施:関連プロジェクトの認知、関係者、関連情報へのナ
ビゲーション支援など
利用者のコンテキスト(文脈)を理解して、
「さりげない」支援を提供(AI技術適用)
アーキテクチャ
アプリ
(AMI)
CAP
アドイン
ユーザー
認証
メール・予定表へ
のアクセス
Azure
全体図
APNS HTTPS
8080 443
App Gateway
JBSCAPApp
CortexApp
TestCAPApp
Office 365
HDInsight
DocumentDB
Blob Storage
VSTS Build Build Agent
AO2SFCTest
Node1
Node2
Node3
Node4
Node5
LB
VNet
Service Fabric Cluster
AO2DB
AO2Store
AO2API
AO2Build
CAPApp
• Office 365をアクセスすると社員エージェント(アクター)をホストするア
プリ
• C#
• Stateless Service (ASP.Net WebAPI)
• Stateful Service (処理パイプライン)
• Actor Service (社員エージェント)
• 6つのマイクロサービス
• テナント毎にデプロイする
CortexApp
• 共通の機械学習のWebサービス
• Scala
• モデルはApache SparkとDeepLearning4Jを利用
• モデルはDataパッケージを利用
• 現在Guest Executableで全てのノードに配信
• JavaSDKに移植中
• Play FrameworkのアプリケーションZipファイルをCodeに展開
• Sparkのためにwinutils.exeをCode/null/bin/にコピー
• SparkのモデルをNuGetからダウンロードしcontentの中身をDataにコピー
• ※ DataとConfigバーションは手動にEntryPointに指定
• RUNNING_PIDを削除するスクリプトを追加
サービスの詳細
Service Fabricを選んだ理由
ご清聴ありがとうございました
• https://github.com/wmeddie/deeplearning-servicefabric
• 質問:eduardo.gonzalez@jbs.com @wm_eddie
azure.microsoft.com/services/service-fabric/
アンケートにご協力ください。
●アンケートに 上記の Session ID のブレイクアウトセッションに
チェックを入れて下さい。
●アンケートはお帰りの際に、受付でご提出ください。
マイクロソフトスペシャルグッズと引換えさせていただきます。
ROOM J
Ask the Speaker のご案内
●本セッションの詳細は、EXPO 会場内
『Ask the Speaker』コーナー
Room A カウンタにてご説明させて
いただきます。是非、お立ち寄りください。
Ask the Speaker
EXPO会場MAP

DEV-016_止まらないサービスを! ~マイクロサービス プラットフォーム「Azure Service Fabric」~