An Iterra team member talking, seen through fluted glass
Case studies

Data4Sales

Every change went straight to production. We built a place to test it first.

Areas
  • Technology
Industry
E-commerce marketing
Scope
AWS Well-Architected assessment, infrastructure as code, CI/CD, and database migration
Date
2026, ongoing

Data4Sales ran on AWS with no test environments, no automated deploys, and no alerts. We ran an assessment, ranked the risks, and rebuilt its technical foundation in stages, without stopping operations.

The starting point

Infrastructure that grew faster than its foundation.

Data4Sales is a smart marketing platform that helps e-commerce stores build customer loyalty and create targeted campaigns. It runs on AWS, and its infrastructure grew at whatever pace the product demanded.

That growth had a cost that wasn’t obvious at first. Everything had been created by hand. There was no test environment separate from production, so every change reached live operations without passing through anywhere else first. Deploys weren’t automated, no alerts were set up, and problems were caught late. Cloud spend was hard to predict.

The team knew it had to act. What it lacked was a map: which problems existed, which were critical, and where to start. So the first step wasn’t to build. It was to diagnose.

What we needed to solve

Before touching anything, a map of the risks.

The assessment covered six areas: cloud infrastructure, CI/CD, security, observability, costs, and operating model. We reviewed the AWS account, repositories, pipelines, permissions, metrics, and billing, and interviewed the technical leads.

We classified each finding by severity and against the pillars of AWS Well-Architected, AWS’s framework of best practices. From there we built a maturity baseline to measure progress, and a concrete remediation plan.

  • 0
    Test environments separate from production at the start of the project.
  • 0
    Automated deploys: every change reached production by hand.
  • 6
    Modules in the remediation plan, from governance and security to costs and resilience.

Key decision

Start with what carried the most risk in production: the databases. Then build a staging environment that mirrors production, to test every change there before it goes live.

What success looks like

For Data4Sales to have test environments separate from production, for new infrastructure to be created from code, for deploys to run without manual intervention, and for the critical risks from the assessment to be resolved.

What we did

Urgent things first, then a foundation to grow on.

The plan had a clear order. Halfway through, Data4Sales’s priorities changed, and the foundation already in place let us follow that shift without starting over.

Databases first. We migrated the main cluster from MySQL 5.7 to 8.0 with a blue/green deployment: the new version runs in parallel and traffic only switches over once it’s ready. Beforehand, the Data4Sales team validated its application against a copy. The PostgreSQL database, which ran on an unmanaged server, moved to RDS and from version 13 to 17. Production databases are now reachable only from the private network.

Infrastructure written as code. We designed a segmented network and created the infrastructure repository in Terraform and Terragrunt, with modules for networking, Kubernetes, permissions, and image registries. Infrastructure that lives in code can be reviewed, repeated, and extended, instead of depending on what someone configured by hand. On that foundation we set up an EKS staging cluster and moved DNS to Route 53.

The shift: Support moved to the front. Halfway through the project, the priority became Support, a new Data4Sales product. We built its staging and production from code, plus a CI/CD flow with temporary environments per pull request: every change can be tested in isolation before it’s merged. Then we brought the same setup to the main platform.

Deploys without downtime. We scaled capacity up ahead of high-traffic dates and back down afterward. We moved deploys to their own tunnel per run with AWS Systems Manager, so several can run at once without blocking each other. With that change we removed the downtime window that Support deploys used to leave.

What changed

Today every change goes through staging first.

Data4Sales went from having no test environments to having staging separate from production. Its teams test every change in its own environment before merging it, and new infrastructure is defined in code.

Deploys run from CI, several services deploy at once without blocking each other, and production databases run supported versions, reachable only from the private network.

What’s next. The work continues. The next stage is bringing the main platform’s production environment onto the same setup.

The Iterra team working around a table
  • 5
    APIs and the main platform’s frontend now deploy to staging from CI.
  • 5
    Deploys can run in parallel, each with its own tunnel, without blocking each other.
  • 0
    Outages during Support deployment tests, which used to cause a gap in service.

Tell us what you need to solve.

We can talk about your project, review the context, and define how to work together.