Armond
← Output
tech

ITインフラ集中講座

2026-04-30

以下のインフラ構成を考える

要件整理

項目内容
サービス種別動画配信
同時視聴ユーザー数最大1万人
可用性24時間365日
データ規模数TB(成長見込みあり)
コスト方針最小限に抑える

構成要素と意思決定

配信レイヤー

同時視聴1万人かつ容量の大きい動画であるため、CDNが必要。キャッシュによりオリジンサーバーへのトラフィックを削減できる。CDNで配信地域の距離による遅延を解消し、オリジンサーバーの負荷を分散する。CDNは動画ファイルとAPIリクエストで配信先を分岐させる。

アプリケーションレイヤー

24時間365日稼働の要件を満たすため、冗長化が必要。ロードバランサーで複数台に振り分けることで、負荷分散と冗長化を実現する。

オートスケール

スタートアップとしてコストを最小限に抑えるために、モニタリングのメトリクス(CPU使用率やリクエスト数)を元にアプリケーションサーバを自動スケールさせる。

キャッシュサーバー

頻繁に参照されるデータをメモリ上に保持することで、DBへのアクセス回数を減らす。

データベース

24時間365日稼働の要件を満たすため、冗長化が必要。PrimaryとReplicaの構成にすることで、負荷分散と冗長化を実現する。

動画ストレージ

DBよりも安価なオブジェクトストレージを利用する。容量も無制限に近く、スケーラブルとなる。

動画処理パイプライン

アップロードされた動画をそのまま配信するのではなく、トランスコード処理でHLS形式に変換してからオブジェクトストレージに置く。デバイスや帯域に適応したストリーミングが可能となる。

監視

24時間365日稼働の要件を満たすため、モニタリングを用意する。メトリクスにアラート通知を設定して早期検知が可能となる。

インフラ構成図

graph TD Player[プレイヤー] -->|動画リクエスト| CDN[CDN] CDN -->|動画配信| Storage[(オブジェクトストレージ)] CDN -->|APIリクエスト| LB[ロードバランサー] subgraph PublicCloud["パブリッククラウド"] subgraph AppLayer["アプリケーション層 オートスケール"] LB --> App1[アプリサーバー 1] LB --> App2[アプリサーバー 2] end App1 & App2 --> Cache[キャッシュサーバー] App1 & App2 --> DBPrimary[(DB Primary)] DBPrimary --> DBReplica[(DB Replica)] subgraph MediaPipeline["動画処理パイプライン"] Upload[動画アップロード] --> Transcode[トランスコード処理] Transcode -->|HLS形式| Storage end subgraph Monitoring["監視・運用"] Monitor[モニタリング] --> AutoScale[オートスケール制御] AutoScale --> App1 AutoScale --> App2 end end