SlideShare a Scribd company logo
1 of 56
Download to read offline
EC やキャンペーン サイトのパフォーマンスを向上!
~ 最新高速ハイスケール サービスの採用と機能の最適配置で
お客様向け Web サイトを高速化
Founder and CEO
ZEN ARCHITECTS Co.,Ltd.
Hiromasa Oka
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) 米国東部 西ヨーロッパ
日本ユーザ 米国ユーザ ヨーロッパユーザ
オンプレミス
システム
ローカルでの
インデクシング
Azure CDN Azure CDN Azure CDN
SQL Database
リアルタイムGeoレプリケーション
SQL Database
Blob
Storage
Blob
Storage
https://www.microsoft.com/ja-jp/casestudies/ffs.fujifilm.aspx
App Service App Service App Service App Service App Service App Service App Service App Service App Service App Service
Cosmos DB Cosmos DB
リアルタイムGeoレプリケーション
Web Apps Web Apps Web Apps Web Apps
Web Apps Web AppsWeb Apps Web AppsWeb Apps Web Apps
Application
Gateway
Application
Gateway
App Service
Web Apps
Web Apps
Application
Gateway
Application
Gateway
Application
Gateway
Application
Gateway
西日本東日本(Primary)
西日本リージョン東日本リージョン
Traffic Manager
App Service
ピーク時への対処は?
ユーザーに我慢してもらう?
未使用リソースの
コストは許容できる?
想定ピークを
超える可能性は?
=弾力性 (Elasticity)
1. 弾力的なアプリケーション
2. アプリケーションに追従できるデータストア
3. 地理分散と災害対策(DR)
Auto Scaling の動作 (Linux + PHP + Wordpress + MySQL)
①VMのCPUの使用率をトリガーに Auto Scaling が開始する。
②Auto Scaling 設定で定義されている イメージが起動し、起動スクリプトの内容に沿って構築が始まる。
③起動スクリプトで chef がキックされる。また、 Git サーバーから Web アプリケーションもデプロイされる。
Linux + MySQL, phpのinstall + yum update + wordpressをGitからpull
④chef での構築後に LB のヘルスチェックが成功した段階でサービスイン。
Auto Scaling の動作 (Linux + PHP + Wordpress + MySQL)
事前に、Gitからコンテナ(Docker Image)を構築
(CIによるプロダクションコードのCommit時の実行が望ましい)
①CPUの使用率をトリガーに Auto Scaling が開始する。
②Auto Scaling 設定で定義されているContainerが起動。
③必要アプリケーションがインストールされているDocker ImageをRegistryからデプロイ。
⑤LB のヘルスチェックが成功した段階でサービスイン。
Git Server
Auto Scaling の動作 (Linux + PHP + Wordpress + MySQL)
事前に、Gitからコンテナ(Docker Image)を構築
(CIによるプロダクションコードのCommit時の実行が望ましい)
①LBへのRequest/secやCPUの使用率をトリガーに、Docker ImageをAppServiceリソースグループにデプロイ。
②内部LBによるヘルスチェックが成功した段階でサービスインされる。
Git Server
AppService
パフォーマンス情報
①
AppServiceリソースグループAzure Container Registory
VMSS + Chef ACS (Docker) AppService on Linux
2台→4台 約 7 分 約 40 秒 約 17 秒
2台→10台 約 7 分 約 41 秒 約 20 秒
検証環境
• VM
• LoadBalancer
• AutoScaleSet(オートスケール)
• Chef-Solo
• Github
• Azure Container Service
• DC/OS
• Marathon
• Docker Container
• Github
• AppService on Linux
with Docker Container
• Github
プロセス
• 手動でスケールアウト
• ベースイメージ起動
• yum install
• php, mysqlをchefでインストール
• wordpressをgitでインストール
• apache起動
• loadbalancerのヘルスチェック
• 手動でスケールアウト
• ベースイメージ起動
• wordpressをgitでインストール
• apache起動
• loadbalancerのヘルスチェック
• 手動でスケールアウト
• wordpressをgitでインストール
• loadbalancerのヘルスチェック
スパイク前に
Scale-out
落ち着いたら
Scale-in
スパイク前に
VMSSのScale-out
落ち着いたら
VMSSをScale-in
ACSは弾力性が
高いのだが..
細かなメッシュで
負荷に追従
Server HW
Hypervisor
VM
App Container
App
Deploy
Ready-to-go-Infrastructure
Provision/Boot
Install/Configure
VNet/Virtual Private Cloud
いつでもセルフプロビジョニング
できるリソースプール
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
どのノードもいつでもデプロイできるように
”暖めてある”リソースプール
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
どのノードもいつでもデプロイできるように
”暖めてある”リソースプール
サーバーレス基盤
いわゆる
を支える仕組み
そのサーバーレスネイティブな内部実装
ILB
Instances
Kudu
LoadBalancer
Deployer Telemetry
Prod/Stage
Blob
Allocate
Deploy
Allocate
そのサーバーレスネイティブな内部実装
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
高負荷時の苦労の大部分は “Too Many Connections” との闘い
Connection
Pool
Request
Application
Server
RDB
Load
Balancer
Connection
Pool
Request
AppService
Cosmos DB
ILB
VIP
約10分
Downtime
30秒
15秒
VIP
Primary
Node
10GB
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/
SQL Database
参照系ワークロード 更新系ワークロード
注文
Service Bus
Queue
Blob Storage
画像/動画
Functions
(Fixed)
カート
ショップ利用者
商品メンテナンス(新商品追加・販売終了)
在庫管理システム
入荷
商品ID/単価/在庫
出荷
順番性の保証
目的別/商品別/優先度別の
キュー配置
各キュー専用の処理インスタンス
ユーザ/商品ID/数量
商品ID/商品名/
商品説明
商品画像 フルテキスト
インデックス AAD B2C
認証
ユーザーアカウント
権限情報
Web Apps
Functions
(Dynamic)
Mobile Apps
App Service
API Apps
Microsoft Azure
Web Apps
Azure
Search
Cosmos DB
(DocumentDB)
一覧/検索詳細
インデクシング
“Adaptive Scale”
Store-Front Architecture Pattern
ECサイト等の
「一覧」「詳細」「絞り込み」
「全文検索」
などのバックエンド機能を
ほぼNoOpsで実現可能
Web-Document-Search (WDS)
アーキテクチャパターン
ECサイト:一覧画面
一覧表示
全文検索
絞り込み
サムネイル
ECサイト:詳細画面
商品画像
商品説明
・仕様
Web Apps
SearchCosmos DB
(Document)
一覧/全文検索
インデクシング
一般的なRDBベースのフロント処理
Azure の WDSパターンでのフロント処理
処理方式 性能(レスポンスタイム)
一覧 RDBへのクエリー
(範囲やKey)
INDEXやデータ量に依存
非常に遅くなる場合もある
詳細 RDBへのクエリー
(ユニークKey)
基本的に速いが、他処理での高負
荷時は引きずられる
全文検索 RDBへのLike検索 重い。機能が限定的。他の検索エ
ンジンを併用する場合が多い
詳細
RDB
処理方式 性能
一覧 Searchへのクエリー
(属性やファセット)
作成済みINDEXのみ対象のため、
元データに依存せず常に高速
詳細 Cosmos DBへのクエ
リー(ユニークKey)
検索処理と分離されているため、
常に高速
全文検索 Searchへのクエリー
(複数の属性横断)
ワードINDEXが生成されているた
め、ゆらぎ対応も含めて常に高速
アプリ
サーバ
一覧/詳細/全文検索
Web Apps
SearchCosmos DB
(Document)
一覧/全文検索
インデクシング
一般的なRDBベースのフロント処理
Azure の WDSパターンでのフロント処理
処理方式 性能(レスポンスタイム)
一覧 RDBへのクエリー
(範囲やKey)
INDEXやデータ量に依存
非常に遅くなる場合もある
詳細 RDBへのクエリー
(ユニークKey)
基本的に速いが、他処理での高負
荷時は引きずられる
全文検索 RDBへのLike検索 重い。機能が限定的。他の検索エ
ンジンを併用する場合が多い
詳細
RDB
処理方式 性能
一覧 Searchへのクエリー
(属性やファセット)
作成済みINDEXのみ対象のため、
元データに依存せず常に高速
詳細 Cosmos DBへのクエ
リー(ユニークKey)
検索処理と分離されているため、
常に高速
全文検索 Searchへのクエリー
(複数の属性横断)
ワードINDEXが生成されているた
め、ゆらぎ対応も含めて常に高速
アプリ
サーバ
一覧/詳細/全文検索
コネクションも含めた処理間の依存関係が強く
性能を安定させづらい
目的毎に処理ノードを分離し、ステートレスに
呼び出すことで、リニアに性能を制御できる
ECサイト:詳細画面
商品画像
商品説明
・仕様
データ一貫性が
求められる
ACIDトランザクションが
必要な要素のみRDBを使う
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
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
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
オンプレミスシステム
Functions
Storage
Queue
Cosmos DB
(Document)
画像アップロードや、
他システムとの同期などは
QLL※ + Scale-out で実装
※Queue-based Load Leveling
Microsoft Cloud Design Patterns
https://docs.microsoft.com/en-us/azure/architecture/patterns/queue-based-load-leveling
Message
WebJobs / Functions
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実装
ジョブ・スパイク
無理矢理感が
あったが
Message
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 の予備ノードを利用
ほぼ理想型に
WebJobs / Functions
• ペアリージョン(Pair Region)
• 障害ドメイン(Fault Domain)
App Service App Service App Service
Traffic Manager
日本リージョン 北米リージョン ヨーロッパリージョン
日本ユーザー 北米ユーザー ヨーロッパユーザー
Cosmos DB Cosmos DBCosmos DB
リアルタイムGeoレプリケーション
SQL Database SQL Database
リアルタイムGeoレプリケーション
SQL Database
グローバル単一エンドポイントが提供されているため、
リージョン全体の障害発生時にも
日本リージョン 北米リージョン ヨーロッパリージョン
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) 米国東部 西ヨーロッパ
日本ユーザ 米国ユーザ ヨーロッパユーザ
オンプレミス
システム
ローカルでの
インデクシング
Azure CDN Azure CDN Azure CDN
SQL Database
リアルタイムGeoレプリケーション
SQL Database
Blob
Storage
Blob
Storage
App Service App Service App Service App Service App Service App Service App Service App Service App Service App Service
Cosmos DB Cosmos DB
リアルタイムGeoレプリケーション
Web Apps Web Apps Web Apps Web Apps
Web Apps Web AppsWeb Apps Web AppsWeb Apps Web Apps
Application
Gateway
Application
Gateway
App Service
Web Apps
Web Apps
Application
Gateway
Application
Gateway
Application
Gateway
Application
Gateway
西日本東日本(Primary)
西日本リージョン東日本リージョン
Traffic Manager
App Service
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 ビジネスニーズを実現せよ
Azure 高速サイトソリューション

More Related Content

What's hot

ルーメン・テクノロジーズ エッジプラットフォーム Varnish・Node.js
ルーメン・テクノロジーズ エッジプラットフォーム Varnish・Node.jsルーメン・テクノロジーズ エッジプラットフォーム Varnish・Node.js
ルーメン・テクノロジーズ エッジプラットフォーム Varnish・Node.jsYOSHITAKA NAKAHARA
 
[MW05] その API、本当に大丈夫? ~ 公開前に知っておくべき API の保護と最適化 ~
[MW05] その API、本当に大丈夫? ~ 公開前に知っておくべき API の保護と最適化 ~[MW05] その API、本当に大丈夫? ~ 公開前に知っておくべき API の保護と最適化 ~
[MW05] その API、本当に大丈夫? ~ 公開前に知っておくべき API の保護と最適化 ~de:code 2017
 
AWS Cloud Design Pattern for Enterprise
AWS Cloud Design Pattern for EnterpriseAWS Cloud Design Pattern for Enterprise
AWS Cloud Design Pattern for EnterpriseAkio Katayama
 
[MW07] OSS on Azure で構築するモバイルバックエンド
[MW07] OSS on Azure で構築するモバイルバックエンド[MW07] OSS on Azure で構築するモバイルバックエンド
[MW07] OSS on Azure で構築するモバイルバックエンドde:code 2017
 
エンタープライズJava環境におけるマイクロサービス・アーキテクチャーの必要性 #natsumiB4
エンタープライズJava環境におけるマイクロサービス・アーキテクチャーの必要性 #natsumiB4エンタープライズJava環境におけるマイクロサービス・アーキテクチャーの必要性 #natsumiB4
エンタープライズJava環境におけるマイクロサービス・アーキテクチャーの必要性 #natsumiB4Takakiyo Tanaka
 
コマンド1発でAzureにDC/OS環境を作る方法
コマンド1発でAzureにDC/OS環境を作る方法コマンド1発でAzureにDC/OS環境を作る方法
コマンド1発でAzureにDC/OS環境を作る方法Toru Makabe
 
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践真吾 吉田
 
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -Yoichi Kawasaki
 
オトナのService Fabric~マイクロサービス編
オトナのService Fabric~マイクロサービス編オトナのService Fabric~マイクロサービス編
オトナのService Fabric~マイクロサービス編Tatsuaki Sakai
 
Azure Blueprints - 企業で期待される背景と特徴、活用方法
Azure Blueprints - 企業で期待される背景と特徴、活用方法Azure Blueprints - 企業で期待される背景と特徴、活用方法
Azure Blueprints - 企業で期待される背景と特徴、活用方法Toru Makabe
 
Microsoft Azure 概要 (2015 年 4 月版)
Microsoft Azure 概要 (2015 年 4 月版)Microsoft Azure 概要 (2015 年 4 月版)
Microsoft Azure 概要 (2015 年 4 月版)Osamu Monoe
 
Microsoft Azure ~ Web開発 & モバイル開発者向け情報 ~
Microsoft Azure ~ Web開発 & モバイル開発者向け情報 ~ Microsoft Azure ~ Web開発 & モバイル開発者向け情報 ~
Microsoft Azure ~ Web開発 & モバイル開発者向け情報 ~ Daisuke Masubuchi
 
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンAzure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンKazuyuki Miyake
 
ハイブリッドクラウドの現実とAzureの使いどころ
ハイブリッドクラウドの現実とAzureの使いどころハイブリッドクラウドの現実とAzureの使いどころ
ハイブリッドクラウドの現実とAzureの使いどころToru Makabe
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Shotaro Suzuki
 
Getting Started With AKS
Getting Started With AKSGetting Started With AKS
Getting Started With AKSBalaji728392
 
それでもボクはMicrosoft Azure を使う
それでもボクはMicrosoft Azure を使うそれでもボクはMicrosoft Azure を使う
それでもボクはMicrosoft Azure を使うMasaki Takeda
 
Power app custom api v0.1.21.1221
Power app custom api v0.1.21.1221Power app custom api v0.1.21.1221
Power app custom api v0.1.21.1221Ayumu Inaba
 

What's hot (20)

ルーメン・テクノロジーズ エッジプラットフォーム Varnish・Node.js
ルーメン・テクノロジーズ エッジプラットフォーム Varnish・Node.jsルーメン・テクノロジーズ エッジプラットフォーム Varnish・Node.js
ルーメン・テクノロジーズ エッジプラットフォーム Varnish・Node.js
 
[MW05] その API、本当に大丈夫? ~ 公開前に知っておくべき API の保護と最適化 ~
[MW05] その API、本当に大丈夫? ~ 公開前に知っておくべき API の保護と最適化 ~[MW05] その API、本当に大丈夫? ~ 公開前に知っておくべき API の保護と最適化 ~
[MW05] その API、本当に大丈夫? ~ 公開前に知っておくべき API の保護と最適化 ~
 
AWS Cloud Design Pattern for Enterprise
AWS Cloud Design Pattern for EnterpriseAWS Cloud Design Pattern for Enterprise
AWS Cloud Design Pattern for Enterprise
 
[MW07] OSS on Azure で構築するモバイルバックエンド
[MW07] OSS on Azure で構築するモバイルバックエンド[MW07] OSS on Azure で構築するモバイルバックエンド
[MW07] OSS on Azure で構築するモバイルバックエンド
 
エンタープライズJava環境におけるマイクロサービス・アーキテクチャーの必要性 #natsumiB4
エンタープライズJava環境におけるマイクロサービス・アーキテクチャーの必要性 #natsumiB4エンタープライズJava環境におけるマイクロサービス・アーキテクチャーの必要性 #natsumiB4
エンタープライズJava環境におけるマイクロサービス・アーキテクチャーの必要性 #natsumiB4
 
Apache Spark on Azure
Apache Spark on AzureApache Spark on Azure
Apache Spark on Azure
 
コマンド1発でAzureにDC/OS環境を作る方法
コマンド1発でAzureにDC/OS環境を作る方法コマンド1発でAzureにDC/OS環境を作る方法
コマンド1発でAzureにDC/OS環境を作る方法
 
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
 
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -
Azure Functions&Logic Appではじめるサーバレスアプリケーション開発 - 入門編 -
 
オトナのService Fabric~マイクロサービス編
オトナのService Fabric~マイクロサービス編オトナのService Fabric~マイクロサービス編
オトナのService Fabric~マイクロサービス編
 
Azure Blueprints - 企業で期待される背景と特徴、活用方法
Azure Blueprints - 企業で期待される背景と特徴、活用方法Azure Blueprints - 企業で期待される背景と特徴、活用方法
Azure Blueprints - 企業で期待される背景と特徴、活用方法
 
Microsoft Azure 概要 (2015 年 4 月版)
Microsoft Azure 概要 (2015 年 4 月版)Microsoft Azure 概要 (2015 年 4 月版)
Microsoft Azure 概要 (2015 年 4 月版)
 
Microsoft Azure ~ Web開発 & モバイル開発者向け情報 ~
Microsoft Azure ~ Web開発 & モバイル開発者向け情報 ~ Microsoft Azure ~ Web開発 & モバイル開発者向け情報 ~
Microsoft Azure ~ Web開発 & モバイル開発者向け情報 ~
 
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンAzure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
 
ハイブリッドクラウドの現実とAzureの使いどころ
ハイブリッドクラウドの現実とAzureの使いどころハイブリッドクラウドの現実とAzureの使いどころ
ハイブリッドクラウドの現実とAzureの使いどころ
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
 
Getting Started With AKS
Getting Started With AKSGetting Started With AKS
Getting Started With AKS
 
Api gatewayの話
Api gatewayの話Api gatewayの話
Api gatewayの話
 
それでもボクはMicrosoft Azure を使う
それでもボクはMicrosoft Azure を使うそれでもボクはMicrosoft Azure を使う
それでもボクはMicrosoft Azure を使う
 
Power app custom api v0.1.21.1221
Power app custom api v0.1.21.1221Power app custom api v0.1.21.1221
Power app custom api v0.1.21.1221
 

Similar to Azure 高速サイトソリューション

クラウドを積極活用した サービスの開発のために
クラウドを積極活用したサービスの開発のためにクラウドを積極活用したサービスの開発のために
クラウドを積極活用した サービスの開発のためにYuichiro Saito
 
AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -SORACOM, INC
 
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践de:code 2017
 
サーバ構築・デプロイが簡単に!Elastic beanstalk
サーバ構築・デプロイが簡単に!Elastic beanstalkサーバ構築・デプロイが簡単に!Elastic beanstalk
サーバ構築・デプロイが簡単に!Elastic beanstalkHirokazu Ouchi
 
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かすOpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かすKUNITO Atsunori
 
実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターンHiroyasu Suzuki
 
Architecting on Alibaba Cloud - 超基礎編 -
Architecting on Alibaba Cloud - 超基礎編 -Architecting on Alibaba Cloud - 超基礎編 -
Architecting on Alibaba Cloud - 超基礎編 -真吾 吉田
 
20130226 Amazon Web Services 勉強会(新宿)
20130226 Amazon Web Services 勉強会(新宿)20130226 Amazon Web Services 勉強会(新宿)
20130226 Amazon Web Services 勉強会(新宿)真吾 吉田
 
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデートAkira Inoue
 
Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編Microsoft Azure Japan
 
20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architecture20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architectureIssei Hiraoka
 
Amazon Web Services 最新事例集
Amazon Web Services 最新事例集Amazon Web Services 最新事例集
Amazon Web Services 最新事例集SORACOM, INC
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - SORACOM, INC
 
Apps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウドApps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウドHirotada Watanabe
 
[AWS Summit 2012] ソリューションセッション#2 リーンクラウドでいこう! クラウドで実現するリーンスタートアップ
[AWS Summit 2012] ソリューションセッション#2 リーンクラウドでいこう! クラウドで実現するリーンスタートアップ[AWS Summit 2012] ソリューションセッション#2 リーンクラウドでいこう! クラウドで実現するリーンスタートアップ
[AWS Summit 2012] ソリューションセッション#2 リーンクラウドでいこう! クラウドで実現するリーンスタートアップAmazon Web Services Japan
 
20140621 july techfesta (JTF2014) 突発**むけAWS
20140621 july techfesta (JTF2014) 突発**むけAWS20140621 july techfesta (JTF2014) 突発**むけAWS
20140621 july techfesta (JTF2014) 突発**むけAWSYasuhiro Araki, Ph.D
 
20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS Azure20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS AzureIssei Hiraoka
 

Similar to Azure 高速サイトソリューション (20)

クラウドを積極活用した サービスの開発のために
クラウドを積極活用したサービスの開発のためにクラウドを積極活用したサービスの開発のために
クラウドを積極活用した サービスの開発のために
 
AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -
 
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
 
サーバ構築・デプロイが簡単に!Elastic beanstalk
サーバ構築・デプロイが簡単に!Elastic beanstalkサーバ構築・デプロイが簡単に!Elastic beanstalk
サーバ構築・デプロイが簡単に!Elastic beanstalk
 
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かすOpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かす
 
実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン
 
Architecting on Alibaba Cloud - 超基礎編 -
Architecting on Alibaba Cloud - 超基礎編 -Architecting on Alibaba Cloud - 超基礎編 -
Architecting on Alibaba Cloud - 超基礎編 -
 
20130226 Amazon Web Services 勉強会(新宿)
20130226 Amazon Web Services 勉強会(新宿)20130226 Amazon Web Services 勉強会(新宿)
20130226 Amazon Web Services 勉強会(新宿)
 
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート.NET の過去、現在、そして未来 ~ .NET 最新アップデート
.NET の過去、現在、そして未来 ~ .NET 最新アップデート
 
Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編
 
20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architecture20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architecture
 
Amazon Web Services 最新事例集
Amazon Web Services 最新事例集Amazon Web Services 最新事例集
Amazon Web Services 最新事例集
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
 
Apps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウドApps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウド
 
[AWS Summit 2012] ソリューションセッション#2 リーンクラウドでいこう! クラウドで実現するリーンスタートアップ
[AWS Summit 2012] ソリューションセッション#2 リーンクラウドでいこう! クラウドで実現するリーンスタートアップ[AWS Summit 2012] ソリューションセッション#2 リーンクラウドでいこう! クラウドで実現するリーンスタートアップ
[AWS Summit 2012] ソリューションセッション#2 リーンクラウドでいこう! クラウドで実現するリーンスタートアップ
 
20140621 july techfesta (JTF2014) 突発**むけAWS
20140621 july techfesta (JTF2014) 突発**むけAWS20140621 july techfesta (JTF2014) 突発**むけAWS
20140621 july techfesta (JTF2014) 突発**むけAWS
 
Growing up serverless
Growing up serverlessGrowing up serverless
Growing up serverless
 
Serverless Revolution
Serverless RevolutionServerless Revolution
Serverless Revolution
 
20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS Azure20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS Azure
 
Serverless for VUI
Serverless for VUIServerless for VUI
Serverless for VUI
 

More from Hiromasa Oka

ZOZOTOWNのアーキテクトという役割を紹介します
ZOZOTOWNのアーキテクトという役割を紹介しますZOZOTOWNのアーキテクトという役割を紹介します
ZOZOTOWNのアーキテクトという役割を紹介しますHiromasa Oka
 
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来Hiromasa Oka
 
NoOps Meetup Tokyo #9 Opening
NoOps Meetup Tokyo #9 OpeningNoOps Meetup Tokyo #9 Opening
NoOps Meetup Tokyo #9 OpeningHiromasa Oka
 
クラウドネイティブトランスフォーメーションのススメ
クラウドネイティブトランスフォーメーションのススメクラウドネイティブトランスフォーメーションのススメ
クラウドネイティブトランスフォーメーションのススメHiromasa Oka
 
NoOps Meetup Tokyo #8 1st Anniversary - Opening
NoOps Meetup Tokyo #8 1st Anniversary -  Opening NoOps Meetup Tokyo #8 1st Anniversary -  Opening
NoOps Meetup Tokyo #8 1st Anniversary - Opening Hiromasa Oka
 
NoOps Meetup Tokyo #7 Opening
NoOps Meetup Tokyo #7 Opening NoOps Meetup Tokyo #7 Opening
NoOps Meetup Tokyo #7 Opening Hiromasa Oka
 
ZOZOTOWN の Cloud Native Journey
ZOZOTOWN の Cloud Native JourneyZOZOTOWN の Cloud Native Journey
ZOZOTOWN の Cloud Native JourneyHiromasa Oka
 
もう「効率化」なんてゴミ箱に捨ててしまおう
もう「効率化」なんてゴミ箱に捨ててしまおうもう「効率化」なんてゴミ箱に捨ててしまおう
もう「効率化」なんてゴミ箱に捨ててしまおうHiromasa Oka
 
de:code 2019 SP07 実践NoOps
de:code 2019 SP07 実践NoOpsde:code 2019 SP07 実践NoOps
de:code 2019 SP07 実践NoOpsHiromasa Oka
 
NoOps Meetup Tokyo #6 Opening
NoOps Meetup Tokyo #6 Opening NoOps Meetup Tokyo #6 Opening
NoOps Meetup Tokyo #6 Opening Hiromasa Oka
 
NoOps Meetup Tokyo #5 Opening
NoOps Meetup Tokyo #5 Opening NoOps Meetup Tokyo #5 Opening
NoOps Meetup Tokyo #5 Opening Hiromasa Oka
 
NoOps Meetup Tokyo #4 Opening
NoOps Meetup Tokyo #4 OpeningNoOps Meetup Tokyo #4 Opening
NoOps Meetup Tokyo #4 OpeningHiromasa Oka
 
NoOps Meetup Tokyo #3 Opening
NoOps Meetup Tokyo #3 OpeningNoOps Meetup Tokyo #3 Opening
NoOps Meetup Tokyo #3 OpeningHiromasa Oka
 
NoOpsが目指す未来とコンテナ技術
NoOpsが目指す未来とコンテナ技術NoOpsが目指す未来とコンテナ技術
NoOpsが目指す未来とコンテナ技術Hiromasa Oka
 
NoOps Meetup Tokyo #2 Opening
NoOps Meetup Tokyo #2 Opening NoOps Meetup Tokyo #2 Opening
NoOps Meetup Tokyo #2 Opening Hiromasa Oka
 
勝てる「開発プロセス」のつくり方
勝てる「開発プロセス」のつくり方勝てる「開発プロセス」のつくり方
勝てる「開発プロセス」のつくり方Hiromasa Oka
 
15分で分かる NoOps
15分で分かる NoOps15分で分かる NoOps
15分で分かる NoOpsHiromasa Oka
 
NoOps Meetup Tokyo #1 Opening
NoOps Meetup Tokyo #1 OpeningNoOps Meetup Tokyo #1 Opening
NoOps Meetup Tokyo #1 OpeningHiromasa Oka
 
新世代の価値観へ越境せよ
新世代の価値観へ越境せよ新世代の価値観へ越境せよ
新世代の価値観へ越境せよHiromasa Oka
 
NoOps で変わる 人とシステムの関わりかた
NoOps で変わる 人とシステムの関わりかたNoOps で変わる 人とシステムの関わりかた
NoOps で変わる 人とシステムの関わりかたHiromasa Oka
 

More from Hiromasa Oka (20)

ZOZOTOWNのアーキテクトという役割を紹介します
ZOZOTOWNのアーキテクトという役割を紹介しますZOZOTOWNのアーキテクトという役割を紹介します
ZOZOTOWNのアーキテクトという役割を紹介します
 
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
 
NoOps Meetup Tokyo #9 Opening
NoOps Meetup Tokyo #9 OpeningNoOps Meetup Tokyo #9 Opening
NoOps Meetup Tokyo #9 Opening
 
クラウドネイティブトランスフォーメーションのススメ
クラウドネイティブトランスフォーメーションのススメクラウドネイティブトランスフォーメーションのススメ
クラウドネイティブトランスフォーメーションのススメ
 
NoOps Meetup Tokyo #8 1st Anniversary - Opening
NoOps Meetup Tokyo #8 1st Anniversary -  Opening NoOps Meetup Tokyo #8 1st Anniversary -  Opening
NoOps Meetup Tokyo #8 1st Anniversary - Opening
 
NoOps Meetup Tokyo #7 Opening
NoOps Meetup Tokyo #7 Opening NoOps Meetup Tokyo #7 Opening
NoOps Meetup Tokyo #7 Opening
 
ZOZOTOWN の Cloud Native Journey
ZOZOTOWN の Cloud Native JourneyZOZOTOWN の Cloud Native Journey
ZOZOTOWN の Cloud Native Journey
 
もう「効率化」なんてゴミ箱に捨ててしまおう
もう「効率化」なんてゴミ箱に捨ててしまおうもう「効率化」なんてゴミ箱に捨ててしまおう
もう「効率化」なんてゴミ箱に捨ててしまおう
 
de:code 2019 SP07 実践NoOps
de:code 2019 SP07 実践NoOpsde:code 2019 SP07 実践NoOps
de:code 2019 SP07 実践NoOps
 
NoOps Meetup Tokyo #6 Opening
NoOps Meetup Tokyo #6 Opening NoOps Meetup Tokyo #6 Opening
NoOps Meetup Tokyo #6 Opening
 
NoOps Meetup Tokyo #5 Opening
NoOps Meetup Tokyo #5 Opening NoOps Meetup Tokyo #5 Opening
NoOps Meetup Tokyo #5 Opening
 
NoOps Meetup Tokyo #4 Opening
NoOps Meetup Tokyo #4 OpeningNoOps Meetup Tokyo #4 Opening
NoOps Meetup Tokyo #4 Opening
 
NoOps Meetup Tokyo #3 Opening
NoOps Meetup Tokyo #3 OpeningNoOps Meetup Tokyo #3 Opening
NoOps Meetup Tokyo #3 Opening
 
NoOpsが目指す未来とコンテナ技術
NoOpsが目指す未来とコンテナ技術NoOpsが目指す未来とコンテナ技術
NoOpsが目指す未来とコンテナ技術
 
NoOps Meetup Tokyo #2 Opening
NoOps Meetup Tokyo #2 Opening NoOps Meetup Tokyo #2 Opening
NoOps Meetup Tokyo #2 Opening
 
勝てる「開発プロセス」のつくり方
勝てる「開発プロセス」のつくり方勝てる「開発プロセス」のつくり方
勝てる「開発プロセス」のつくり方
 
15分で分かる NoOps
15分で分かる NoOps15分で分かる NoOps
15分で分かる NoOps
 
NoOps Meetup Tokyo #1 Opening
NoOps Meetup Tokyo #1 OpeningNoOps Meetup Tokyo #1 Opening
NoOps Meetup Tokyo #1 Opening
 
新世代の価値観へ越境せよ
新世代の価値観へ越境せよ新世代の価値観へ越境せよ
新世代の価値観へ越境せよ
 
NoOps で変わる 人とシステムの関わりかた
NoOps で変わる 人とシステムの関わりかたNoOps で変わる 人とシステムの関わりかた
NoOps で変わる 人とシステムの関わりかた
 

Azure 高速サイトソリューション

  • 1. EC やキャンペーン サイトのパフォーマンスを向上! ~ 最新高速ハイスケール サービスの採用と機能の最適配置で お客様向け Web サイトを高速化
  • 2. Founder and CEO ZEN ARCHITECTS Co.,Ltd. Hiromasa Oka
  • 3.
  • 4. 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) 米国東部 西ヨーロッパ 日本ユーザ 米国ユーザ ヨーロッパユーザ オンプレミス システム ローカルでの インデクシング Azure CDN Azure CDN Azure CDN SQL Database リアルタイムGeoレプリケーション SQL Database Blob Storage Blob Storage https://www.microsoft.com/ja-jp/casestudies/ffs.fujifilm.aspx
  • 5. App Service App Service App Service App Service App Service App Service App Service App Service App Service App Service Cosmos DB Cosmos DB リアルタイムGeoレプリケーション Web Apps Web Apps Web Apps Web Apps Web Apps Web AppsWeb Apps Web AppsWeb Apps Web Apps Application Gateway Application Gateway App Service Web Apps Web Apps Application Gateway Application Gateway Application Gateway Application Gateway 西日本東日本(Primary) 西日本リージョン東日本リージョン Traffic Manager App Service
  • 6.
  • 7.
  • 8.
  • 10.
  • 15.
  • 16.
  • 17. Auto Scaling の動作 (Linux + PHP + Wordpress + MySQL) ①VMのCPUの使用率をトリガーに Auto Scaling が開始する。 ②Auto Scaling 設定で定義されている イメージが起動し、起動スクリプトの内容に沿って構築が始まる。 ③起動スクリプトで chef がキックされる。また、 Git サーバーから Web アプリケーションもデプロイされる。 Linux + MySQL, phpのinstall + yum update + wordpressをGitからpull ④chef での構築後に LB のヘルスチェックが成功した段階でサービスイン。
  • 18. Auto Scaling の動作 (Linux + PHP + Wordpress + MySQL) 事前に、Gitからコンテナ(Docker Image)を構築 (CIによるプロダクションコードのCommit時の実行が望ましい) ①CPUの使用率をトリガーに Auto Scaling が開始する。 ②Auto Scaling 設定で定義されているContainerが起動。 ③必要アプリケーションがインストールされているDocker ImageをRegistryからデプロイ。 ⑤LB のヘルスチェックが成功した段階でサービスイン。 Git Server
  • 19. Auto Scaling の動作 (Linux + PHP + Wordpress + MySQL) 事前に、Gitからコンテナ(Docker Image)を構築 (CIによるプロダクションコードのCommit時の実行が望ましい) ①LBへのRequest/secやCPUの使用率をトリガーに、Docker ImageをAppServiceリソースグループにデプロイ。 ②内部LBによるヘルスチェックが成功した段階でサービスインされる。 Git Server AppService パフォーマンス情報 ① AppServiceリソースグループAzure Container Registory
  • 20. VMSS + Chef ACS (Docker) AppService on Linux 2台→4台 約 7 分 約 40 秒 約 17 秒 2台→10台 約 7 分 約 41 秒 約 20 秒 検証環境 • VM • LoadBalancer • AutoScaleSet(オートスケール) • Chef-Solo • Github • Azure Container Service • DC/OS • Marathon • Docker Container • Github • AppService on Linux with Docker Container • Github プロセス • 手動でスケールアウト • ベースイメージ起動 • yum install • php, mysqlをchefでインストール • wordpressをgitでインストール • apache起動 • loadbalancerのヘルスチェック • 手動でスケールアウト • ベースイメージ起動 • wordpressをgitでインストール • apache起動 • loadbalancerのヘルスチェック • 手動でスケールアウト • wordpressをgitでインストール • loadbalancerのヘルスチェック
  • 24. Server HW Hypervisor VM App Container App Deploy Ready-to-go-Infrastructure Provision/Boot Install/Configure VNet/Virtual Private Cloud いつでもセルフプロビジョニング できるリソースプール
  • 25. 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 どのノードもいつでもデプロイできるように ”暖めてある”リソースプール
  • 26. 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 どのノードもいつでもデプロイできるように ”暖めてある”リソースプール サーバーレス基盤 いわゆる を支える仕組み
  • 28. そのサーバーレスネイティブな内部実装 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
  • 29.
  • 30.
  • 34. VIP Primary Node 10GB 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/
  • 35.
  • 36. SQL Database 参照系ワークロード 更新系ワークロード 注文 Service Bus Queue Blob Storage 画像/動画 Functions (Fixed) カート ショップ利用者 商品メンテナンス(新商品追加・販売終了) 在庫管理システム 入荷 商品ID/単価/在庫 出荷 順番性の保証 目的別/商品別/優先度別の キュー配置 各キュー専用の処理インスタンス ユーザ/商品ID/数量 商品ID/商品名/ 商品説明 商品画像 フルテキスト インデックス AAD B2C 認証 ユーザーアカウント 権限情報 Web Apps Functions (Dynamic) Mobile Apps App Service API Apps Microsoft Azure Web Apps Azure Search Cosmos DB (DocumentDB) 一覧/検索詳細 インデクシング “Adaptive Scale” Store-Front Architecture Pattern ECサイト等の 「一覧」「詳細」「絞り込み」 「全文検索」 などのバックエンド機能を ほぼNoOpsで実現可能 Web-Document-Search (WDS) アーキテクチャパターン
  • 39. Web Apps SearchCosmos DB (Document) 一覧/全文検索 インデクシング 一般的なRDBベースのフロント処理 Azure の WDSパターンでのフロント処理 処理方式 性能(レスポンスタイム) 一覧 RDBへのクエリー (範囲やKey) INDEXやデータ量に依存 非常に遅くなる場合もある 詳細 RDBへのクエリー (ユニークKey) 基本的に速いが、他処理での高負 荷時は引きずられる 全文検索 RDBへのLike検索 重い。機能が限定的。他の検索エ ンジンを併用する場合が多い 詳細 RDB 処理方式 性能 一覧 Searchへのクエリー (属性やファセット) 作成済みINDEXのみ対象のため、 元データに依存せず常に高速 詳細 Cosmos DBへのクエ リー(ユニークKey) 検索処理と分離されているため、 常に高速 全文検索 Searchへのクエリー (複数の属性横断) ワードINDEXが生成されているた め、ゆらぎ対応も含めて常に高速 アプリ サーバ 一覧/詳細/全文検索
  • 40. Web Apps SearchCosmos DB (Document) 一覧/全文検索 インデクシング 一般的なRDBベースのフロント処理 Azure の WDSパターンでのフロント処理 処理方式 性能(レスポンスタイム) 一覧 RDBへのクエリー (範囲やKey) INDEXやデータ量に依存 非常に遅くなる場合もある 詳細 RDBへのクエリー (ユニークKey) 基本的に速いが、他処理での高負 荷時は引きずられる 全文検索 RDBへのLike検索 重い。機能が限定的。他の検索エ ンジンを併用する場合が多い 詳細 RDB 処理方式 性能 一覧 Searchへのクエリー (属性やファセット) 作成済みINDEXのみ対象のため、 元データに依存せず常に高速 詳細 Cosmos DBへのクエ リー(ユニークKey) 検索処理と分離されているため、 常に高速 全文検索 Searchへのクエリー (複数の属性横断) ワードINDEXが生成されているた め、ゆらぎ対応も含めて常に高速 アプリ サーバ 一覧/詳細/全文検索 コネクションも含めた処理間の依存関係が強く 性能を安定させづらい 目的毎に処理ノードを分離し、ステートレスに 呼び出すことで、リニアに性能を制御できる
  • 42. 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
  • 43. 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
  • 44. 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 オンプレミスシステム Functions Storage Queue Cosmos DB (Document) 画像アップロードや、 他システムとの同期などは QLL※ + Scale-out で実装 ※Queue-based Load Leveling
  • 45. Microsoft Cloud Design Patterns https://docs.microsoft.com/en-us/azure/architecture/patterns/queue-based-load-leveling
  • 46. Message WebJobs / Functions 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実装 ジョブ・スパイク 無理矢理感が あったが
  • 47. Message 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 の予備ノードを利用 ほぼ理想型に WebJobs / Functions
  • 48.
  • 51. App Service App Service App Service Traffic Manager 日本リージョン 北米リージョン ヨーロッパリージョン 日本ユーザー 北米ユーザー ヨーロッパユーザー
  • 52. Cosmos DB Cosmos DBCosmos DB リアルタイムGeoレプリケーション SQL Database SQL Database リアルタイムGeoレプリケーション SQL Database グローバル単一エンドポイントが提供されているため、 リージョン全体の障害発生時にも 日本リージョン 北米リージョン ヨーロッパリージョン
  • 53. 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) 米国東部 西ヨーロッパ 日本ユーザ 米国ユーザ ヨーロッパユーザ オンプレミス システム ローカルでの インデクシング Azure CDN Azure CDN Azure CDN SQL Database リアルタイムGeoレプリケーション SQL Database Blob Storage Blob Storage
  • 54. App Service App Service App Service App Service App Service App Service App Service App Service App Service App Service Cosmos DB Cosmos DB リアルタイムGeoレプリケーション Web Apps Web Apps Web Apps Web Apps Web Apps Web AppsWeb Apps Web AppsWeb Apps Web Apps Application Gateway Application Gateway App Service Web Apps Web Apps Application Gateway Application Gateway Application Gateway Application Gateway 西日本東日本(Primary) 西日本リージョン東日本リージョン Traffic Manager App Service
  • 55. 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 ビジネスニーズを実現せよ