← All case studies
Case study

Sova Assessment: QA environments on demand

Mysterious Code containerised Sova's development and QA environments on AWS, delivering 70% faster deployments and cutting the cost of each QA environment by 95%.

70% faster deployments
95% lower QA-environment cost

Working with Mysterious Code has been refreshingly direct, you deal with the senior engineers who do the work, not an account manager. They got our AWS environment production-ready and keep it that way.

Jarret Hardie, Chief Technology Officer
AWS services
  • AWS CloudFormation
  • Amazon ECS
  • AWS Fargate
  • AWS Cloud Map
  • Elastic Load Balancing
  • Amazon CloudFront

Sova Assessment is a UK software company whose platform helps organisations assess, hire and develop talent. Behind the product sits a busy development and QA operation, and by the time Sova brought this problem to us it had hit a wall. There were not enough test environments to go around, and every way of adding more looked expensive.

The challenge

Sova’s test environments mirrored production closely. That fidelity is exactly what you want for end-to-end testing before a release, and complete overkill for day-to-day development and QA. Because each environment was costly to run, there were only a few of them. Teams queued to test features, QA results came back late, and a feedback loop that should close in an afternoon stretched across days.

The brief was specific. QA had to be able to create environments themselves, with the tools they already used. Developers needed access to the data layer for setup and debugging. And it had to be possible to spin up many environments quickly, each built from a specific git branch.

What we built

Sova already ran on AWS, so we built the solution where the application lives. We containerised the application together with its data layer, and each QA environment now deploys as a single AWS CloudFormation stack: ECS services running on AWS Fargate behind one shared Application Load Balancer.

Architectural diagram - high level

Host-header rules on the load balancer give every environment its own subdomain, reachable in a browser by anyone on the team. Rule priorities are assigned automatically by a small CloudFormation custom resource backed by AWS Lambda, which finds the next free priority whenever an environment is created. Static assets live in S3 behind CloudFront, one directory per environment, so they are as easy to remove as they are to create.

Architectural diagram - service discovery

For the data layer we used an AWS Cloud Map private DNS namespace, so every service in an environment has a friendly DNS name that resolves inside the VPC. Developers already reached AWS over a VPN, so debugging against any environment’s data comes down to knowing its name. Cloud Map also handles the communication between the application and its data services within ECS.

The QA team creates environments through the CI/CD tooling they already knew: one pipeline run brings up an environment from a branch. And because each environment is one CloudFormation stack, deleting it cleans up everything it contained.

The results

Deployments are 70% faster, and each QA environment costs less than 5% of a full production-fidelity environment. Teams test features in parallel instead of queueing. Because the environments are wired into the team’s task management platform, each one is deleted automatically when its task is marked “Ready”, so nothing sits around quietly costing money.

We have looked after Sova’s AWS environment ever since, as part of our ongoing AWS management.

Let's talk

Start with a free second opinion: 30 minutes with our founder. No account access needed, and you keep a short written read.

Schedule a meeting: our calendar