azure paasを活用したモダン e コマースソリューションの構築方法
TRANSCRIPT
Azure PaaSを活用したモダンE コマースソリューションの構築方法
Yoichi KawasakiAzure Technology Solution ProfessionalAsia Intelligent Cloud Global Black BeltMicrosoft Corporation
Slides for Azure Webinar: Modern EC Solutions
アジェンダ
• Azure PaaS Overview
• 事例解説 – Jet.com
• 事例解説 – ドミノピザ
今日のお客様の高い顧客体験への期待
スピード
79%遅いウェブサイトには戻りたくない
パーソナライゼーション
38%繰り返しの作業や何度も同じ情報入力を求められたくない
一貫性
65%デバイス体験の一貫性のなさにフラストレーションを感じている( スマホ、オンライン、店舗)
• https://www.glassboxdigital.com/
• Accenture Global Consumer Pulse 2013
• https://blog.kissmetrics.com/speed-is-a-killer/
サイトの応答速度が与える購買活動への影響
5Source(Kissmetric Blog: https://blog.kissmetrics.com/loading-time/?wide=1)
一般的にページロードが遅いと離脱率は高くなる
ショッピングサイト
では47%が2秒以内のページロードを期待
79%が遅いショッピングサイトに不満を持った場合に戻ってこない
重くのしかかる運用コスト
災害対策(DR)、冗長化対策、高負荷対策、
CI/CD、セキュリティ対策
本当に必要なことに十分な時間がとれていますか?例えば顧客体験の向上とか
ITトレンドの変化、人材不足
コンピュート ストレージ ネットワーキング
Azureが提供するプラットフォームサービス
セキュリティ&マネジメント
ウェブ・モバイル
Web Apps
MobileApps
APIManagement
APIApps
LogicApps
NotificationHubs
メディア & CDN
Content DeliveryNetwork (CDN)
MediaServices
分析 & IoT
HDInsight MachineLearning
StreamAnalytics
DataFactory
EventHubs
MobileEngagement
ActiveDirectory
Multi-FactorAuthentication
Automation
Portal
Key Vault
インテグレーション/連携
BiztalkServices
HybridConnections
ServiceBus
StorageQueues
Store /Marketplace
ハイブリットオペレーション
Backup
StorSimple
SiteRecovery
Import/Export
データ
SQLDatabase
DocumentDB
RedisCache Search
Tables
SQL DataWarehouse
Azure AD Connect Health
AD PrivilegedIdentity Management
OperationalInsights
コンピュート
CloudServices
Batch Remote App
ServiceFabric
開発者向けサービス
Visual Studio
ApplicationInsights
Azure SDK
Team Project
VM Image Gallery& VM Depot
Infrastructure Services
Platform Services
8
責任範囲の比較
ストレージ
サーバー
ネットワーク
ゲスト OS
ミドルウエア
仮想化
データ
アプリケーション
ランタイム
ホスト OS
ユーザー管理 ベ
ンダー管理
ベンダー管理
ユーザー管理
ユーザー管理
ストレージ
サーバー
ネットワーク
ゲスト OS
ミドルウエア
仮想化
データ
アプリケーション
ランタイム
ホスト OS
ストレージ
サーバー
ネットワーク
ゲスト OS
ミドルウエア
仮想化
データ
アプリケーション
ランタイム
ホスト OS
アプリとデータに集中することができる
Azure アプリケーションプラットフォーム
多様なデータストアの選択肢ストアタイプ 目的 Azureの選択肢
Relational storeTransactions, joins,
structured data, familiar
SQL query
SQL Database
SQL DW
NoSQL JSON
document store
Flexible schema, familiar
SQL query, low latency
Cosmos DB
(DocumentDB)
NoSQL key-value pair
store
Low-cost, fast, massive
scaleTables
NoSQL wide-column
store
Open-source, integration
with Hadoop analytics
HBase on
HDInsight
Cache Increasing speed of an
appRedis Cache
Search serviceIntegrating search into
an app. Full text searchAzure Search
GraphStore entities and
relationship between
entities
Cosmos DB
(Graph)Key/value
OrdersCart Catalog & Reviews
Document
Suggestions
Graph
E-Commerce platform
RDBMS
Application Insights リソースを選択してカスタムメトリックに
ここでは:
最小1, 最大10, 規定2
Azure Search インデクサー
インデクサー設定の詳細
インデクサーを使用した Cosmos DB と Azure Search の接続
https://docs.microsoft.com/ja-jp/azure/search/search-howto-index-documentdb
IndexWriter
Indexer REST API
インデクサーによる定期更新• インデクサーの定期的実行による更新: 最小5分• 変更、削除検知し差分実行• データソースのフルクロール可
インデクシングAPIで直接更新• POST: /indexes/<name>/docs/index• アップロード 、マージ、削除など• 1度のバッチ: 最大 1,000 ドキュメント• リアルタイムに近いデータ更新
パーティション• 全てのドキュメントはパーティションの数分に分割保存(IO分散)
• 全パーティション合わせて1つのインデックスを構成
レプリカ• 全レプリカに同じものが複製同期される
• クエリはいづれかのレプリカに処理が割り当てられる
par1 par2 par3 par4 par5
rep1
rep2
rep3
rep4
p1 p2 p3 p4 p5
p1 p2 p3 p4 p5
p1 p2 p3 p4 p5
p1 p2 p3 p4 p5
https://docs.microsoft.com/azure/architecture/reference-architectures/app-service-web-app/scalable-web-app
リファレンスアーキテクチャ
Webアプリケーションハイパフォーマンス&スケーラブル構成• Azure Web Appフロント
• Web JobsとQueue Storageでバックグラウンドタスク実行
• Redis CacheとCDNでコンテンツキャッシュ
• SQL DBと Cosmos DBにデータストア
• Azure Searchとの連携
Domino’s Pizza
これまで抱えていた問題
リージョン1ストア
アプリ1
リージョン2ストア
アプリ 2
リージョン3ストア
アプリ 3
システムのスケールをリージョンごとに設定する必要があった
データの設定、メンテナンスもリージョンごとに個別
オーストラリア
EU
日本
User#1
(Location: Australia)
User#2
(Location: Germany)
Traffic Manager
Traffic Manager発信元の地理的な場所に基づいてユーザーを地理的に近いリージョンに優先的にルーティング
Azure Web Appフロントエンドをトラフィックに応じてオートスケール
Cosmos DBグローバルに読み込み・書き込みを低いレイテンシーで実現した分散データベース
全てのデータを自動的に世界中の Azure リージョンにレプリケートすることができる 読み取りリージョンで障害によるフェールオーバー
書き込みリージョンで障害によるフェールオーバー
• https://docs.microsoft.com/ja-jp/azure/cosmos-db/distribute-data-globally
• https://docs.microsoft.com/ja-jp/azure/cosmos-db/regional-failover
読み取りリージョンのルーティングに関する注意
Cosmos DBのマルチリージョン分散パターンにおいて読み取りリージョンが複数ある場合、読み取りリージョンは自動的に地理的条件に最適化されたリージョンにルーティング(アクセス元に最も地理的に近いリージョンへのルーティングなど)はされません。SDKにおいてPreferredLocationsで明示的にリージョンを指定してルーティング先を設定する必要があります。
詳しくはこちらのブログを参照ください
Cosmos DBで読み取りリージョンへ明示的にルーティングするhttps://k-miyake.github.io/blog/cosmos-db-preferred-locations/
https://docs.microsoft.com/azure/architecture/reference-architectures/managed-web-app/multi-region-web-app
リファレンスアーキテクチャ
Webアプリケーションの複数リージョン構成
• Traffic Managerによるルーティング
• Azure Web Appフロント
• SQL Database と Cosmos DB のGeo レプリケーション
• Azure Searchは各リージョンで個別に立てる
Resources› Azure eコマースソリューションページ:
https://azure.microsoft.com/ja-jp/solutions/ecommerce/
› Azureリファレンスアーキテクチャ - Web アプリ: https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/
› App Services Best Practices for Large Scale Applications:https://www.youtube.com/watch?v=HxpgiYc-F_k
› Jet.com事例: https://www.microsoft.com/ja-jp/casestudies/jetcom.aspx