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.
Founder and CEO
ZEN ARCHITECTS Co.,Ltd.
Hiromasa Oka
https://www.microsoft.com/ja-jp/casestudies/ffs.fujifilm.aspx
API Apps
Search
Cosmos
DB
Blob
Storage
利用者
旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL)
IMAGE WORKS Modernization Architectur...
イメージング
ソリューション
ドキュメント
ソリューション
インフォメーション
ソリューション
メディカル
フラットパネルディスプレイ
材料
ライフサイエンス
富士ゼロックス
プリンター/複合機
「富士ゼロックス提供」
デジタルカメラ/プリント...
デジタルデータを安全に する環境をアウトソーシング
するSaaSサービス
不正なアクセス
第三者なりすまし・傍受不可
抜群の使いやすさ
直感的に使える「見える」サービス
IMAGE WORKS
管 理
共 有
送受信
配 布
収 集
インターネ...
共 有
デジタルデータを安全に する環境をアウトソーシング
するサービス
不正なアクセス
第三者なりすまし・傍受不可
抜群の使いやすさ
直感的に使える「見える」サービス
IMAGE WORKS
管 理
送受信
配 布
収 集
インターネット環境...
2006年4月:オンプレミス版のリリース
銀塩フイルム市場の急激な縮小
富士フイルムのデジタルアセット戦略の一角として開発
採用技術
➢ 国内データセンター
➢ IAサーバ + Java + Struts +
PostgreSQL
➢ オフショ...
ビジネスに
求められる
スピード感との
ギャップ
開発/運用保守の負荷増加・属人化
処理パフォーマンスの低下
アプリ/インフラの拡張性確保
サービス稼働率のさらなる向上DOWN
➢ オンプレ拡張(リホスト)
➢ 基盤をクラウド(IaaS)に刷新
➢ 作り直し(リビルド)
「APIを用意するだけなら
クラウドまで使う必要はないと思う」
「やったこともないし、できそうな感じもしない」
「何がやりたいのかがそもそも理解できない」
「本当にデータの同期ができるのか疑わしい」
「怪しいコンサルに騙されてるんじゃないか」
...
PoC要求整理 製品化 機能拡大
モバイル版
リリース
PC版
リリース決断 開発着手
API Apps
Search
Cosmos
DB
Blob
Storage
利用者
旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL)
IMAGE WORKS Modernization Architectur...
なぜ
「大規模 x フル PaaS」
を選択したのか
6.非機能の限界を超えることができる
✓負荷に適応するリソース - Adaptive Scale
✓稼働率 100% - Zero Downtime
✓運用不要 - NoOps
Server HW
Hypervisor
VM
App Container
App
Deploy
Ready-to-go-Infrastructure
Provision/Boot
Install/Configure
VNet/Virtual ...
pre-provisioned ready to host
pool of ready-to-go https://msdn.microsoft.com/en-us/magazine/mt793270
Server HW
Hypervisor
...
pre-provisioned ready to host
pool of ready-to-go https://msdn.microsoft.com/en-us/magazine/mt793270
Server HW
Hypervisor
...
そのサーバーレスネイティブな内部実装
ILB
Instances
Kudu
LoadBalancer
Deployer Telemetry
Prod/Stage
Blob
Allocate
Deploy
Allocate
そのサーバーレスネイティブな内部実装
Call
Functions
Kudu
Deployer
Telemetry
Compile
DeAllocateAzure Functions
Pre-Processor
(WebJobs Script ...
VIP
Primary
Node
Secondary Secondary
Realtime GEO Replication
Japan East
US East
Allocate
Allocate
Master
Region
US East
“...
サーバーレス基盤を活かした
新IMAGE WORKS
アーキテクチャの設計
API Apps
Search
Cosmos DB
(Document)
Blob
Storage
利用者
旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL)
認証
App Service
Microsoft A...
Microsoft Cloud Design Patterns
API Apps
Search
Cosmos DB
(Document)
Blob
Storage
利用者
旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL)
認証
App Service
Microsoft A...
IMAGE WORKS:一覧画面
一覧表示
全文検索
サムネイル
IMAGE WORKS:詳細画面
画像属性情報
API Apps
Blob
Storage
認証
Microsoft Azure
Storage
Queue
Blob
Storage
Functions
Storage
Queue
SQL Database
Cosmos
DB
Cogniti...
Web Apps
SearchCosmos DB
(Document)
一覧/全文検索
インデクシング
一般的なRDBベースのフロント処理
Azure の WDSパターンでのフロント処理
処理方式 性能(レスポンスタイム)
一覧 RDBへのクエ...
Web Apps
SearchCosmos DB
(Document)
一覧/全文検索
インデクシング
一般的なRDBベースのフロント処理
Azure の WDSパターンでのフロント処理
処理方式 性能(レスポンスタイム)
一覧 RDBへのクエ...
Current solution for front-end processing for NoOps(Apr.2017)
Document DB
VIP
telemetry
Functions
(Serverless)
Call API
“S...
HTTP Request
AppService
ILB
Request/sec がしきい値を超えたら
スケールアウト
WebAppsのエンドポイントの
Request/sec を監視
WebApps
Current solution for f...
API Apps
Blob
Storage
認証
Storage
Queue
Blob
Storage
SQL Database
Cosm
DB
Cognitive
Services
Machine
Learning
Functions
API...
Microsoft Cloud Design Patterns
https://docs.microsoft.com/en-us/azure/architecture/patterns/queue-based-load-
leveling
Message
WebJobs
ILB
Queue
Storage Queue
/Service Bus
しきい値として設定したCPU利用率を
超えたらスケールアウト
monitor
AppService Plan のCPU利用率を監視
App...
Message
WebJobs
ILB
Queue
Storage Queue
/Service Bus
キューの待ち行列が指定した長さ
を超えたらスケールアウトmonitor
AppInsights による Queue Length の監視
...
- High Elasticity Design
= サーバーレス ネイティブ ソリューションの設計原則
API Apps
Search
Cosmos
DB
Blob
Storage
利用者
旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL)
IMAGE WORKS Modernization Architectur...
API Apps
Search
Cosmos
DB
Blob
Storage
利用者
旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL)
IMAGE WORKS Modernization Architectur...
API Apps
Search
Cosmos
DB
Blob
Storage
利用者
旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL)
IMAGE WORKS Modernization Architectur...
API Apps
Search
Cosmos
DB
Blob
Storage
利用者
旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL)
IMAGE WORKS Modernization Architectur...
Request
Application
Server
RDB
Load
Balancer
Connection
Pool
Request
AppService
Cosmos DB
ILB
VIP
約10分
Downtime
30秒
15秒
API Apps
Search
Cosmos
DB
Blob
Storage
利用者
旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL)
IMAGE WORKS Modernization Architectur...
https://docs.microsoft.com/en-us/azure/architecture/guide/design-principles/
✓ Design for self healing 自己回復を設計せよ
✓ Make al...
t
IW DB更新情報取得
Cosmos DBの
JSONデータ更新
NG
OK
情報取得
{ }
Cosmos DBPostgreSQL
{
"id": "AndersenFamily",
"parents": [
{ "firstName": "Thomas" },
{ "firstName": "Mary Kay"}
],
"i...
WebJobs
Cosmos DB
(Document)
Search
Indexer
API
要件
設計
実装
UT
SST
Waterfall Agile
Waterfall から Agileへ
Azureとともに進化する
IMAGE WORKS
Microsoft
Azure
Search
Cosmos DB
Blob
Storage
Cosmos DB
SQL Database
Search
ローカルでの
インデクシング
Cosmos DB
Search
ローカルでの
インデクシング...
Microsoft
Azure
Search
Cosmos DB
Blob
Storage
Cosmos DB
SQL Database
Search
ローカルでの
インデクシング
Cosmos DB
Search
ローカルでの
インデクシング...
Storage
Queue
API Apps
認証
Blob
Storage
SQL Database
API Gateway
外部システム
Token
.NET
Identity Framework
Functions
REST/OAuth2...
大規模フルPaaSプロジェクトの成功の秘訣
1. 成功要因の7割は「設計」。
利用技術を深く理解した上で料理する。
2. 未知の技術も恐れずに挑む。
減点主義では先進的なプロダクトは生まれない。
3. ロックインはもう恐れなくていい時代。
”コ...
セッションアンケートにご協力ください
➢ 専用アプリからご回答いただけます。
decode 2017
➢ スケジュールビルダーで受講セッションを
登録後、アンケート画面からご回答ください。
➢ アンケートの回答時間はたったの 15 秒です!
Ask the Speaker のご案内
本セッションの詳細は『Ask the Speaker Room』各コーナーカウンタにて
ご説明させていただきます。是非、お立ち寄りください。
© 2017 Microsoft Corporation. All rights reserved.
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計
Upcoming SlideShare
Loading in …5
×

[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計

3,490 views

Published on

「このアーキテクチャには全員が反対です。うまくいくはずがない」その言葉から始まった大規模なシステム刷新プロジェクトは、今クラウド ネイティブを超えて AI の活用ステージに入りつつあります。
本セッションでは、富士フイルムの運営するレガシーなオンプレミス システムが、わずか 6 か月間で Azure 上のクラウド ネイティブ ソリューションに変革した軌跡とともに、新世代のアーキテクチャに向けたビジョン、技術選定、そして開発から運用保守のアプローチについてお話します。

岡 大勝
株式会社ゼンアーキテクツ
代表取締役CEO

佐藤 力
富士フイルムソフトウエア株式会社
サービス本部 アドバンストソリューショングルー
チーム長

Published in: Technology

[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計

  1. 1. Founder and CEO ZEN ARCHITECTS Co.,Ltd. Hiromasa Oka
  2. 2. https://www.microsoft.com/ja-jp/casestudies/ffs.fujifilm.aspx
  3. 3. API Apps Search Cosmos DB Blob Storage 利用者 旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL) IMAGE WORKS Modernization Architecture 認証 App Service Microsoft Azure Storage Queue Blob Storage Functions Storage Queue SQL Database Cosmos DB Cognitive Services Machine Learning Functions PC Clients(Windows/Mac)Mobile Clients(iOS/Android) API Gateway 外部システム Application Insights Azure Monitor 国内データセンター Web Apps Token .NET • マスターファイル保管 • アカウント管理 • 権限管理 Identity Framework Functions REST/OAuth2 SPA (Browser App)SPA (Browser App) 負荷モニター/オートスケール
  4. 4. イメージング ソリューション ドキュメント ソリューション インフォメーション ソリューション メディカル フラットパネルディスプレイ 材料 ライフサイエンス 富士ゼロックス プリンター/複合機 「富士ゼロックス提供」 デジタルカメラ/プリント レンズ 記録メディア 富士フイルムグループ3柱のソフトウエア開発部門 (イメージングソリューション、インフォメーションソリューション、ドキュメントソリューション) グラフィックグラフィック
  5. 5. デジタルデータを安全に する環境をアウトソーシング するSaaSサービス 不正なアクセス 第三者なりすまし・傍受不可 抜群の使いやすさ 直感的に使える「見える」サービス IMAGE WORKS 管 理 共 有 送受信 配 布 収 集 インターネット環境のみで利用可能なASP/SaaSサービス ハード機器/ソフトウェア購入・設置料金など一切不要 インターネット回線インターネット 専用線不要/高速で低コスト
  6. 6. 共 有 デジタルデータを安全に する環境をアウトソーシング するサービス 不正なアクセス 第三者なりすまし・傍受不可 抜群の使いやすさ 直感的に使える「見える」サービス IMAGE WORKS 管 理 送受信 配 布 収 集 インターネット環境のみで利用可能なASP/SaaSサービス ハード機器/ソフトウェア購入・設置料金など一切不要 インターネット回線インターネット 専用線不要/高速で低コスト 1 4万 500万 800
  7. 7. 2006年4月:オンプレミス版のリリース 銀塩フイルム市場の急激な縮小 富士フイルムのデジタルアセット戦略の一角として開発 採用技術 ➢ 国内データセンター ➢ IAサーバ + Java + Struts + PostgreSQL ➢ オフショア開発
  8. 8. ビジネスに 求められる スピード感との ギャップ 開発/運用保守の負荷増加・属人化 処理パフォーマンスの低下 アプリ/インフラの拡張性確保 サービス稼働率のさらなる向上DOWN
  9. 9. ➢ オンプレ拡張(リホスト) ➢ 基盤をクラウド(IaaS)に刷新 ➢ 作り直し(リビルド)
  10. 10. 「APIを用意するだけなら クラウドまで使う必要はないと思う」 「やったこともないし、できそうな感じもしない」 「何がやりたいのかがそもそも理解できない」 「本当にデータの同期ができるのか疑わしい」 「怪しいコンサルに騙されてるんじゃないか」 関係者全員が反対
  11. 11. PoC要求整理 製品化 機能拡大 モバイル版 リリース PC版 リリース決断 開発着手
  12. 12. API Apps Search Cosmos DB Blob Storage 利用者 旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL) IMAGE WORKS Modernization Architecture 認証 App Service Microsoft Azure Storage Queue Blob Storage Functions Storage Queue SQL Database Cosmos DB Cognitive Services Machine Learning Functions PC Clients(Windows/Mac)Mobile Clients(iOS/Android) API Gateway 外部システム Application Insights Azure Monitor 国内データセンター Web Apps Token .NET • マスターファイル保管 • アカウント管理 • 権限管理 Identity Framework Functions REST/OAuth2 SPA (Browser App)SPA (Browser App) 負荷モニター/オートスケール
  13. 13. なぜ 「大規模 x フル PaaS」 を選択したのか
  14. 14. 6.非機能の限界を超えることができる
  15. 15. ✓負荷に適応するリソース - Adaptive Scale ✓稼働率 100% - Zero Downtime ✓運用不要 - NoOps
  16. 16. Server HW Hypervisor VM App Container App Deploy Ready-to-go-Infrastructure Provision/Boot Install/Configure VNet/Virtual Private Cloud いつでもセルフプロビジョニング できるリソースプール
  17. 17. pre-provisioned ready to host pool of ready-to-go https://msdn.microsoft.com/en-us/magazine/mt793270 Server HW Hypervisor VM App Container App Deploy Pre-provisioned/readytohost どのノードもいつでもデプロイできるように ”暖めてある”リソースプール
  18. 18. pre-provisioned ready to host pool of ready-to-go https://msdn.microsoft.com/en-us/magazine/mt793270 Server HW Hypervisor VM App Container App Deploy Pre-provisioned/readytohost どのノードもいつでもデプロイできるように ”暖めてある”リソースプール サーバーレス基盤 いわゆる を支える仕組み
  19. 19. そのサーバーレスネイティブな内部実装 ILB Instances Kudu LoadBalancer Deployer Telemetry Prod/Stage Blob Allocate Deploy Allocate
  20. 20. そのサーバーレスネイティブな内部実装 Call Functions Kudu Deployer Telemetry Compile DeAllocateAzure Functions Pre-Processor (WebJobs Script Runtime) App Service Dynamic Runtime Allocate Deploy Run https://msdn.microsoft.com/en-us/magazine/mt793269.aspx 参考:Serverless Architecture with Azure Functions
  21. 21. VIP Primary Node Secondary Secondary Realtime GEO Replication Japan East US East Allocate Allocate Master Region US East “Hot Pool” Japan East “Hot Pool” そのサーバーレスネイティブな内部実装 The architecture of BW-Tree atomic record store. https://www.microsoft.com/en-us/research/publication/the-bw-tree-a-b-tree-for-new-hardware/
  22. 22. サーバーレス基盤を活かした 新IMAGE WORKS アーキテクチャの設計
  23. 23. API Apps Search Cosmos DB (Document) Blob Storage 利用者 旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL) 認証 App Service Microsoft Azure Storage Queue Blob Storage Function s Storag e Queue SQL Database Cosmos DB Cognitive Services Machine Learning Function s PC Clients(Windows/Mac)Mobile Clients(iOS/Android) API Gateway 外部システム Application Insights Azure Monitor 国内データセンター Web Apps Token .NET • マスターファイル保管 • アカウント管理 • 権限管理 Identity Framework Function s REST/OAut h2 SPA (Browser App)SPA (Browser App) 負荷モニター/オートスケール 1. エンドポイント処理は軽く
  24. 24. Microsoft Cloud Design Patterns
  25. 25. API Apps Search Cosmos DB (Document) Blob Storage 利用者 旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL) 認証 App Service Microsoft Azure Storage Queue Blob Storage Function s Storag e Queue SQL Database Cosmos DB Cognitive Services Machine Learning Function s PC Clients(Windows/Mac)Mobile Clients(iOS/Android) API Gateway 外部システム Application Insights Azure Monitor 国内データセンター Web Apps Token .NET • マスターファイル保管 • アカウント管理 • 権限管理 Identity Framework Function s REST/OAut h2 SPA (Browser App) SPA (Browser App) 負荷モニター/オートスケール
  26. 26. IMAGE WORKS:一覧画面 一覧表示 全文検索 サムネイル
  27. 27. IMAGE WORKS:詳細画面 画像属性情報
  28. 28. API Apps Blob Storage 認証 Microsoft Azure Storage Queue Blob Storage Functions Storage Queue SQL Database Cosmos DB Cognitive Services Machine Learning Functions API Gateway Application Insights Azure Monitor Token .NET Identity Framework Functions REST/OAuth2 SPA (Browser App)SPA (Browser App) 負荷モニター/オートスケール SearchCosmos DB (Document) 利用者 App Service PC Clients(Windows/Mac)Mobile Clients(iOS/Android) Web Apps 「一覧」「詳細」 「絞り込み」「全文検索」 などのフロント機能は 高弾力構成が ほぼNoOpsで実装可能 Web-Document-Search (WDS) アーキテクチャパターン
  29. 29. Web Apps SearchCosmos DB (Document) 一覧/全文検索 インデクシング 一般的なRDBベースのフロント処理 Azure の WDSパターンでのフロント処理 処理方式 性能(レスポンスタイム) 一覧 RDBへのクエリー (範囲やKey) INDEXやデータ量に依存 非常に遅くなる場合もある 詳細 RDBへのクエリー (ユニークKey) 基本的に速いが、他処理での高負 荷時は引きずられる 全文検索 RDBへのLike検索 重い。機能が限定的。他の検索エ ンジンを併用する場合が多い 詳細 RDB 処理方式 性能 一覧 Searchへのクエリー (属性やファセット) 作成済みINDEXのみ対象のため、 元データに依存せず常に高速 詳細 Cosmos DBへのクエ リー(ユニークKey) 検索処理と分離されているため、 常に高速 全文検索 Searchへのクエリー (複数の属性横断) ワードINDEXが生成されているた め、ゆらぎ対応も含めて常に高速 アプリ サーバ 一覧/詳細/全文検索
  30. 30. Web Apps SearchCosmos DB (Document) 一覧/全文検索 インデクシング 一般的なRDBベースのフロント処理 Azure の WDSパターンでのフロント処理 処理方式 性能(レスポンスタイム) 一覧 RDBへのクエリー (範囲やKey) INDEXやデータ量に依存 非常に遅くなる場合もある 詳細 RDBへのクエリー (ユニークKey) 基本的に速いが、他処理での高負 荷時は引きずられる 全文検索 RDBへのLike検索 重い。機能が限定的。他の検索エ ンジンを併用する場合が多い 詳細 RDB 処理方式 性能 一覧 Searchへのクエリー (属性やファセット) 作成済みINDEXのみ対象のため、 元データに依存せず常に高速 詳細 Cosmos DBへのクエ リー(ユニークKey) 検索処理と分離されているため、 常に高速 全文検索 Searchへのクエリー (複数の属性横断) ワードINDEXが生成されているた め、ゆらぎ対応も含めて常に高速 アプリ サーバ 一覧/詳細/全文検索 コネクションも含めた処理間の依存関係が強く 性能を安定させづらい 目的毎に処理ノードを分離し、ステートレスに 呼び出すことで、リニアに性能を制御できる
  31. 31. Current solution for front-end processing for NoOps(Apr.2017) Document DB VIP telemetry Functions (Serverless) Call API “Scale-out RU” Webhook Alert Rule monitor 2017/4 時点での NoOps実装 サービス毎に個別にスケールさせていた テレメトリで最大RU/secを監視。 しきい値を超えたら Webhook からFunctions を呼び、API経由でRUをスケールアウト HTTP Request AppService ILB Request/sec がしきい値を超えたら スケールアウト WebAppsのエンドポイントの Request/sec を監視 WebApps telemetry Burst
  32. 32. HTTP Request AppService ILB Request/sec がしきい値を超えたら スケールアウト WebAppsのエンドポイントの Request/sec を監視 WebApps Current solution for front-end processing for NoOps(May. 2017) telemetry Burst Build 2017 後の NoOps実装 Cosmos DB VIP Cosmos DB で、スケールアウトの概念すら ほぼ 不要に 設定している RU/sec の値を超えたら 予約しているRU/min の予備ノードを利用 RU/min = 設定しているRU/secの10倍のリソースを スパイク時のバッファとして確保するオプション (1,000RU/s設定 → 10,000RU までのスパイクを許容) RU/min
  33. 33. API Apps Blob Storage 認証 Storage Queue Blob Storage SQL Database Cosm DB Cognitive Services Machine Learning Functions API G Application Insights Azure Monitor 国内データセンター Token .NET • マスターファイル保管 • アカウント管理 • 権限管理 Identity Framework Functions 負荷モニター/オートスケール Search App Service Web Apps 旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL) Functions Storage Queue Cosmos DB (Document) ワークロードの変動が大きい オンプレミスとの 同期処理は QLL※ + Scale-out で実装 ※Queue-based Load Leveling
  34. 34. Microsoft Cloud Design Patterns https://docs.microsoft.com/en-us/azure/architecture/patterns/queue-based-load- leveling
  35. 35. Message WebJobs ILB Queue Storage Queue /Service Bus しきい値として設定したCPU利用率を 超えたらスケールアウト monitor AppService Plan のCPU利用率を監視 AppService Current solution for backend processing for NoOps(Apr.2017) Now telemetry Document DB VIP テレメトリで最大RU/secを監視。 しきい値を超えたら Webhook からFunctions を呼び、API経由でRUをスケールアウト telemetry Functions (Serverless) Call API “Scale-out RU” Webhook Alert Rule monitor 2017/4時点での NoOps実装 ジョブ・スパイク 無理矢理感あり
  36. 36. Message WebJobs ILB Queue Storage Queue /Service Bus キューの待ち行列が指定した長さ を超えたらスケールアウトmonitor AppInsights による Queue Length の監視 AppService Current solution for backend processing for NoOps(May.2017) Now Cosmos DB VIP ジョブ・スパイク Build 2017 後の NoOps実装 Application Insights telemetry 設定している RU/sec の値を超えたら 予約しているRU/min の予備ノードを利用 ほぼ理想型
  37. 37. - High Elasticity Design = サーバーレス ネイティブ ソリューションの設計原則
  38. 38. API Apps Search Cosmos DB Blob Storage 利用者 旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL) IMAGE WORKS Modernization Architecture 認証 App Service Microsoft Azure Storage Queue Blob Storage Functions Storage Queue SQL Database Cosmos DB Cognitive Services Machine Learning Functions PC Clients(Windows/Mac)Mobile Clients(iOS/Android) API Gateway 外部システム Application Insights Azure Monitor 国内データセンター Web Apps Token .NET • マスターファイル保管 • アカウント管理 • 権限管理 Identity Framework Functions REST/OAuth2 SPA (Browser App)SPA (Browser App) 負荷モニター/オートスケール 1. エンドポイント処理は軽く 急なトラフィック変動にスケールアウト/ インを柔軟に追従させるため。 重い処理は全てQueueに投げる。
  39. 39. API Apps Search Cosmos DB Blob Storage 利用者 旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL) IMAGE WORKS Modernization Architecture 認証 App Service Microsoft Azure Storage Queue Blob Storage Functions Storage Queue SQL Database Cosmos DB Cognitive Services Machine Learning Functions PC Clients(Windows/Mac)Mobile Clients(iOS/Android) API Gateway 外部システム Application Insights Azure Monitor 国内データセンター Web Apps Token .NET • マスターファイル保管 • アカウント管理 • 権限管理 Identity Framework Functions REST/OAuth2 SPA (Browser App)SPA (Browser App) 負荷モニター/オートスケール 2. 非同期分散処理が基本 重い処理はQueue経由でWorkerに投げる。 Workerは並列分散処理する前提で設計しておく。
  40. 40. API Apps Search Cosmos DB Blob Storage 利用者 旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL) IMAGE WORKS Modernization Architecture 認証 App Service Microsoft Azure Storage Queue Blob Storage Functions Storage Queue SQL Database Cosmos DB Cognitive Services Machine Learning Functions PC Clients(Windows/Mac)Mobile Clients(iOS/Android) API Gateway 外部システム Application Insights Azure Monitor 国内データセンター Web Apps Token .NET • マスターファイル保管 • アカウント管理 • 権限管理 Identity Framework Functions REST/OAuth2 SPA (Browser App)SPA (Browser App) 負荷モニター/オートスケール 3. Workerの粒度は小さく 並列分散処理が前提のWorkerは、 できるだけ小さな単位(Atomic)で実装する。
  41. 41. API Apps Search Cosmos DB Blob Storage 利用者 旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL) IMAGE WORKS Modernization Architecture 認証 App Service Microsoft Azure Storage Queue Blob Storage Functions Storage Queue SQL Database Cosmos DB Cognitive Services Machine Learning Functions PC Clients(Windows/Mac)Mobile Clients(iOS/Android) API Gateway 外部システム Application Insights Azure Monitor 国内データセンター Web Apps Token .NET • マスターファイル保管 • アカウント管理 • 権限管理 Identity Framework Functions REST/OAuth2 SPA (Browser App)SPA (Browser App) 負荷モニター/オートスケール 4. 処理はStateless 5. 接続もStateless ノードがメモリ上にStateを保持することで、 ノード間がStatefulで接続されることで、 弾力性が失われる。
  42. 42. Request Application Server RDB Load Balancer Connection Pool Request AppService Cosmos DB ILB VIP 約10分 Downtime 30秒 15秒
  43. 43. API Apps Search Cosmos DB Blob Storage 利用者 旧 IMAGE WORKSシステム(Java/Struts/PostgreSQL) IMAGE WORKS Modernization Architecture 認証 App Service Microsoft Azure Storage Queue Blob Storage Functions Storage Queue SQL Database Cosmos DB Cognitive Services Machine Learning Functions PC Clients(Windows/Mac)Mobile Clients(iOS/Android) API Gateway 外部システム Application Insights Azure Monitor 国内データセンター Web Apps Token .NET • マスターファイル保管 • アカウント管理 • 権限管理 Identity Framework Functions REST/OAuth 2 SPA (Browser App) SPA (Browser App) 負荷モニター/オートスケール 6. Stateは適切なデータストアで保持する
  44. 44. https://docs.microsoft.com/en-us/azure/architecture/guide/design-principles/ ✓ Design for self healing 自己回復を設計せよ ✓ Make all things redundant 全てを冗長化せよ ✓ Minimize coordination ブロッキングを最小化せよ ✓ Design to scale out スケールアウトで設計せよ ✓ Partition around limits パーティショニングで限界を超えよ ✓ Design for operations 運用に向けて設計せよ ✓ Use managed services マネージドサービスを活用せよ ✓ Use the best data store for the job 最適なデータストアを選択せよ ✓ Design for evolution 進化を前提に設計せよ ✓ Build for the needs of business ビジネスニーズを実現せよ
  45. 45. t IW DB更新情報取得 Cosmos DBの JSONデータ更新 NG OK 情報取得
  46. 46. { } Cosmos DBPostgreSQL { "id": "AndersenFamily", "parents": [ { "firstName": "Thomas" }, { "firstName": "Mary Kay"} ], "isRegistered": true } Document型(JSON)テーブル
  47. 47. WebJobs Cosmos DB (Document) Search Indexer API
  48. 48. 要件 設計 実装 UT SST Waterfall Agile Waterfall から Agileへ
  49. 49. Azureとともに進化する IMAGE WORKS
  50. 50. Microsoft Azure Search Cosmos DB Blob Storage Cosmos DB SQL Database Search ローカルでの インデクシング Cosmos DB Search ローカルでの インデクシング リアルタイムGeoレプリケーション App Service App Service App Service Traffic Manager 西日本(Primary) 米国東部 西ヨーロッパ 日本ユーザ 米国ユーザ ヨーロッパユーザ オンプレミス IMAGE WORKS ローカルでの インデクシング Azure CDN Azure CDN Azure CDN SQL Database リアルタイムGeoレプリケーション SQL Database Blob Storage Blob Storage
  51. 51. Microsoft Azure Search Cosmos DB Blob Storage Cosmos DB SQL Database Search ローカルでの インデクシング Cosmos DB Search ローカルでの インデクシング リアルタイムGeoレプリケーション App Service App Service App Service Traffic Manager 西日本(Primary) 米国東部 西ヨーロッパ 日本ユーザ 米国ユーザ ヨーロッパユーザ オンプレミス IMAGE WORKS ローカルでの インデクシング Azure CDN Azure CDN Azure CDN SQL Database リアルタイムGeoレプリケーション SQL Database Blob Storage Blob Storage
  52. 52. Storage Queue API Apps 認証 Blob Storage SQL Database API Gateway 外部システム Token .NET Identity Framework Functions REST/OAuth2 SPA (Browser App)SPA (Browser App) Search 利用者 App Service PC Clients(Windows/Mac)Mobile Clients(iOS/Android) Web Apps Storage Queue Cosmos DB Machine Learning Functions Cognitive Services 富士フイルムの画像処理技術と Azure の AI 技術を組み合わせ、 膨大なデータから顧客の求める画像の分類を目指す
  53. 53. 大規模フルPaaSプロジェクトの成功の秘訣 1. 成功要因の7割は「設計」。 利用技術を深く理解した上で料理する。 2. 未知の技術も恐れずに挑む。 減点主義では先進的なプロダクトは生まれない。 3. ロックインはもう恐れなくていい時代。 ”コード”と”データ”でポータビリティを確保できる。 4. ビジネスも技術も、状況は刻々と変化する。 ウォーターフォールからの脱却は必須。
  54. 54. セッションアンケートにご協力ください ➢ 専用アプリからご回答いただけます。 decode 2017 ➢ スケジュールビルダーで受講セッションを 登録後、アンケート画面からご回答ください。 ➢ アンケートの回答時間はたったの 15 秒です!
  55. 55. Ask the Speaker のご案内 本セッションの詳細は『Ask the Speaker Room』各コーナーカウンタにて ご説明させていただきます。是非、お立ち寄りください。
  56. 56. © 2017 Microsoft Corporation. All rights reserved. 本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

×