live brands
One platform direction, with explicit boundaries for different experiences and capabilities.
02 / Global commerce
I own a distributed commerce platform and chose its multibrand architecture across frontend and backend. We launched three brands with the same engineering team, retaining distinct experiences and clear system boundaries.
At a glance

My role
01 / Business & architecture
I chose a shared multibrand architecture across frontend and backend. We launched three brands with the same engineering team. The shared foundation now supports further launches through common capabilities and explicit brand boundaries.
One platform direction, with explicit boundaries for different experiences and capabilities.
Common commerce journeys, service contracts, market configuration, integration patterns and delivery foundations create a reusable base.
Brand presentation, supported features, market policy, provider configuration and customer-data context remain deliberate choices.
02 / System boundaries
Six views into the platform’s responsibilities. Open each area for the technical detail, the boundary it owns and the trade-off that comes with it.
React · Next.js · TypeScript · REST / GraphQL
Customer storefronts and internal tools are separate surfaces of the same platform. The multibrand frontend selects the brand at build time, reusing common journeys while keeping brand-specific presentation and behaviour behind explicit boundaries.
Reuse does not mean every brand has identical features. A capability must be explicitly supported, disabled or adapted, and a shared change needs verification across the affected brand builds.
Python services · typed APIs · payment-provider integrations
Orders, payments, financing, fraud, gifting, fulfilment and after-sales are connected domains with different responsibilities. The difficult work is coordinating their state, not simply connecting their APIs.
A remote payment can succeed while a local update fails. Domain idempotency, explicit state transitions and reconciliation are needed; a database transaction cannot make every external side effect atomic.
Azure Service Bus · RQ / Redis · SQL scheduling · SQS / Lambda
The platform uses more than one asynchronous execution model. Event consumers, local jobs, scheduled business changes and serverless tasks have different ordering, persistence and retry requirements.
Some work can scale across consumers; other flows deliberately use a single executor. Ordering requirements and replay safety determine that choice. A running worker is not proof that work is progressing.
PostgreSQL · DynamoDB · Algolia · Redis-compatible caches
The commerce core, configuration and customer domains own different data. Search indexes and a relational replica provide specialised read models derived from upstream changes; they are not automatically the authority for financial transactions.
Specialised read models improve access patterns but introduce eventual consistency. Capacity planning must include aggregate database connections, upstream load and the cost of rebuilding derived data.
AWS EKS · Docker · Terraform · Cloudflare · observability
Container workloads, infrastructure-as-code and edge policies form the operating environment. APIs, event consumers and maintenance jobs have different resource, scaling and recovery characteristics.
Desired infrastructure configuration is not proof of live health. Cache-hit behaviour, worker progress, database saturation and recovery need their own evidence, beyond a green deployment or liveness probe.
Versioned contracts · CI/CD · cross-repository coordination · QA
A shared platform evolves across independent repositories, package versions and release boundaries. Delivery governance connects architecture decisions to changes that can be reviewed, verified and traced.
Shared libraries reduce duplication but increase the impact of a common mistake. Exact revisions, compatibility checks and clear change ownership are essential to keeping reuse sustainable.
03 / Distributed execution
These simplified flows explain the responsibilities across asynchronous boundaries. They are illustrative, not a published deployment topology or an exhaustive service map.
A useful review follows the whole lifecycle: authentication, duplicate callbacks, uncertain remote success, partial capture or refund, and recovery after an interrupted update.
The read model can lag behind its source. Replays, full rebuilds, deletion handling and freshness checks are as important as the initial event handler.
Separating background work protects request latency, but concurrent refreshes, timeouts and Redis/job durability still need an explicit operating policy.
04 / Engineering judgement
Owning a distributed platform means understanding where it can fail, who owns the state and how it recovers. These are the operating principles I use to evaluate the architecture, not a claim that every control is already complete.
A delivery retry and a new business operation are different things. Idempotency belongs at the domain boundary, not only in the broker.
Validate customer, order, market and brand context at service entry points. Shared infrastructure should not weaken access control.
Consumer lag, failed delivery state, projection freshness and reconciliation backlog reveal issues that pod health cannot.
Remote side effects can succeed independently. Make repair, reconciliation and escalation part of the lifecycle rather than an afterthought.
05 / Platform leverage
My approach is to turn brand onboarding into explicit contracts and release responsibilities. Reuse should reduce repeated decisions, while preserving the checks each brand needs.
Agree which journeys the brand supports: discovery, checkout, financing, customer account, certificates and after-sales. Record intentional differences.
Set domains, languages, channels, provider identities, templates and catalogue mappings. Make compatibility defaults explicit.
Check customer/order access, event routing, data namespaces and partner configuration. Test that one brand cannot act on another brand’s state.
Identify affected services and package versions, then define rollout, rollback, replay, monitoring and operational ownership.
Track engineering effort, lead time, defects and ongoing support. Those measures show whether the shared foundation is actually creating leverage.
Key decisions
Chose shared frontend and backend capabilities with explicit brand boundaries. Build-time frontend selection, brand traits and common service contracts make reuse deliberate rather than accidental.
Standardised infrastructure and delivery around Terraform, ArgoCD and operational telemetry so teams could release frequently with evidence.
Led the staged Akamai-to-Cloudflare migration, connecting edge configuration, delivery planning and operational ownership.
The architecture has to connect brand experiences, commerce state, customer systems, background work and operational ownership. Shared foundations must coexist with brand-specific capabilities and market rules.
Containerised services on AWS EKS operate alongside Azure queues and topics, RQ background jobs, persistent price scheduling, serverless asset processing and derived search/data models. Each execution model brings different recovery and consistency requirements.
My scope connects the multibrand architecture, infrastructure and delivery foundations with operational ownership. The platform case includes the staged Akamai-to-Cloudflare migration and the responsibilities across services, integrations and engineering teams.
My scope
Continue