DocumentDBとApp Serviceに見る新世代のクラウドネイティブソリューション

377 views

Published on

2017/4/11開催のセミナー資料です

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
377
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
15
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

DocumentDBとApp Serviceに見る新世代のクラウドネイティブソリューション

  1. 1. DocumentDBとApp Serviceに⾒る 新世代のクラウドネイティブソリューション 11 Apr. 2017 岡 ⼤勝
  2. 2. Profile • ZEN ARCHITECTS , The Architecting Company • Design the architecture of the customer system • Cloud-Native Transformation with Microsoft Azure • Supporting “In-House” development • Launch Agile Development • Hiromasa Oka • At DEC and HP involved in the asset management system for banks, life insurance using Alpha-NT. Rational Software strives to spread object-oriented and development processes and establishes ZEN ARCHITECTS. • In 2013, he was selected as the "Top IT architect of Japan" by Nikkei BP. Founder and CEO ZEN ARCHITECTS Co.,Ltd. Hiromasa Oka
  3. 3. ゼンアーキテクツの3種類の設計⽀援 アーキテクチャ設計 基本設計/実装⽅式設計 お客様の開発チーム にて実装 お客様選定の システム インテグレータ様 お客様社内に 内製チーム⽴ち上げ お客様サイドから インテグレータ様へ 成果物にて情報提供 お客様の開発チームに アーキテクトとして 参画して開発⽀援 内製チームの ⽴ち上げ⽀援 “NAISEI build-up program” アーキテクチャ設計から開発へ、シームレスに連携するために 開発フェーズ要件定義・基本設計フェーズ PoC PoC サンプル提供 サンプル提供 メンバーとして 開発⽀援 【※】弊社による受託開発はお請けしておりません PoC サンプル提供 メンバーとして 開発⽀援 チーム編成⽀援 プロセスの提供 初期PoC要求分析 Agile Dev ご相談
  4. 4. なぜPaaSなのか
  5. 5. の考える「⽬指すべきシステム」 • Adaptive Scale • ”Auto Scale”を超えた、負荷変動への弾⼒的追従 • Self Healing • 絶対に⽌まらない、絶対に失わない • Continuous Evolution • Deliveryを超えて、無停⽌で全てを⾰新する NoOps Design for 実現の鍵は・・・
  6. 6. NoOps実現の鍵 IaaS or PaaS ? Public or Private ? On-Premise or Cloud ?
  7. 7. NoOps実現の鍵 IaaS or PaaS ? Public or Private ? On-Premise or Cloud ? Cold Pool or Hot Pool
  8. 8. Cold Pool • Controllable, Secure, but … VM VM Hypervisor VM VM Hypervisor VM VM Hypervisor VM VM Hypervisor A0 A0 A0 A0 D2 D2 D2 D2 G G G G L L L L VM VM Hypervisor VM VM Hypervisor VM VM Hypervisor VM VM Hypervisor A0 A0 A0 A0 D2 D2 D2 D2 G G G G L L L VM VM Hypervisor VM VM Hypervisor VM VM Hypervisor A0 A0 A0 A0 D2 D2 D2 D2 G G G GVM VM Hypervisor VM VM Hypervisor VM VM Hypervisor A0 A0 A0 A0 D2 D2 D2 D2 G G G G VM App VM L VM VM Hypervisor L L L L VM Hypervisor L L L VM VM L App Server HW Hypervisor VM App Container App Deploy Ready-to-go-Infrastructure Provision/Boot Install/Configure VNet/Virtual Private Cloud VM App いつでもセルフプロビジョニング できるリソースプール
  9. 9. Hot Pool • “several pools of Workers pre-provisioned and ready to host your applications” • “allocated from a pool of ready-to-go Workers” https://msdn.microsoft.com/en-us/magazine/mt793270 VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container App App App App App App App App App Server HW Hypervisor VM App Container App Deploy Pre-provisioned/readytohost いつでもデプロイできるように ”暖めてある”リソースプール
  10. 10. App Serviceの特徴 • .NET、PHP、Java、Node.js等のアプリケーションを直接デプロイ可能 • ビルドしたバイナリやPHPコードや構成ファイルのみ • 裏でサーバが落ちてもリブートかけてもどんな時にも絶対にサービスを⽌めない設計。 • Auto Scale / Auto Healing / Always-on / Overlapped Recycling / Auto Backup 「Adaptive Scaleの実現を⽬指したアプリケーションコンテナ」 Ref: Inside the Azure App Service Architecture https://msdn.microsoft.com/en-us/magazine/mt793270
  11. 11. App Service の構成 • AppServiceはOSはWindows、WebサーバはIISで動作。 • AppService on LinuxはLinux + Apache で動作。かつDockerネイティブ。 • WebApps等のフロント系だけでなく、 WebJobs、Functionsのバックエンド処理インスタンスもApp Serviceで実⾏可能 • 20インスタンスまで⾃動スケールアウト可能(ASEは50) • グローバルGEO分散デプロイ可能 ILB Instances Kudu LoadBalancer Deployer Telemetry Prod/Stage App Blob VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container App App App App App App App App Assign Deploy
  12. 12. DocumentDBの特徴 • 性能に⾃信があるため、レイテンシ保証型SLAを提供。どんなリクエストでも • JSONネイティブのDocument型データベース • グローバル分散NoSQL • ボタンひとつで複数リージョンをまたいだ分散構成が可能 • ⼀貫性制御レベルを4段階で指定可能→ CAP定理のバランスを変えられる • 完全(同期型)〜結果整合(Eventually) • ⾼い検索性。格納された全データにインデックスを⽣成 • デフォルトは同期処理。⾮同期にも指定可能 「性能と⼀貫性のトレードオフ限界を追求したNoSQL」
  13. 13. DocumentDBの構成 • SSDネイティブに設計されたラッチフリーのDBエンジン • マルチコア最適化インメモリツリー型エンジン(BW-Tree) • SSD専⽤設計のLSS(Log Structured Store)ベース https://www.microsoft.com/en-us/research/publication/the-bw-tree-a-b-tree-for-new-hardware/ The architecture of BW-Tree atomic record store.
  14. 14. DocumentDBの構成 • インメモリ+SSDネイティブ実装による低レイテンシでのGEOレプリケーション • Hot Pool Nativeな設計によるAdaptiveなRUスケールアウト • Service Fabric上で稼働。Service Fabric = Hot Pool Native機能が準備されたアプリケーションコンテナ VIP Primary Node Secondary Secondary Replication Japan East US East VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container App App App App App App App App Assign Hypervisor VM VM Hypervisor VM VM ServiceFabric ServiceFabric ServiceFabric ServiceFabric DocDBDocDB DocDBDocDB Service Fabric
  15. 15. なぜ⾃分たちでインフラを組むのか? なぜ⾃分たちでインフラを運⽤するのか?
  16. 16. Cloud Native = “Hot Pool Native” “Hot Pool Native”に設計することで、 コンピューティングの壁を越えることができる • App Service / Functions • DocumentDB • SQL Database • Storage • etc.. VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container VM VM Hypervisor Container Container App App App App App App App App クラウドでもオンプレミスでも(やろうとおもえば)実現可能
  17. 17. Request Application Server RDB Load Balancer Connection Pool Request AppService DocumentDB ILB VIP Bottle-Neck is the connection management Auto scale is possible. Burst is difficult to follow 約10分 Failover Stateless including DB access 1分以内 15秒 “Cold Pool” Based Architecture “Hot Pool Native” Architecture
  18. 18. ECサイト ⼀覧表⽰ 詳細表⽰ 全⽂検索 絞り込み
  19. 19. Web Apps SearchDocumentDB SQL Database 参照系ワークロード 更新系ワークロード ⼀覧/検索詳細 注⽂ Service Bus Queue Blob Storage 画像/動画 Functions (Fixed) カート ショップ利⽤者 商品メンテナンス(新商品追加・販売終了) 在庫管理システム ⼊荷 商品ID/単価/在庫 出荷 順番性の保証 ⽬的別/商品別/優先度別の キュー配置 各キュー専⽤の処理インスタンス ユーザ/商品ID/数量 商品ID/商品名/ 商品説明 商品画像 フルテキスト インデックス “Adaptive Scale” Store-Front Architecture Pattern AAD B2C 認証 ユーザーアカウント 権限情報 Web Apps Functions (Dynamic) Mobile Apps App Service API Apps Microsoft Azure インデクシング 鉄板構成
  20. 20. 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 SearchDocumentDB ⼀覧/検索詳細 インデクシング “Adaptive Scale” Store-Front Architecture Pattern ECサイト等の 「⼀覧」「詳細」「絞り込み」 「全⽂検索」 などのバックエンド機能を ほぼNoOpsで実現可能
  21. 21. Microsoft Azure Search DocumentDB Blob Storage DocumentDB SQL Database Search ローカルでの インデクシング DocumentDB Search ローカルでの インデクシング リアルタイムGeo同期 App Service App Service App Service Traffic Manager 東⽇本(Primary) ⽶国東部 ⻄ヨーロッパ ⽇本ユーザ ⽶国ユーザ ヨーロッパユーザ 商品画像 商品画像 在庫管理システム Geo-Distributed Store-Front Architecture Pattern ローカルでの インデクシング Azure CDN Azure CDN Azure CDN グローバルGEO分散にも
  22. 22. Search DocumentDB Blob Storage SQL Database DocumentDB Search ローカルでの インデクシング リアルタイムGeo同期 App Service App Service Traffic Manager 東⽇本(Primary) ⻄⽇本(Secondary) ユーザ 商品画像 在庫管理システム Store-Front Disaster Recovery Architecture Pattern ローカルでの インデクシング Microsoft Azure Blob Storage Geo冗⻑レプリケーション(GRS) SQL Database アクティブGeoレプリケーション アクティブレプリケーション ディザスタ リカバリ構成にも 拡張できる
  23. 23. API Apps Search Document DB ⼀覧/検索詳細/ 属性管理 Blob Storage プレビュー/ サムネイル/動画 ファイル アップロード DOC/IMG/MOV 利⽤者 フルテキスト インデックス Cloud Storage Architecture Pattern 認証 App Service Microsoft Azure インデクシング Blob Storage Cognitive Service Machine Learning 画像認識 PC Clients(Windows/Mac)Mobile Clients(iOS/Android) API Gateway 外部システム Application Insights Azure Monitor UX向上(速度、検索性、快適性) Web Apps ⾼付加価値ファイルアップロード APIアクセス REST/OAuth2 SPA (Browser App) Functions (Serverless) プレビュー/ サムネイル⽣成 AAD B2C Encoder Streaming Unit Media Analytics 動画解析 Azure Queue 顔認識/状況認識/⽂字認識 インデックス/字幕/モーション検知/顔認識 プレビュー画像 エンコード済動画 バックグラウンド 負荷分散 付加属性 HLS Smooth Streaming MPEG-DASH Native App クラウドストレージにも 応⽤可能
  24. 24. SoR SoEモダナイゼーション SoRのSoE化
  25. 25. HTTP Request AppService ILB Detect Request/sec rise Scale-Out 15sec Monitoring request to HTTP endpoint for App Service WebApps Current solution for front-end processing for NoOps(Apr.2017) telemetry Now DocumentDB VIP Detects Max RUs/sec with telemetry and Scale-Out RU from Functions via Webhook telemetry Functions (Serverless) Call API “Scale-out RU” Webhook Alert Rule monitor 現在の実装Burst サービス毎にスケール
  26. 26. Message WebJobs ILB Queue Storage Queue /Service Bus Detect more than the CPU threshold Scale-Out WebJobs Instance monitor Monitoring CPU utilization of AppService Plan AppService Current solution for backend processing for NoOps(Apr.2017) Now telemetry DocumentDB VIP Detects Max RUs/sec with telemetry and Scale-Out RU from Functions via Webhook telemetry Functions (Serverless) Call API “Scale-out RU” Webhook Alert Rule monitor Job Spike バックエンドも同様
  27. 27. HTTP Request AppService DocumentDB ILB VIP Detects request/sec spikes Scale-Out Activation 3min 15sec Azure Monitor At the same time DocumentDB RU also Scale-Out Monitor Request/sec on App Service HTTP-Endpoint Req/sec settles down WebApps, DocumentDB and Scale-In to steady operation WebApps Ideal for front-end processing for NoOps Future 本来は”協調”してほしい Burst
  28. 28. Message DocumentDB VIP 3min Azure Monitor Functions (Consumption Plan = Serverless) ILB Queue Storage Queue /Service Bus Functions received messages in parallel execution monitor call API Monitor Functions TPS Scale Out/In DocumentDB according to the parallel degree of functions AppService Ideal for backend processing for NoOps Future Serverlessであれば 「気にしない」で使いたい Job Spike
  29. 29. Message DocumentDB VIP 3min Azure Monitor Functions (App Service Plan) ≒WebJobs ILB Queue Storage Queue /Service Bus Detects message retention and Functions the Scale-Out monitor call API Monitoring Queue queues At the same time, Scale- Out DocumentDB AppService Ideal for backend processing for NoOps at “Near Future” Future Job Spike きっとすぐに 実現してくれる
  30. 30. Elasticity Test Wordpressサービスを各アーキテクチャで2台→4台、2台→10台での起動時間を測定 VM+Chef Container(Docker) App Service 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 • Github プロセス • ⼿動でスケールアウト • ベースイメージ起動 • yum install • php, mysqlをchefでインストール • wordpressをgitでインストール • apache起動 • loadbalancerのヘルスチェック • ⼿動でスケールアウト • ベースイメージ起動 • wordpressをgitでインストール • apache起動 • loadbalancerのヘルスチェック • ⼿動でスケールアウト • wordpressをgitでインストール • loadbalancerのヘルスチェック
  31. 31. VMとAppServiceのリソースと課⾦体系の違い Azureで提供されるVMベースのサービスとAppServiceでは、同様のリソースを利⽤して いながらも、課⾦体系は⼤きく異なる。 専有リソース 共有リソース • 稼働させるコンピュートリソース(Container)に 合わせて事前にリソースを確保する必要ある • リソース追加には起動時間がかかる(VMのため) • 実際には余裕を持ってリソースを確保(VMを多⽬に 起動)するため、コスト効率が低下する • 既に起動(デプロイ)されている膨⼤な共有リソース上に必要なとき に必要な量のコンピュートリソース(Container)を確保が可能 • 既にリソースはデプロイされている(Hot Pool)ので、コンテナ拡張 に伴う起動時間はゼロ • 課⾦は利⽤したコンピュートリソースのみのため、コスト効率が⾼い • ★ゆえにASEは太っ腹 Container Container Container Container Container Container Container Container Container Container Container Container Azure VMでContainerを利⽤した場合 Azure AppServiceを利⽤した場合 課⾦対象 課⾦対象
  32. 32. クラウドネイティブソリューション実現の ための4つのポイント 1. Hot Pool Nativeな技術を選択する 2. 「⾮同期分散処理」が基本スタンス 3. インスタンスは全てStateless 4. 永続化メカニズムは適材適所で適⽤ 5. サービスレベルはシナリオベースで設定 ”テクノロジへの責務の適切な配分”
  33. 33. 登壇いたします
  34. 34. https://zenarchitects.co.jp

×