Azureでのデプロイ
デプロイ前の準備
提供が必要なリソース
- 製品のデプロイ専用の新しいサブスクリプションを用意し、そのサブスクリプションでOpenAI関連リソースが作成できることを確認してください。
- Azure ADアカウント。このアカウントはサブスクリプションのOwner権限を持っている必要があります。
- 既存の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で該当リソースが既に存在するか確認し、存在する場合はAzure Portalで削除してください(一部リソースはPurge Protectionがあるため、専用のaz cliコマンドで削除が必要な場合があります)
- OpenAIリソースの作成に失敗し、quota不足のエラーが表示される
- 該当Regionの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を設定後アップロードしてください
対応するPowerShellコマンド例(バージョン3.2_u4以前は、スクリプト実行ユーザーにStorageアクセス権限を付与する必要があります)
$Env:AZCOPY_AUTO_LOGIN_TYPE="AZCLI"
azcopy copy 'https://stservicemedeployassets.blob.core.windows.net/icons' 'https://xxx.blob.core.windows.net/icons' --recursive=true --overwrite=ifSourceNewer
azcopy copy 'https://stservicemedeployassets.blob.core.windows.net/frontend/3.2.41/*' 'https://xxx.blob.core.windows.net/static-site' --recursive=true --overwrite=ifSourceNewer --exclude-path 'config.js'
azcopy copy 'https://stservicemedeployassets.blob.core.windows.net/fonts' 'https://xxx.blob.core.windows.net/backend-core-fonts' --recursive=true --overwrite=ifSourceNewer
ライセンスのインストール
ライセンスファイルを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でテストしてください。
システム設定の変更
必要に応じてシステムのロゴやタイトルを変更してください。
