Azureでのデプロイ
デプロイ前の準備
提供が必要なリソース
- 製品デプロイ専用の新しいサブスクリプションを用意し、そのサブスクリプションでOpenAI関連リソースの作成が可能であることを確認してください。
- Azure ADアカウント。このアカウントは該当サブスクリプションにContributor以上の権限を持っている必要があります。
- 既存のAADアカウントをゲストとしてテナントに追加し権限を付与することも、デプロイ専用のAADアカウントを新規作成することも可能です。
- このアカウントはAADアプリ登録の作成・構成ができる必要があります(例:Application Developerロールの付与)。
インストールが必要なツール
- Azure SQLおよびPGSQLに接続できるデータベースクライアント(例:DBeaver)
- Azure Storage Explorer
- Az CLI コマンドライン
- Terraformコマンドラインのインストール
習得しておくべき知識(推奨)
- Azureリソース(例:App Service、Azure SQL、Storage、Key Vaultなど)について一定の理解があり、Azure Portalでリソース管理ができること
- SERVICEME製品の機能と基本操作について一定の理解があること
- 製品の基本機能(Agent Q&A、ドキュメントアップロード、前処理、ドキュメント翻訳など)を理解している
- ユーザー、組織、ロールの作成・設定、ユーザーパスワードリセットを理解している
- Agentの作成、権限付与、設定を理解している
- スペースの作成、権限付与、設定を理解している
- https://docs.serviceme.com/
- Terraformについて一定の理解があり、公式のazure-get-startedチュートリアルを完了していること
製品デプロイアーキテクチャおよびリソース一覧
Terraformスクリプトでは2種類のデプロイオプションを提供しています。必要に応じて選択してください。
標準デプロイアーキテクチャ
Private Endpointデプロイアーキテクチャは、Private Endpoint/Vnetを通じて内部リソースのネットワーク分離を実現し、さらにセキュリティを高めます。
Private Endpointを利用する場合、基本的な従量課金に加え、追加のネットワークトラフィック料金が発生します。
各コンポーネントの用途説明
種類 | カスタム名 | 用途説明 |
---|---|---|
Azure Front Door | CDN | (オプション)コンテンツ配信ネットワーク。静的リソースのアクセスを高速化 |
Azure Front Door | API Acceleration | (オプション)APIアクセラレーション。APIアクセスを高速化 |
API Management | API Endpoint | API管理エンドポイント。APIの管理に使用 |
App Service | API Service | APIサービス。APIリクエストの処理に使用 |
App Service | Job Service | ジョブサービス。高負荷タスクや定期タスクの実行に使用 |
Azure OpenAI Service | LLM-Primary | メイン大規模言語モデル。Agent Q&Aの主モデル(例:gpt-4o) |
Azure OpenAI Service | LLM-Secondary | サブ大規模言語モデル。ドキュメント処理の補助モデル(例:gpt-4o-mini) |
Azure OpenAI Service | Embedding | ベクトル埋め込み。ベクトルデータの処理に使用 |
Azure OpenAI Service | Text to Image | テキスト画像生成。テキストから画像生成タスクに使用 |
Azure OpenAI Service | Whisper | 音声認識。音声認識タスクの処理に使用 |
Azure AI Document Intelligence | Document OCR | ドキュメントOCR認識。ドキュメントOCRタスクの処理に使用 |
Azure AI services | Document Translate | ドキュメント翻訳。ドキュメント翻訳タスクの処理に使用 |
Azure SQL Database | Data | データストレージ。メインデータベース。システムの大部分のデータを格納 |
Azure Database for PostgreSQL | Index | インデックスデータベース。主にドキュメント関連のインデックスデータを格納 |
Azure Cache for Redis | Cache | キャッシュサービス。データのキャッシュに使用 |
Storage Accounts | Files | ファイルストレージ。ユーザーアップロードファイルの保存に使用 |
Key Vault | - | キー管理。キーの保存に使用 |
Azure Monitor | - | (オプション)リソース監視サービス。リソースのメトリクス情報の収集・分析 |
Application Insights | - | (オプション)アプリ監視サービス。アプリパフォーマンス監視・問題診断に使用 |
Vnet/Subnet | - | (オプション)Azureリソースの論理的な分離ネットワークとサブネットの定義 |
Private Endpoint | - | (オプション)プライベートIPでAzureサービスに安全に接続 |
Private DNS Zone | - | (オプション)プライベートDNS。サービスのFQDNをプライベートIPに解決 |
Managed Identity | - | (オプション)マネージドID。リソース間通信の認証情報 |
Public IP | - | (オプション)パブリックIPアドレス。Private Endpointデプロイ時、Standard tierのAPI ManagementにパブリックIPが必要 |
Network Security Group | - | (オプション)ネットワークセキュリティグループ。リソースのネットワークアクセス制御 |
参考構成
- 500ユーザー構成
- 3000ユーザー構成
- 3000ユーザー超構成
- Private Endpoint構成
上記構成は参考用です。実際の負荷状況に応じて調整してください。
製品デプロイの実施
デプロイフロー
- デプロイの実行
- AADアプリ登録の作成
- デプロイパッケージの準備
- Azureアカウントへのログイン、サブスクリプションの切り替え
- デプロイの実行
- AADアプリ登録の更新
- リソースパッケージのアップロード、システム起動
- フロントエンドデプロイパッケージ、フォントパッケージ、アイコンリソースのインストール
- ライセンスのインストール
- システム起動、起動成功の確認
- システムチェック
- 管理者によるシステムログイン
- システム機能の正常動作テスト
- 設定の最適化
- システム設定の変更
- Agent設定
- スペース設定
- ドキュメントアップロードのテスト
Terraformデプロイ
AADアプリ登録の作成
Azure Entra IDでAADアプリ登録を作成し、client_id
を取得します。
命名規則:appreg-[app-name]-[environment]
例:appreg-serviceme-trial
デプロイパッケージの準備
最新のデプロイパッケージ(Terraformデプロイパッケージ、フォントパッケージ、アイコンリソース、Webフロントエンドデプロイパッケージ、モバイルデプロイパッケージ、ブラウザ拡張パッケージ)は製品チームにお問い合わせください。
Terraformデプロイパッケージ内のREADME.mdファイルを参照し、記載の手順に従ってvariables.tfファイルの各パラメータを設定してください。
Private Endpoint機能を有効にする場合は、variables.tfファイルのdeploy_private_network
変数をtrue
に設定してください。VnetおよびsubnetのIPアドレス設定はnetwork.tfファイルで行ってください。
enable_public_network_access
変数について:
- この変数はAPIM以外の全リソースのパブリックアクセス権限を制御します
- すべてのデプロイ完了後にこのオプションを
false
に設定することを推奨します - 早期に無効化すると、Terraformスクリプトの正常実行に影響する場合があります
- 一度無効化すると、vnet外からkeyvaultやデータベース等のリソースにアクセスできなくなります。VPN Gatewayやジャンプサーバーのデプロイが必要です
Azureアカウントへのログイン、サブスクリプションの切り替え
デプロイパッケージの作業ディレクトリでpowershellを開き、以下のコマンドでAzureにログインします。TENANT_ID
は顧客提供のテナントIDです。
Global Cloud ログインコマンド
az login --tenant TENANT_ID
Global Cloud以外の場合は--cloudパラメータを指定します。例:
China Cloud ログインコマンド
az login --tenant TENANT_ID --cloud AzureChinaCloud
サブスクリプションIDの設定。[subscriptionId]
は顧客提供のサブスクリプションIDです。
az account set --subscription "[subscriptionId]"
現在のサブスクリプションを確認し、正しいサブスクリプションにログインしていることを確認します。
az account show
デプロイの実行
まず、これから実行される変更が期待通りかどうかを確認します。
terraform plan
+ 新規リソースの追加
- リソースの削除
~ リソースの更新
問題なければ、これらの変更を本番適用します。Terraformは再度変更内容を確認・出力し、yes
と入力して確定します。
terraform apply
デプロイ完了までお待ちください(約20~60分、APIMのデプロイは特に時間がかかります)。
エラーがなければ、Terraformは作成されたリソース数を表示し、デプロイ成功となります。
エラーが発生した場合は、エラーメッセージに従って原因を調査してください。よくある問題は以下の通りです:
- 実行中にnetwork errorやrequest timeout等のエラーが発生
- Terraform applyを再実行することで解決する場合が多いです
- 実行中にResource already exists等のエラーが発生
- Azure Portalで該当リソースが既に存在していないか確認し、存在する場合はPortalから削除してください(一部リソースはPurge Protectionが有効なため、専用のaz cliコマンドで削除が必要な場合があります)
- OpenAIリソースの作成失敗、quota不足のエラー
- 該当リージョンのOpenAIリソース上限を確認し、不足している場合は他リージョンに変更してください
AADアプリ登録の更新
APIMのURLをAADアプリ登録に追加します(ルール:$APIM_GATEWAY_URL + "/"、例:https://xxx-apim.azure-api.net/ )。access token、ID tokenのチェックを忘れずに。
リソースパッケージのアップロード、システム起動
フロントエンドデプロイパッケージ、フォントパッケージ、アイコンリソースのインストール
以下のリソースをAzure Storage Accountの該当コンテナにアップロードします。Azure Storage Explorerまたはaz cliコマンドでアップロード可能です。
- フォントパッケージを
backend-core-fonts
コンテナにアップロード - アイコンリソースを
icons
コンテナにアップロード - Webフロントエンドデプロイパッケージを
static-site
コンテナにアップロード(既存のconfig.jsファイルは上書きしないでください) - ブラウザ拡張デプロイパッケージを
extension
コンテナにアップロード(存在しない場合は手動で作成) - モバイルデプロイの場合は、
static-site
コンテナ内にmobile
フォルダを作成し、モバイルデプロイパッケージ内のconfig.jsを設定後、そのフォルダにアップロード
ライセンスのインストール
ライセンスファイルをAzure Storage Accountのstatic-site
コンテナにアップロードします。
システムの起動とデプロイ状態の検証
-
設定を変更してアプリサービスを有効化
variables.tf
ファイルを開くenable_app_service
変数値をtrue
に更新
-
設定変更を適用
terraform apply
コマンドを実行- デプロイ完了まで待機
-
サービス稼働状況の確認
- Azure Portalにログイン
- 以下サービスのMonitorログをそれぞれ確認:
- api_app_service
- scheduler_app_service
- pythoncore_app_service
- すべてのサービスが正常に起動していることを確認
サービス起動に異常がある場合は、エラーログをよく確認し、具体的なエラーに基づいて調査・修正してください。
Private Endpointデプロイ環境の場合、以下の点にご注意ください:
- デプロイ完了後、パブリックアクセスを制限する場合は
enable_public_network_access
変数をfalse
に設定してください - この設定により、APIM以外の全リソースのパブリックアクセスが無効化され、システムのセキュリティが向上します
- パブリックアクセスを無効化した場合の注意点:
- TerraformからkeyvaultやStorageリソースへの直接アクセスができなくなります
- 以降のterraform apply操作が失敗する可能性があります
- 解決策:
- 案1:一時的にパブリックアクセスを有効化し、terraform apply完了後に無効化
- 案2:ジャンプサーバーやVPN Gateway経由でvnetに接続しスクリプトを実行
システムチェック
管理者によるシステムログイン
APIMのURLからシステムにログインします。デフォルト管理者アカウントはservicemeadmin、デフォルトパスワードはデプロイパッケージのREADME.mdファイルに記載されています。
システム機能の正常動作テスト
設定の最適化
Agent設定
AgentのQ&Aの精度や回答内容の形式は、Promptや関連パラメータの影響を大きく受けます。
以下リンクにAgent設定例を掲載しています。顧客のシナリオに合わせてカスタマイズしてください。
Agentをエンドユーザーに提供する前に十分なテストを行い、関連スキルが正しく呼び出され、Q&Aの精度や回答内容の形式がユーザー要件を満たしていることを確認してください。
スペース設定
スペースやドキュメント属性の設定は、ドキュメントの前処理段階での分割戦略に影響します。状況に応じて最適な設定を選択し、より高いドキュメント精度を目指してください。
設定変更後は、関連ドキュメントのインデックスを再生成してください。そうしないと設定は新規アップロードドキュメントにのみ適用されます。
ドキュメントアップロードのテスト
サンプルドキュメントや顧客提供ドキュメントをシステムにアップロードし、前処理完了後にAgent Q&Aでテストしてください。
システム設定の変更
必要に応じてシステムのロゴやタイトルを変更してください。