〜 複数のサービスを支えるマルチテナンシーなプラットフォームを設計せよ 〜
インターン概要
サイバーエージェント主催の技術インターン「Architecture Challenge」に参加しました。
本インターンでは、複数のWebサービス(ファンクラブサイトなど)を支えるマルチテナント型プラットフォームのアーキテクチャ設計をテーマに、SRE・インフラ・セキュリティ・スケーラビリティなど様々な要素を考慮した構成を自ら提案し、社員エンジニアからのフィードバックを受けることができました。
課題テーマ
「複数のサービスを支えるマルチテナンシーなプラットフォームを設計せよ」
- アーティストごとに異なるWebサービスを効率よくホストするための設計
- 信頼性・スケーラビリティ・コスト最適化を満たす必要あり
- ノイジーネイバー問題やデータ分離の工夫も必須
提案した構成のポイント
| 項目 | 内容 |
|---|---|
| アーキテクチャ | ECS Fargate + ALB + API Gateway によるマイクロサービス構成 |
| 可用性 | マルチAZ構成・オートスケーリング・Auroraの自動フェイルオーバー |
| セキュリティ | WAF・Secrets Manager・JWT認証とRBACによる多層防御 |
| スケーラビリティ | CloudFront・SQS・ElastiCacheで分散 & 非同期処理 |
| モニタリング | CloudWatch Logs・X-Ray によるトレーシングと可視化 |
| テナント設計 | データレイヤーは論理分離、アプリケーションは共有基盤上でマルチテナント対応 |
苦労した点
- マルチテナントとマイクロサービスの両立:分離と共通化のトレードオフの設計
- ノイジーネイバー対策:テナントごとのリソース制限の方法(リクエスト制御や隔離)
- コスト最適化:可用性と性能を保ちつつ、運用コストを抑える設計
得られた学び
- プロダクト単位ではなく「プラットフォーム視点で設計する力」の重要性
- サービスごとの特性を踏まえたスケーリング戦略・負荷対策の考え方
- 「ベストプラクティスが常に最適とは限らない」という現場視点の重要性
- 社員エンジニアのフィードバックから学ぶ構成の伝え方や妥当性の説明力
今後に活かしたいこと
- SRE/MLOps視点での障害設計・スケーラビリティ設計のスキルアップ
- IaC(Terraform)やGitOpsの自動化技術の習得
- 複雑な構成をシンプルに伝える資料設計力・プレゼンスキル
最後に
Architecture Challengeは、インフラやSREの視点から現実的な制約と設計上の工夫を体感できる最高の機会でした。
「ただ動く」だけでなく、「落ちずにスケールし、運用し続けられる」システムを作るとはどういうことか。
その本質に触れることができ、大きな学びとなりました。
サイバーエージェントの皆さま、貴重な機会を本当にありがとうございました!