Ticket Topia
2024年 7月 ~ 8月
拡張性及び再利用性を考慮した大規模チケット予約サービスインフラの構築
使用技術
プロジェクト目標
想定同時接続者数30万人を安定的に収容できるチケット予約サービス環境を構築することを目標としました。1人1枚制限、決済順の座席配置、マクロ防止などのビジネス要件を満たしつつ、予約当日に急増するトラフィックを効果的に処理することに重点を置きました。
主な役割と解決プロセス
Terraformを活用したインフラ自動化 (IaC): 反復的なインフラ構築作業を自動化し、一貫性を維持するためにTerraformを導入しました。すべてのインフラ(VPC、サブネット、EC2など)をコードで管理することにより、ヒューマンエラーを最小限に抑え、将来同様のイベントが発生した際に迅速に既存の環境を再利用し、デプロイできる基盤を整えました。
CI/CDパイプラインの構築: 開発効率を高めるため、GitHub Actionsを活用したCI/CDパイプラインを構築しました。チームメンバーがDjangoの設定ファイルを修正してGitHubにPushすると、自動的にDockerイメージをビルドし、Amazon ECSに無停止ローリングアップデート方式でデプロイされるようワークフローを設計しました。これにより、手動のデプロイプロセスを排除し、コードの変更内容を迅速かつ安定的に本番環境に反映させることができました。
オートスケーリング及び負荷分散設計: チケット予約開始と同時に発生するトラフィック急増に柔軟に対応するため、ASGとALBをアーキテクチャの核心として構成しました。ALBがユーザーリクエストを複数のEC2インスタンスに均等に分散させて特定サーバーの過負荷を防ぎ、ASGはリアルタイムのトラフィック需要に合わせてインスタンス数を自動的に拡張・縮小し、最適なリソース効率とパフォーマンスを維持するよう設計しました。
成果
構築されたインフラは、特定のインスタンスに障害が発生しても、これを自動的に検知し、正常なインスタンスにのみトラフィックを転送することでサービスの中断を防ぎます。その結果、ユーザーはトラフィックが集中する状況でも遅延なくチケットを予約できる安定的な環境が提供され、運用コストも効率的に管理できるようになりました。