Skip to content
All projects
Client work

Nike

Nike's apparel-samples process on AWS, provisioned entirely in Terraform with micro-frontends.

Client
Nike
Programme
SMx Samples Management
Role
AWS and DevOps architect, full-stack developer
Team
6 people
Illustration of a sneaker with a sample tag, shipping boxes and cloud infrastructure blocks

What it is

Sample products are ordered from factories, manufactured and shipped for sales, brand photoshoots, marketing and colour approval before production. SMx manages that cross-functional samples process.

The problem

Sample data arrives from external parties, several teams work on the same process, and infrastructure had to be reproducible across environments without manual console work.

Architecture

Requests flow left to right. Hover a component for its role.

SMx Samples Management architectureeventsReact micro-frontendsReactmicro-frontendsExternal sample dataExternal sample dataNode.js Lambdas: REST endpoints, event triggersNode.js LambdasECS ingestion tasksECS ingestion tasksSQS and SNSSQS and SNSS3S3AWS GlueAWS GlueTerraform: state in S3Terraform
Solid line: synchronous callDashed line: through a queueDashed box: external or infrastructure
  • React micro-frontends client
  • External sample data external
  • Node.js Lambdas service, REST endpoints, event triggers
  • ECS ingestion tasks worker
  • SQS and SNS queue
  • S3 data
  • AWS Glue infrastructure
  • Terraform infrastructure, state in S3

Key decisions

  • Everything in Terraform

    The whole AWS footprint is defined in Terraform with remote state in S3, so environments are reproducible and changes are reviewed like code.

  • Ingestion and APIs scale separately

    External data lands through ECS tasks, while REST endpoints and event triggers run on Lambda, connected by SQS and SNS.

Highlights

  • Micro-frontend and microservice architecture across teams.
  • ECS task-based ingestion for external sample data.
  • Lambda for REST endpoints and event-driven triggers.

Stack

TerraformAWS ECSAWS LambdaS3SQSSNSAWS GlueCloudFormationNode.jsReactJenkins