CloudLabsのアーキテクチャとインフラストラクチャデプロイの自動化:技術詳解
Ready to See CloudLabs in Action?
Turn your ideas into hands-on experiences. Tell us what you're looking for, and team CloudLabs will help you find the right solution.
CloudLabsは、技術トレーニング、ワークショップ、業界カンファレンス、POC、デモなど、さまざまなシナリオのラボ環境を計画、プロビジョニングし、そのライフサイクルを管理するために使用されるハンズオンラボプラットフォームです。CloudLabsは世界中のテクノロジー企業や講師に利用されており、毎月数千ものラボ環境をプロビジョニングする規模で運用されています。
この記事では、そのような規模でラボを管理するために私たちが使用している基盤技術について、Azureの力を活用しながら詳しく見ていきます。
本記事は、MicrosoftによるApplied Cloud Storiesの取り組みの一環として公開されています。この取り組みについての詳細はこちらのリンクをご覧ください。
CloudLabsのアーキテクチャと基盤技術
次の図は、CloudLabsにおけるアーキテクチャと情報の流れを高いレベルで示したものです。
High Level Architecture - CloudLabsプラットフォーム
CloudLabsは、ソリューション全体にわたってAzure PaaSサービスを使用してデプロイされています。これにより、基盤となるインフラストラクチャの管理を気にすることなく、数千件規模のデプロイに対応できます。
認証
認証にはAzure AD B2Cを使用しています。Azure AD B2Cを利用することで、Azure AD、LinkedIn、Microsoft Account(Live ID)など、さまざまな認証メカニズムを提供できます。
私たちの主眼はB2Bにあるため、Azure AD B2Cを使用することで、AzureADをIDプロバイダーとして利用している企業がシングルサインオンを使ってCloudLabsの管理ポータルにアクセスできるようになります。現時点では、Azure ADおよびLinkedInによる認証が有効になっています。
CloudLabs B2Cログインポータル
アプリケーションホスティング
CloudLabsアーキテクチャの各コンポーネントをホストするために、さまざまなAzure PaaS技術を活用しています。アーキテクチャ図には高いレベルで使用されているソリューションコンポーネントが含まれていましたが、ここでは私たちが使用しているAzureサービスをすべて見ていきましょう。以下が含まれます。
- Webアプリ用のApp Service
- APIサービスのホスティング用のAzure API Management
- バックエンドデータベース用のAzure SQL Database Elastic Pool
- オンデマンドアプリケーションとカスタム拡張機能用のAzure Functions
- すべての静的コンテンツ用のAzure Storage Account
- すべてのシークレットと証明書を保存するためのAzure Key Vault
- テレメトリ分析、アプリケーション全体のパフォーマンス、デバッグ用のApplication Insights
- あらゆる検索機能用のAzure Cognitive Search
- グローバルなサイト負荷分散用のTraffic Manager
- Webアプリケーションセキュリティ用のApplication Gateway WAF
- パブリックDNSのホスティング用のAzure DNS
- アプリケーション間の通信とメッセージング用のAzure Service Bus
- 監視とアラート用のAzure Monitor
- リアルタイム通信用のAzure SignalR
- データ分析とデータウェアハウジング用のAzure Synapse Analytics
- 分析用のデータ取り込みパイプライン用のAzure Data Factory
- カスタム拡張機能の一部をオンデマンドで実行するためのAzure Container Instances
CloudLabsの開発およびデプロイプロセス
DevOpsプラットフォームとしてAzure DevOpsを使用しており、テストとリリースのパイプラインは完全に自動化されています。ソースコードは複数のAzure Reposに保存されています。
デプロイはまずdev環境とQA環境で実行され、十分な検証とテストを経てから本番環境へプッシュされます。ビルドとリリースをすべての環境に段階的に管理するための単一のパイプラインが構築されています。
データベーススキーマのアップグレードはスクリプトによって実行され、同じAzure Pipelinesを通じてデプロイされます。現時点ではブルーグリーンデプロイの手法に従っています。すべての本番デプロイは手動で承認される一方、テスト/QAデプロイはmasterブランチでのプルリクエスト完了時に自動化されます。
セキュリティ
CloudLabsプラットフォームのアクセスとデータのセキュリティを維持するために、Azureの以下のセキュリティ機能を活用しています。
- アクセスセキュリティ: プラットフォーム内にはユーザーの認証情報を一切保存しておらず、認証はAzure AD B2Cを通じて処理されます。これにより、条件付きアクセスや多要素認証などのAzure AD Premiumのセキュリティ機能を通じて管理者アカウントを保護できます。
- ロールベースアクセス制御: プラットフォームのアクセスはゼロベースでRBACを前提に設計されており、知る必要がある範囲でのみアクセスを提供できます。
- アプリケーションセキュリティ: すべてのWebアプリとAPIアプリはAzure App Service上でホストされ、HTTPSのみが許可され、TLSバージョン1.2が強制されています。私たちは
- データベースセキュリティ: Azure SQL Databaseの透過的データ暗号化、動的データマスキング、その他複数のセキュリティ機能を活用してデータベースを保護しています。データベースへの管理者アクセスは、AADを通じたJITアクセスの原則に従って有効化され、MFA保護によってアクセスが保護されています。各種レポートやデータビューについては、SQLの行レベルセキュリティを利用してデータアクセスを保護しています。
- Azure Application Gateway WAF V2:インターネットからのあらゆる攻撃を防ぐため、Azure Application Gateway WAF v2を検出モードで活用しています。
- Azure Security CenterおよびAzure Monitor:セキュリティの観点から環境全体の健全性を監視するためにAzure Security Centerを活用しており、アラートはAzure Monitorを通じて設定されています。
- 静的データをホストするストレージアカウントは、サーバー側の暗号化とアクセスキーの定期的なローテーションによって保護されています。
- Azure Key Vaultは、アクセス情報を設定ファイルに一切保存しない、安全な認証情報ストアとして使用されています。
事業継続性と災害復旧
CloudLabsのシステムは、すべてのコンポーネントについて高可用性を基本的な設計要件として設計されています。各レイヤーで複数のApp Service、API Managementインスタンス、SQL Elastic Poolなどの類似技術を使用しており、これによりCloudLabsは耐障害性を備え、負荷が急増した際にはスケールアップまたはスケールアウトできるようになっています。
CloudLabsのすべてのコンポーネントは、追加の2つのAzureリージョンに冗長デプロイを持ち、SQLデータベースは3つのAzureリージョンにレプリケートされています。エンドユーザー向けのエンドポイントはTraffic Managerを通じて公開されており、障害が発生した場合でもアプリケーションにアクセスするエンドユーザーに影響が及ばないようにしています。
インフラストラクチャラボデプロイの自動化
CloudLabsは、さまざまなSDKおよびAPI、具体的にはAzure ARM APIとMicrosoft Graph APIを通じてMicrosoft Cloudと統合されています。AzureへのすべてのデプロイはAPI経由で開始され、そのライフサイクル全体を通じて追跡されます。
CloudLabsにおけるすべての情報は、さまざまなデプロイ方法、構成の選択肢、自動化オプションから構成されるラボ定義テンプレートに保存されています。それらには以下が含まれます。
- ARM Templates
- PowerShellおよびCLIスクリプト
- Python
- Selenium
- プラットフォーム拡張機能
- Azure API
- Databricks拡張機能
- Azure Machine Learning拡張機能
- Synapse Analytics拡張機能
ラボ定義には、Custom Azure RoleやAzure Policyといった機能を含む、ラボ環境のセキュリティを強化するさまざまな方法が含まれており、プラットフォームによって有効化される高度なセキュリティ構成の一部も備わっています。
Shared Image GalleryとARM Templatesを使用したVMベースのラボデプロイの自動化
CloudLabsは、私たちのユーザーに対して印象的な学習体験を提供するため、卓越したラボ体験を実現しています。そのための重要な要件の1つは、サインアップ時に追加のセットアップを必要とせず、ラボ環境をすぐに使用できる状態にしておくことです。CloudLabsは、必要な前提条件と望ましい体験構成をすべてVMイメージにパッケージ化しており、これらは多くの顧客に向けて数千のラボ環境をデプロイするために使用されています。
これらのイメージを保存するためにAzure Shared Image Galleryを使用しています。Shared Image Galleryをセットアップし、それを使ってVMをデプロイすること自体はかなり簡単ですが、毎月数千件のデプロイで数百のイメージを維持管理するとなると、話は大きく変わってきます。
私たちは、Azure DevOps、PowerShell、Shared Image Gallery、ARM Templates、そしてCloudLabs独自の機能を組み合わせて、インフラストラクチャ全体を自動化しています。
Shared Image GalleryとVMイメージの自動化
イメージの更新およびレプリケーションプロセスを自動化するために、Azure Pipelines(Azure DevOpsの一部)が使用されています。
フローには以下が含まれます。
- 管理者が新しいVHDイメージを定義済みのストレージアカウントにアップロードするか、Azure上で直接イメージを作成します。
- Azure DevOpsが変更を検知し、Shared Image Gallery内に既存バージョンのイメージがすでに存在するかどうかを識別します。
- 手順2の結果に基づき、Azure PipelinesはShared Image Gallery内にイメージの新しいバージョンを作成するか、イメージとともに提供された構成に基づいて新しいイメージ定義を作成します。
- パイプラインは、指定された構成に基づいてイメージを複数のAzureリージョンにレプリケートします。
- 管理者はShared Image Galleryを参照するARM Templatesを使用し、CloudLabs管理ポータルでラボ定義を更新します。テンプレートは、Azureのサブスクリプションやリージョンをまたいで使用できるように構築されています。テンプレートのサンプルは本記事末尾で共有されています。
- CloudLabsを通じて、顧客は数回のクリックだけでこうしたインスタンスを数千件デプロイできます。
現在、ラボデプロイのシナリオにAzure VM Image Builderを統合する取り組みを進めており、イメージの構築と更新のプロセスをよりシームレスかつカスタマイズ可能にしようとしています。VM Image Builderがもたらすあらゆる機能によってデプロイ体験を向上させることを楽しみにしています。
オンプレミスラボインフラストラクチャの移行におけるAzureの入れ子仮想化の活用
従来、ラボインフラストラクチャは、Hyper-Vや同様のハイパーバイザー技術を実行するオンプレミスの仮想化インフラストラクチャ上にデプロイされてきました。ラボのデプロイには通常、ラボ内のさまざまなVM向けの一連のVHDと、それらのVMを起動するためにPowerShellで構築されたデプロイスクリプトが含まれていました。これらのスクリプトは通常、数時間にわたって実行され、障害を適時に検知して修正するために常時監視する必要がありました。ラボ環境において容量の問題が発生することも珍しくなく、それによって多くの参加者が同じラボVMを共有せざるを得ない状況が一般的に生じていました。私たちは、Azureの入れ子仮想化機能を活用することで、こうした課題を解決し、参加者や講師にとって望ましくない体験が生じる可能性を排除しています。
CloudLabsを利用することで、トレーナーはラボのトポロジやスクリプト全体を再構築することなく、こうしたオンプレミスのラボインフラストラクチャをAzureへ移行できます。
DSv2およびESv3のVMシリーズで動作するAzure VMを使用することで、VM内部でHyper-Vを実行し、本格的な仮想化を活用してAzure VM内にVMをホストできます。Hyper-VホストでのNATの使用によりVMにインターネットアクセスを可能にする方法や、Hyper-V上のRRASを使用してゲストVMをAzure仮想ネットワーク上で稼働する他のリソースに接続する方法など、さまざまなネットワークトポロジが利用可能です。ラボのトポロジに応じて、必要なネットワーク構成を把握し、Custom Script Extensionsを使用してそれを自動化しています。
これらのホストはその後イメージに変換され、CloudLabsを通じて自動化された形で数千回デプロイされます。
顧客によるCloudLabsの活用方法
顧客は、数時間から数か月のライフサイクルを持つラボインスタンスを毎月数千件デプロイするためにCloudLabsを利用しています。これまでの統計の一部を見てみましょう。
- 400000+件のラボインスタンスをデプロイ
- 28920+名の参加者をトレーニング
- 5000+件のイベント
CloudLabsはあらゆる種類のクラウドインフラストラクチャデプロイを自動化するために利用できますが、私たちの顧客は特に以下のユースケースにおいて、すべての人にとっての体験を向上させています。
- 社内・社外トレーニング
- パートナーイネーブルメント
- セールスイネーブルメント
- クラウドデプロイオーケストレーション
- 仮想ラボ
- 自習型学習
- 資格試験対策
- ハッカソン
- POC
- 営業デモ
リソース
- Shared Image Galleryを使用したARM Templateのサンプル - 今すぐアクセス
- コードサンプル、ラボサンプル、ガイドなど多数のリポジトリを含むSpektra SystemsのGitHubアカウント - 今すぐアクセス
ありがとうございました。プラットフォームに変更を加え、Azureとともに革新を続ける中で、この記事も随時更新してまいります。
著者- Amit Malik
Ready to See CloudLabs in Action?
Turn your ideas into hands-on experiences. Tell us what you're looking for, and team CloudLabs will help you find the right solution.




