All projects
Coda Payments2023 - 2024

Faster test environments

On-demand test environments took over 25 minutes to come up. I rebuilt them to start from prebuilt TeamCity images with LocalStack standing in for AWS, then moved them off Jenkins.

About 5 minutes to a working environment, with Q3 cost down 22.0% year on year.

DockerAWSTeamCityLocalStack

Context

Teams shared one staging environment, which blocked parallel testing. Adding an app took several pull requests and workspaces ran on a fixed timer.

What I did

  • Started workspaces from TeamCity images in ECR and removed the Maven build stages, taking provisioning from 60+ minutes to 33. Onboarded 7 services.
  • Added LocalStack builds as a deployment profile. Teams add AWS resources with init scripts that run once LocalStack is ready. A serverless deploy inside a workspace went from 12 minutes to about 7.
  • Moved the environments off Jenkins onto the internal deployment system in one cutover and announced the beta at a tech talk with a live demo.
  • Turned off AWS-backed workspaces, which created about 13 DynamoDB tables each, so workspaces deploy to LocalStack only.
  • Added auto-destroy for idle workspaces.

Diagrams

Architecture
Before and after
Timeline