Armakuni Contact us
← All case studies

Retailers wanted to learn from their partners' data.
Nobody wanted to hand theirs over.

A UK analytics platform for eCommerce retailers needed to work with data partners, without anyone's customer records leaving their control. We rebuilt it on AWS around clean-room infrastructure, a proper access model and a container platform that scales with reporting peaks.

Before

Growth meant analyzing data with partners.

The old platform couldn't keep partners' data apart.

After
50%lower infrastructure cost
30%lower global latency
0security incidents since cutover

As the company reported after the modernization.

Growth meant analyzing data with partners

The platform helps eCommerce retailers understand their customers, attribute revenue and decide where to spend their marketing budgets. Its next stage of growth meant bringing in more data partners, such as retail media networks, identity providers and customer data platforms, and serving retailers across more regions.

Those partners set a condition. The analysis that mattered had to cross organizational boundaries, but each side's sensitive records still had to stay protected the whole time. Partners now expect a clean room, where two parties can analyze data together without either side seeing the other's underlying records, before they'll share audience data at all.

The old platform couldn't keep partners' data apart

The previous cloud environment had no clean rooms and no fine-grained access control, and it gave no real-time monitoring of who accessed what, so partner integration and access management fell to individual engineers doing the work by hand. When a retailer's compliance team sent over its security questionnaire, the answers came from procedures rather than from the architecture itself.

Scale was the other limit. Campaign reporting came out uneven because attribution runs, and big retail moments like Black Friday, need far more compute than an ordinary day does. Analytics also moved through point integrations, so insights reached marketing teams after the moment they could have acted on them.

The team built privacy into the platform itself

They built this into the platform itself instead of relying on a written process, because a step someone has to remember to run can get missed when things get busy. The protection applies no matter who runs a query, so a partner deal just becomes a configuration step, and a compliance review gets answered straight from the architecture.

How we built it

5 decisions, in the order we made them. Each one says what we did and why, with what it did drawn beside it.

  1. Partners analyze aggregates and never see each other's records
  2. Splitting the architecture into three modules isolated changes
  3. Capacity that follows the reporting cycle
  4. The database moved with nothing lost
  5. Compliance checks travel with every release

Partners analyze aggregates and never see each other's records

Built withIAMKMSS3RDS
Only totals pass between them PartnerPartner the records never leave their room
The engineering

We built the collaboration layer so the protection doesn't depend on anyone being careful:

  • Partners can now run joint analysis in the clean room.
  • Secure data rooms separate each customer's datasets from the aggregated, anonymized data used for benchmarking, so a retailer sees how it compares with its peers without anyone seeing another retailer's data.
  • The identity providers give partners and users one authentication model, so bringing on a new partner is a configuration change rather than a custom integration. Fine-grained IAM roles also keep each service and each operator down to least-privilege access.
  • Keys managed through KMS protect data at rest in Amazon S3 and Amazon RDS, and encryption in transit is built into the design alongside it.

Access control sits in the data path, so it applies whoever runs the query.

Splitting the architecture into three modules isolated changes

One architecture Admin E-commerce Core
The engineering

Every change had gone through the same codebase, so a small change in one analytics flow could unsettle the others. We organized the application into Admin, E-commerce and Core modules, with defined API boundaries between them. Operational management, retailer-facing analytics and shared services can now change separately, and a product change involves far less unrelated code.

The same APIs give the team a defined route for new retailer and partner integrations, without rebuilding the whole analytics application.

Capacity that follows the reporting cycle

Built withEKSKubernetesKarpenter
Reporting cycleKarpenter nodes
The engineering

Running at peak capacity all the time costs too much, but sizing for an average day doesn't work either, because month-end brings a reporting load that an average day can't absorb. The team moved application services onto Amazon EKS (Kubernetes) and set the infrastructure up to follow the load:

  • Karpenter adds and removes nodes as workloads change, so the team doesn't pay for peak capacity during the quiet periods.
  • NGINX Ingress handles routing, TLS and traffic policy in one layer, and that keeps response times steady during the heavy reporting windows.
  • The deployment architecture can extend into additional AWS regions as customers and data-residency requirements grow, because adding a region fits the existing model instead of needing a custom build.
  • Development workloads run on Spot capacity, cutting their cost without touching production's availability.

The database moved with nothing lost

Built withPostgreSQLRDSDMS
Old databaseAmazon RDS Every tableEvery tableEvery recordEvery record nothing lost
The engineering

The old PostgreSQL setup slowed down at reporting peaks and needed manual upkeep. We moved PostgreSQL to Amazon RDS through AWS DMS, with zero data loss, so managed backups, replication and patching replaced part of the team's maintenance work.

Compliance checks travel with every release

Every buildSecurity scanningPolicy checksApproval gate
The engineering

These checks sit inside the release path itself. A check that someone could skip wouldn't actually keep the platform compliant, so it had to be placed where no release could get past it:

  • The CI/CD pipelines run security scanning, policy checks and approval gates on every build, so every release carries the same controls without anyone having to apply them by hand.
  • A self-hosted OpenVPN setup controls and logs engineering access to the deployment environments, in place of the ad-hoc credentials used before.
  • Prometheus collects the metrics, Loki aggregates the logs, and Grafana brings service health, query behavior and access patterns together in one place, so an anomaly shows up as it happens instead of turning up later at audit time.

That way compliance evidence comes out of running the platform day to day, and there's no scramble to pull it together before each questionnaire.

One partner analysis, end to end

  1. A data partner signs on. It authenticates through the identity provider, with an IAM role scoped to exactly what it may touch.
  2. The retailer and the partner run a joint analysis inside the clean room, and neither sees the other's underlying records.
  3. Benchmarks come from the data room, on aggregated, anonymized data, kept apart from every customer's own datasets.
  4. The reporting run spikes at month-end. Karpenter adds nodes, NGINX Ingress spreads the requests, and the nodes go away afterwards.
  5. Everything is encrypted with KMS-managed keys, at rest in S3 and RDS and in transit.
  6. Grafana shows who accessed what, and the release that shipped the analysis went through security scanning and an approval gate.

What we'd tell another CTO

1The privacy boundary is built into the data path itself. Clean rooms and data rooms let partners analyze together without handing over their records, which is what the partners asked for before they would share anything at all.
2Partner onboarding became a configuration step, because one identity model meant each new partner needed only a new setting instead of a separate integration project.
3Spot capacity under development environments is the cheapest saving there is, because it never touches a customer.

What else changed

As the company reported after the modernization.

  • Zero data loss in the PostgreSQL move to Amazon RDS.
  • Clean-room data collaboration now live, so the company can sign data partners the old platform couldn't support.
  • Audit evidence produced by the platform itself, so security questionnaires get answered straight from the architecture.
  • For retailers using the platform, the company also reported 25% higher conversion rates and 30% better customer engagement, from campaign insights that were faster and more accurate.

What comes next

The architecture leaves room for more data-partner categories, AI agents that handle campaign optimization and personalized retailer recommendations, and new regions as new global retailer accounts come on board.

How we'd do it today

This project came before our current offers. Here's how we'd approach the same work now.

For the AI agents on the roadmap, AK AI Factory would apply the clean-room idea to software: no AI agent would hold private data, read untrusted text and be able to send data out at once, each would have its own identity in AgentCore Identity with Cedar policies at the gateway, deny by default and checked on every tool call, and Axiom would keep one meaning of "customer" and "conversion" for all of them on Amazon DataZone, seeing only the rows it's allowed to through AWS Lake Formation. Before any data moved, we'd approve a data-flow map covering prompts, retrieval, embeddings, caches and logs, and check the real flows against it, with the evidence mapped to GDPR and the other standards the retailers name. As the modules grow, AK Evolve's quality gates would hold every pull request to tests that pin today's behavior, with linters enforcing the module boundaries so nothing wires Admin, E-commerce and Core back together.

Have a problem like this one?

A free workshop: a few hours with the architects who'd do the work, on your own systems. No cost.

Book a free workshop