# App Service のサイズ設定

## 基本

SCEPman は主に CPU リソースに依存します。メモリとディスクはそれほど重要ではありません。

1 つの SCEPman インスタンス（バージョン 3.0 以降）は、1 つの Azure P0V3 App Service Plan（195 ACU）で、通常の条件下では 1 分あたり約 4000 リクエストを処理できます。リクエストには

* SCEP 発行リクエストと
* OCSP リクエストがあります。

つまり、SCEPman は 1 ACU あたり 1 分間に約 20 リクエストを処理できます。

証明書は 1 回登録されますが、その有効性は何度も確認されるため、合計では SCEP リクエストよりも OCSP リクエストの方がはるかに多くなります。したがって、SCEPman インスタンスのサイズは OCSP リクエストに基づいて決定してください。

## 依存関係

SCEPman サービスへの負荷にはいくつかの依存要素があり、環境によって異なります。重要な依存要素は次のとおりです。

1. リクエストの分散
2. ネットワークリソースへのログイン頻度
3. 証明書要求/更新の頻度

特にリクエストの分散は非常に重要です。すべてのクライアントが同時にリクエストすると、SCEPman インスタンスに大きな負荷がかかります。あらゆる場合において、SCEPman が SCEP リクエストに 1 分未満で応答できるようにすることを目指してください。

{% hint style="warning" %}
多数のユーザー/デバイスに対して一度に SCEP プロファイルを割り当てないでください。SCEPman インスタンスでリクエストのピークが発生する可能性があります。
{% endhint %}

## 推奨

Azure App Service Plan の初期値として、Azure Compute Unit（ACU）で次のサイジングを推奨します。

|   ユーザー/クライアント数   |                  単一構成                 |                     地理冗長構成                    |
| :--------------: | :-----------------------------------: | :-------------------------------------------: |
|   < 5000 クライアント  |    <p>\~100 ACU<br>（例: 1 x S1）</p>    |     <p>2 x \~100 ACU</p><p>（例: 2 x S1）</p>    |
|  < 10.000 クライアント |  <p>\~200 ACU</p><p>（例: 1 x P0V3）</p> |    <p>2 x \~200 ACU</p><p>（例: 2 x P0V3）</p>   |
|  < 25.000 クライアント |  <p>\~400 ACU</p><p>（例: 2 x P0V3）</p> |     <p>2 x \~400 ACU<br>（例: 4 x P0V3）</p>     |
|  < 50.000 クライアント |  <p>\~800 ACU</p><p>（例: 4 x P0V3）</p> |     <p>2 x \~800 ACU<br>（例: 8 x P0V3）</p>     |
| < 100.000 クライアント | <p>\~1600 ACU</p><p>（例: 4 x P1V3）</p> |   <p>2 x \~1600 ACU</p><p>（例: 8 x P1V3）</p>   |
| > 100.000 クライアント | <p>\~3200 ACU</p><p>（例: 4 x P2V3）</p> | <p>2 x \~3200 ACU</p><p>（例: 2 x 4 x P2V3）</p> |

これらの推奨に基づいて、トラフィックを監視し、次のセクションで説明するようにスケールダウンできるかどうかを確認できます。 [細かな調整](#fine-tuning) 以下。

## Azure コスト予測

主な Azure コストは Azure App Service Plan にかかります。上の表の要件と [Azure の価格表](https://azure.microsoft.com/en-us/pricing/calculator/) または一般的な割引なしの [App Service の価格](https://azure.microsoft.com/en-us/pricing/details/app-service/windows/) 概要からコストを算出できます。

追加の Azure リソース（Key Vault、Storage Account、Log Analytics、プライベート エンドポイント用のネットワークリソース）は、コスト面では小さな役割しか果たしません。環境内のユースケースによっては、これらの追加 Azure リソースに対して App Service Plan のコストに加えて 5% から 25% の追加コストを見込む必要があります。

{% hint style="info" %}
このコスト予測は、Azure のコストを見積もるための大まかな目安にすぎません。環境によって大きく異なる場合があります。
{% endhint %}

## 細かな調整

各環境には、1 日を通じた独自の負荷分布があります。多くの環境では、朝（勤務開始時）に SCEPman への負荷がピークになります。

### 手動スケール

Azure App Service のスケールアウト機能を使って、App Service の計算能力を個々の日次負荷分布に合わせて調整できます。たとえば、朝のピークに対応するために 08:00〜10:00 は 2 x S1 に設定し、それ以外の時間は 1 x S1 に減らすことができます。

### 自動スケール

別の方法として、Azure App 自動スケーリング機能を使用して必要なリソースに合わせることもできます。詳細は [自動スケーリング](https://docs.scepman.com/ja/azure-gou-cheng/azure-sizing/autoscaling).

### 手動 vs. 自動スケール

負荷を十分に予測できる場合（たとえば負荷履歴から推定できる場合）、自動スケールはスケール間の揺れを防ぐために遅延的（ヒステリシス）に動作する必要があるため、手動スケールを推奨します。
