Skip to main content

🎮 AWS GameDay 2025

A cloud architecture competition where teams compete to build and maintain resilient systems.

📋 Event Info​

FieldDetails
EventAWS GameDay
DateMarch 2025
Duration8 hours
Team Size4 members
Result🥈 2nd Place

🎯 Challenge Overview​

The challenge focused on:

  1. System Resilience - Handle component failures gracefully
  2. Cost Optimization - Minimize AWS spending while maintaining performance
  3. Auto Scaling - Respond to traffic spikes automatically
  4. Observability - Monitor and debug issues in real-time

🏗️ Architecture​

┌─────────────────────────────────────────────────────────────┐
│ CloudFront CDN │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Application Load Balancer │
└─────────────────────────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ ECS │ │ ECS │ │ ECS │
│ Fargate │ │ Fargate │ │ Fargate │
└──────────┘ └──────────┘ └──────────┘
│ │ │
└───────────────┼───────────────┘
▼
┌──────────────────┐
│ DynamoDB │
│ (Global Table) │
└──────────────────┘

🛠️ Tech Stack​

  • Compute: ECS Fargate (Auto Scaling)
  • Database: DynamoDB with Global Tables
  • CDN: CloudFront
  • IaC: AWS CDK (TypeScript)
  • Monitoring: CloudWatch, X-Ray
  • CI/CD: CodePipeline

💻 Key Code Snippets​

Auto Scaling Configuration​

// ECS Service Auto Scaling
const scaling = service.autoScaleTaskCount({
minCapacity: 2,
maxCapacity: 10,
});

scaling.scaleOnCpuUtilization('CpuScaling', {
targetUtilizationPercent: 70,
scaleInCooldown: Duration.seconds(60),
scaleOutCooldown: Duration.seconds(60),
});

scaling.scaleOnRequestCount('RequestScaling', {
requestsPerTarget: 1000,
targetGroup: targetGroup,
});

DynamoDB Global Table​

const table = new dynamodb.Table(this, 'GameTable', {
partitionKey: { name: 'pk', type: dynamodb.AttributeType.STRING },
sortKey: { name: 'sk', type: dynamodb.AttributeType.STRING },
billingMode: dynamodb.BillingMode.PAY_PER_REQUEST,
replicationRegions: ['us-west-2', 'eu-west-1'],
});

📊 Results​

MetricScore
Uptime99.8%
Avg Response Time45ms
Cost Efficiency92/100
Chaos Engineering88/100
Final Score94.2/100

📝 Lessons Learned​

  1. Pre-warm your services - Cold starts killed our response time initially
  2. Set up alarms early - We caught issues faster with proper alerting
  3. Use reserved capacity - Spot instances are risky during competitions
  4. Practice chaos engineering - Inject failures during practice runs

🔗 Resources​


👥 Team​

  • Peter Pan - Team Lead, Architecture
  • Member 2 - Backend Development
  • Member 3 - DevOps, Monitoring
  • Member 4 - Frontend, Documentation