← Case Studies

Enterprise Cloud Platform - Multi-Account AWS Foundation

Built 6-account AWS foundation with Transit Gateway, production EKS, and Terraform IaC. Reduced provisioning from 3 weeks to 2 days.

Client
Mid-Market Media Company
Duration
6 months
Technologies
AWS OrganizationsTransit GatewayEKSTerraformTerragruntGitHub Actions

Project Overview

A mid-market media company (~250 engineers) needed to consolidate three separate platform teams, each managing their own AWS accounts with duplicated infrastructure. The company required a centralized cloud foundation that would enable teams to ship faster while maintaining security and compliance standards.

Key Stats:

The Challenge

Technical Debt & Duplication

Three platform teams (advertising, data, content) were independently managing AWS accounts:

Business Impact

Constraints

The Solution

Architecture

Built a multi-account AWS foundation using best practices from AWS Well-Architected Framework:

Account Structure:

AWS Organizations
β”œβ”€β”€ Management Account (billing, IAM roles, org policies)
β”œβ”€β”€ Security-Prod (CloudTrail, GuardDuty, Security Hub)
β”œβ”€β”€ Infrastructure-Prod (Transit Gateway, shared DNS, networking)
β”œβ”€β”€ Workloads-Dev (sandbox environment)
β”œβ”€β”€ Workloads-NonProd (testing environment)
└── Workloads-Prod (production workloads)

Networking: Transit Gateway Hub-and-Spoke

Security Baseline (Applied to All Accounts):

Implementation Highlights

Phase 1: Foundation (Weeks 1-4)

Phase 2: Infrastructure as Code (Weeks 5-12)

Phase 3: Platform Services (Weeks 13-20)

Phase 4: Migration & Training (Weeks 21-24)

Technologies Used

Results & Impact

Measurable Outcomes

Operational Benefits

Client Testimonial

β€œGlenn architected and delivered our multi-account AWS foundation in 6 months. We went from teams independently rebuilding infrastructure to a shared platform with automated deployments. Provisioning dropped from 3 weeks to 2 days, and our security posture is audit-ready. The Terraform codebase is clean, documented, and our teams actually understand it.”

β€” VP of Engineering

Key Takeaways

What Worked

  1. Multi-repo structure: Clear ownership, no merge conflicts, teams felt autonomy
  2. Terragrunt: Reduced boilerplate by 90%, made infrastructure maintainable
  3. Transit Gateway: Operational simplicity worth the $0.02/GB cost
  4. OIDC authentication: No key rotation, better security than long-lived access keys
  5. Early security baseline: Automated compliance from day one

What I’d Do Differently

  1. Start with monorepo, then split: Multi-repo from day one added complexity; initial MVP in monorepo would’ve been faster
  2. Renovate bot earlier: Coordinating Terraform upgrades across 6 repos is manual and painful
  3. Cost dashboards on day one: Teams couldn’t optimize costs they couldn’t see

Lessons Learned

Technical Deep Dive

OIDC Authentication (GitHub Actions β†’ AWS)

Traditional approach stores AWS access keys in GitHub Secrets (security risk if leaked). We implemented OIDC trust relationships:

# IAM role trusts GitHub OIDC provider
condition {
  test     = "StringEquals"
  variable = "token.actions.githubusercontent.com:sub"
  values   = ["repo:company/ecp-network:ref:refs/heads/main"]
}

Benefits:

Terragrunt DRY Configuration

Eliminated repeated backend/provider configuration across stacks:

# Root terragrunt.hcl (inherited by all stacks)
remote_state {
  backend = "s3"
  config = {
    bucket = "terraform-state-${get_aws_account_id()}"
    key    = "${path_relative_to_include()}/terraform.tfstate"
    region = "us-east-1"
    encrypt = true
    dynamodb_table = "terraform-locks"
  }
}

Impact: Each stack went from 100+ lines of boilerplate to 10-20 lines of actual configuration.


Need similar multi-account AWS architecture? Schedule a free consultation to discuss your platform challenges.

Technologies: AWS Organizations | Transit Gateway | EKS | Terraform | Terragrunt | GitHub Actions | CloudTrail | GuardDuty | Security Hub

Working on a similar challenge?

Multi-account AWS architecture, container migration, Terraform adoption β€” this is the work I do as a fractional engagement.