完全なデータ管理とエンタープライズグレードのセキュリティを備えた独自インフラに Meeting-BaaS をデプロイします。bot あたり $0.066/時間という実際のコスト、自動更新、ゼロダウンタイムデプロイ、完全なカスタマイズ機能をご利用いただけます。

LLazare Rossillon
··4 min read
Meeting-BaaS オンプレミス:独自のミーティング bot インフラをデプロイ

Meeting-BaaS オンプレミス クイックスタート

事前構築済みの Docker イメージを使用することで、独自の Meeting BaaS インフラを簡単に稼働させることができます。この記事では、その仕組み、必要なもの、そして最も重要なコストについて説明します。

ホスト版と同じ API 機能を維持しながら、データの完全なコントロール、充実したカスタマイズ機能、エンタープライズグレードのセキュリティを利用できます。

最も重要な点として、このデプロイにより、サービスレベルアグリーメントを備えた保守済み商用製品の安定性を享受しながら、ミーティング bot の実際の料金($0.066/時間)でお支払いいただけるようになります。

完全なデータ主権のもと、AI ミーティングアシスタント、自動文字起こしワークフロー、リアルタイム音声ストリーミング、ミーティング分析、顧客インタラクトラッキング、コンプライアンス監視、インテリジェントなミーティング要約を構築できます。

料金の見積もり

基本セットアップにかかるコストは月額合計約 $5,500 と見込んでいます。内訳は以下のとおりです:

基本セットアップコスト:

  • コンサルティング費用: $10,000/月(セットアップ、保守、サポート、SLA を含む)
  • インフラコスト: $1,500/月(常時稼働 8 bot を含む)

例:月間 20,000 時間

  • 基本セットアップ:$5,500/月(1,408 時間を含む - 8 時間/日 × 8 bot × 22 稼働日)
  • 追加時間:18,592 時間 × $0.066 = $1,227
  • 合計:$6,727/月($0.336/時間)

コスト効率はスケールとともに向上します:

  • 月間 50,000 時間:約 $8,700/月($0.174/時間)
  • 月間 100,000 時間:約 $12,100/月($0.121/時間)

前提条件

  • Kubernetes cluster(1.20+)
  • PostgreSQL データベース
  • Redis インスタンス
  • S3 互換ストレージ
  • SQS キュー
  • kubectl の設定
  • Docker/container runtime
  • RAM 16GB 以上、vCPU 8 以上(最小)
  • ミーティングプラットフォームへのアウトバウンドインターネットアクセス

仕組みについて

オンプレミスデプロイでは、エンタープライズグレードの CI/CD 自動化を使用して、インフラを最新の改善内容と同期させます。

GitHub Actions が各イメージをビルドしてタグ付けし、アップグレードコマンドを実行して cluster にロールインします。bot pod、API サーバー、データベース、ストレージはすべてお客様のインフラ内に留まります

CI/CD によるイメージビルドと、お客様の指示によるデプロイ

仕組み:

  • GitHub 連携: CI/CD パイプラインは、コードベースを更新すると自動的に新しい Docker イメージをビルドしてプッシュします
  • ロールアウトはお客様が管理: Kubernetes はレジストリを監視して自動デプロイするわけではありません。レジストリにある新しいイメージは、お客様が指示するまで cluster には反映されません。baas_controller.sh upgrade コマンドを実行(または自動化したい場合は Flux や ArgoCD Image Updater などの独自イメージウォッチャーを設定)して、新しいタグを取得してください。

更新プロセスの仕組み:

  1. コード変更: GitHub Actions ワークフローが git コミットハッシュ付きの新しい Docker イメージを自動的にビルドし、Scaleway Container Registry にプッシュします

  2. デプロイのトリガー: 準備ができたときに新しいイメージタグに対してアップグレードコマンドを実行してください。独自のレジストリ監視コントローラーを設定しない限り、自動実行はされません

  3. ゼロダウンタイムデプロイ: トリガー後、Kubernetes は pod を 1 つずつ入れ替え、古い pod を終了する前に新しい pod が正常であることを確認します

主なメリット:

  • タイミングはお客様が決定: 機能、修正、セキュリティパッチを当社のスケジュールではなく、お客様自身のスケジュールで適用できます
  • ゼロダウンタイム: トリガー後はサービス中断なくシームレスなローリングアップデートを実施
  • バージョントラッキング: git コミットハッシュによる完全な監査証跡
  • エンタープライズの信頼性: 本番環境と同じ CI/CD パイプライン

アップグレードコマンドを実行するたびに、最新の改善内容を取り込みながら、インフラの完全なコントロールを維持できます。

クイックセットアップ

1. Kubernetes 設定をクローン

git clone https://github.com/Meeting-BaaS/kubernetes-config.git
cd kubernetes-config

2. BaaS CLI をインストール

./baas_controller.sh install

3. 環境を設定

export ENVIRON=prod  # or preprod for staging

4. サービスをデプロイ

# Deploy bots (uses pre-built Docker images)
ENVIRON=prod ./baas_controller.sh bots install

# Check status
ENVIRON=prod ./baas_controller.sh bots status

# View logs
ENVIRON=prod ./baas_controller.sh bots log -f

主なコマンド

Bot 管理

# Install bots
ENVIRON=prod ./baas_controller.sh bots install

# Upgrade bots (zero downtime)
ENVIRON=prod ./baas_controller.sh bots upgrade

# Check status
ENVIRON=prod ./baas_controller.sh bots status

# View logs
ENVIRON=prod ./baas_controller.sh bots log -f

# Uninstall (causes downtime)
ENVIRON=prod ./baas_controller.sh bots uninstall

API サーバー管理

# Install API server
ENVIRON=prod ./baas_controller.sh api install

# Upgrade API server
ENVIRON=prod ./baas_controller.sh api upgrade

# Check status
ENVIRON=prod ./baas_controller.sh api status

# View logs
ENVIRON=prod ./baas_controller.sh api log -f

Cluster 管理

# Install cluster
ENVIRON=prod ./baas_controller.sh cluster install

# Access metrics
ENVIRON=prod ./baas_controller.sh cluster metrics

リソース要件

Bot Pod あたり

  • CPU:1.5 vCPU(requests)/ 3 vCPU(limits)
  • メモリ:RAM 3GB(requests)/ RAM 6GB(limits)
  • ストレージ:録画用 20GB

インフラ最小要件

  • コントロールプレーン:2 vCPU、RAM 4GB
  • ワーカーノード:16 vCPU、RAM 32GB(約 8 bot をサポート)
  • データベース:8 vCPU、RAM 32GB(PostgreSQL)
  • キャッシュ:2 vCPU、RAM 4GB(Redis)

環境変数

# Required
export ENVIRON=prod
export KUBECONFIG=/path/to/kubeconfig

# Optional
export SKIP_VALIDATION=1  # Skip confirmations

ゼロダウンタイム更新

# Always use upgrade, never install for running services
ENVIRON=prod ./baas_controller.sh bots upgrade
ENVIRON=prod ./baas_controller.sh api upgrade

トラブルシューティング

# Check pod status
kubectl get pods -n services

# Describe pod issues
kubectl describe pod <pod-name> -n services

# Check persistent volumes
kubectl get pvc -n services

# Test connectivity
kubectl exec -it <pod-name> -n services -- curl -I https://meet.google.com

API 連携

# Set API endpoint
export MEETING_BAAS_API=https://your-domain.com/api
export API_KEY=your-api-key

# Test connection
curl -H "Authorization: Bearer $API_KEY" $MEETING_BAAS_API/version

ストレージ設定

永続ボリューム

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: bot-storage
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
  storageClassName: sbs-15k  # High IOPS

ストレージクラス

  • sbs-15k:録画用の高 IOPS
  • sbs-default:汎用
  • scw-bssd:高性能用 NVMe

監視

# Access Grafana (if deployed)
ENVIRON=prod ./baas_controller.sh cluster metrics

# Check resource usage
kubectl top pods -n services
kubectl top nodes

スケーリング

# Scale bots horizontally
kubectl scale deployment meeting-bots --replicas=10 -n services

# Auto-scaling (HPA)
kubectl get hpa -n services

セキュリティ

ネットワークポリシー

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: bot-network-policy
spec:
  podSelector:
    matchLabels:
      app: meeting-bots
  policyTypes:
    - Ingress
    - Egress
  egress:
    - to:
        - namespaceSelector: {}
      ports:
        - protocol: TCP
          port: 443

RBAC

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: services
  name: bot-role
rules:
  - apiGroups: [""]
    resources: ["pods", "services"]
    verbs: ["get", "list", "watch"]

バックアップと復旧

# Database backup
kubectl exec -it postgres-pod -n services -- pg_dump meeting_baas > backup.sql

# Restore database
kubectl exec -i postgres-pod -n services -- psql meeting_baas < backup.sql

クリーンアップ

# Remove all services
ENVIRON=prod ./baas_controller.sh bots uninstall
ENVIRON=prod ./baas_controller.sh api uninstall

# Remove cluster (destructive)
ENVIRON=prod ./baas_controller.sh cluster uninstall
関連ブログplatform