> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cartesia.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# アーキテクチャ

> Cartesia セルフホストデプロイメントのコアコンポーネントの概要。

Cartesia のセルフホストサービスは、TTS と STT の両方のデプロイメントにおいて、レイテンシーとスループットの間で設定可能なトレードオフをサポートしています。

<Frame caption="Cartesia セルフホストの高レベルアーキテクチャ。">
  <img src="https://mintcdn.com/cartesia-2650f86a/RZboEExmv0lWI030/assets/images/self-hosted/self-hosted-architecture.png?fit=max&auto=format&n=RZboEExmv0lWI030&q=85&s=a91690ae8d59c9a8486ef173f4cd405a" alt="セルフホストアーキテクチャ" width="3016" height="1638" data-path="assets/images/self-hosted/self-hosted-architecture.png" />
</Frame>

## コアコンポーネント

### API Server

API Server は、セルフホスト Cartesia サービスへのすべてのリクエストのエントリポイントです。REST API リクエストと WebSocket 接続を処理します。

### PubSub Controller (NATS)

API サーバーとモデルコンテナの間で非同期通信プロトコルを活用し、スムーズで低レイテンシーなリクエスト処理を実現しています。この設計により、以下が可能になります:

* モデルコンテナが自由にクラスタに参加・離脱できる。
* 長時間にわたるリクエストライフサイクルを効率的にステートフル管理できる。
* API サーバーとモデルコンテナ間の調整により、リクエストに対して最も低レイテンシーな経路を提供できる。

### Model Workers (Engine)

Cartesia は TTS および STT の両方に対してバッチ処理されたエンジンワーカーを提供しています。ここでカスタマイズする中核的なパラメータは `batch_size (B)` です。このパラメータやその他のパラメータのトレードオフについては、Performance Tuning のセクションで説明します。

### License Proxy Server

セルフホストデプロイメントの認証とライセンス有効性の確認のために、Cartesia のクラウド環境と通信する単一のサービスをデプロイします。これにはいくつか理由がありますが、主な目的は、このサービスが唯一のアウトバウンド通信を行うサービスとなり、ネットワークセキュリティポリシーの設定を容易にするためです。

Proxy では、希望する分離レベルを選択できます:

* `Connected`: デプロイメントが定期的に Cartesia のクラウドに ping を送信してライセンスを検証し、利用状況に関するテレメトリを送信します。
* `Air-gapped`: 完全に分離されたモードで、オフラインライセンスを使用して動作します。エアギャップモードでは、監査ログを通じて利用情報を取得するため、お客様と直接連携します。

ほとんどのお客様には `Connected` モードでのデプロイをおすすめしますが、完全に分離されたデプロイメントが必要な場合は、GTM チームがセットアップを支援します。

`Connected` と `Air-gapped` のいずれのモードでも、接続が切れたりライセンスが期限切れになったりした場合に即座に運用を停止しないよう、猶予期間が設定されています。

## ネットワークトポロジーとポート

以下の値は、`cartesia-kube` で配布される Helm チャートに基づいています。

### サービス間ポート

| コンポーネント         | ポート    | プロトコル               |
| --------------- | ------ | ------------------- |
| API server      | `5000` | HTTP / WebSocket    |
| API metrics     | `8080` | HTTP (Prometheus)   |
| NATS            | `4222` | NATS protocol (TCP) |
| NATS monitoring | `8222` | HTTP                |
| License proxy   | `8080` | HTTP                |
| Worker metrics  | `8080` | HTTP (Prometheus)   |

### サービス間トラフィック

| From            | To                                         | 目的                                   |
| --------------- | ------------------------------------------ | ------------------------------------ |
| クライアント          | Ingress → API `5000`                       | REST および WebSocket リクエスト             |
| API             | NATS `4222`                                | TTS および STT ジョブの発行                   |
| API             | License proxy `8080` (`LICENSE_PROXY_URL`) | リクエストごとの認可チェック                       |
| Workers         | NATS `4222`                                | 推論ジョブのサブスクライブ                        |
| License proxy   | Cartesia ライセンスエンドポイント                      | 認証および監査ログの転送（エアギャップモードでは両方ともローカルで実行） |
| API および Workers | Google Cloud Storage                       | ボイス、LoRA、マイグレーションの同期                 |
| Prometheus      | API `8080`、Worker `8080`                   | 5 秒ごとのメトリクススクレイプ                     |

### アウトバウンド egress (Connected モード)

connected モードでは、クラスタが以下の宛先へのアウトバウンドアクセスを必要とします。ファイアウォールで許可リストに追加してください:

| 宛先                       | ポート            | 理由                               |
| ------------------------ | -------------- | -------------------------------- |
| `us-docker.pkg.dev`      | 443            | Pod 起動時のコンテナイメージの取得              |
| `storage.googleapis.com` | 443            | GCS からのボイス、LoRA、マイグレーションの同期      |
| `api.cartesia.ai`        | 443            | License-proxy の認証（connected モード） |
| DNS                      | 53 (UDP + TCP) | 標準的な名前解決                         |

[エアギャップモード](/self-hosted/air-gapped)では、これらの egress 経路は一切不要で、クラスタはローカル発行のライセンスファイルを使って完全にオフラインで動作します。

### クラスタの egress を制限する

Helm チャートには、DNS、RFC1918 のプライベートレンジ（`10.0.0.0/8`、`172.16.0.0/12`、`192.168.0.0/16`）、およびクラウドメタデータの IP（`169.254.169.254/32`）以外のすべてのクラスタ外 egress をブロックする、オプトイン方式の `NetworkPolicy` が同梱されています。`values.yaml` で有効にできます:

```yaml theme={null}
networkPolicy:
  denyExternalEgress: true
```

別ゲートウェイ経由ですべてのインターネット egress を仲介する場合や、エアギャップデプロイメントの場合に使用してください。

## サービス間のトラフィック

クラスタ内のすべてのサービス間通信は暗号化されていません。

クラスタネットワークへのアクセスは、クラウドプロバイダーのネットワーキング、および適用した `NetworkPolicy` リソースによって制限されます。チャートには、クラスタ外への egress をすべてブロックするオプトインポリシーが同梱されています（前述の [クラスタの egress を制限する](#restricting-cluster-egress) を参照）。

ingress 用 TLS の設定（EKS の ACM、GKE の Managed Certificates、セルフマネージドクラスタの BYO 証明書）については、[Managed Kubernetes](/self-hosted/managed-kubernetes) を参照してください。
