| Global edge, WAF, CDN |
Azure Front Door Premium + DDoS Protection |
Anycast, TLS termination, WAF and caching in one managed hop; no origin has a public IP. |
ADR-01 |
| Customer API entry |
Envoy Gateway on AKS |
Per-request cost at 10M+ RPS peak makes a per-call-priced gateway indefensible. |
ADR-03 |
| Partner and seller API |
Azure API Management |
Subscription keys, quotas, versioning and a developer portal are the product, not the proxy. |
ADR-03 |
| Compute substrate |
Azure Kubernetes Service |
One scheduler for 400 services, stateful engines and GPU inference; node-pool tenancy replaces cluster sprawl. |
ADR-02 |
| Service-to-service security |
Istio ambient mesh |
mTLS and policy without a sidecar per pod, which at this pod count is a material cost line. |
ADR-04 |
| Transactional core |
Azure Cosmos DB for PostgreSQL (Citus) |
Real SQL transactions that shard horizontally on order and seller keys. |
ADR-05 |
| Catalog and listings |
Azure Cosmos DB for NoSQL |
Per-category document shapes, multi-region writes, and a read SLA the catalog path depends on. |
ADR-06 |
| Inventory contention |
Redis (Azure Managed Redis) + Citus ledger |
An atomic Lua compare-and-set survives 100k concurrent buyers on one SKU; the ledger stays the truth. |
ADR-07 |
| Search and vector retrieval |
OpenSearch on AKS |
150M documents, hybrid BM25 and kNN in one cluster, with index lifecycle we control. |
ADR-08 |
| Real-time analytics |
Apache Pinot |
Sub-second aggregation over upserted streams for seller dashboards and the sale-day war room. |
ADR-09 |
| Lakehouse |
Apache Iceberg on ADLS Gen2, Spark, Trino, Airflow |
Open table format keeps the engine replaceable and the storage bill separable from the compute bill. |
ADR-10 |
| Media |
Blob Storage + imgproxy behind the CDN |
Derivatives generated on demand and cached, so the origin holds one master per asset. |
ADR-11 |
| Event backbone |
Apache Kafka on Strimzi |
Partition counts, compaction, tiered storage and quotas are all things this design must control. |
ADR-12 |
| Stream processing |
Apache Flink |
Event-time windows, exactly-once sinks and real-time joins that Kafka Streams cannot carry alone. |
ADR-13 |
| Long-running workflows |
Temporal |
Refunds, settlements and returns are month-long sagas needing durable state and visible retries. |
ADR-14 |
| Change data capture |
Debezium into Kafka |
One log for the lake and the derived stores, with no dual writes to go out of step. |
ADR-15 |
| Cart state |
Server-side, Redis-backed |
The basket has to survive the UPI handoff leaving the app entirely. |
ADR-18 |
| Payments isolation |
Separate Azure subscription and AKS cluster + HashiCorp Vault token vault |
PCI scope stops at a subscription boundary; nothing else inherits the audit. |
ADR-19 |
| Seller money |
Double-entry settlement ledger on Citus |
A payout dispute must be answerable from immutable entries, not from a mutable balance. |
ADR-20 |
| Customer identity |
Keycloak on AKS |
Per-MAU identity pricing does not survive a 500M-user population. |
ADR-21 |
| Workforce and seller-staff identity |
Microsoft Entra ID |
Conditional access, PIM and device compliance for every privileged human. |
ADR-21 |
| Authorisation |
Open Policy Agent, policy as code |
Field-level masks reviewed as code rather than scattered through service handlers. |
ADR-22 |
| Secrets and keys |
Azure Key Vault + Managed HSM, workload identity |
No secret in a manifest, and payment keys that never leave the module. |
ADR-19 |
| Model serving |
KServe + MLflow + Feast on AKS |
Ranking, fraud and ETA models on the same fleet as the services that call them. |
ADR-23 |
| Embeddings and moderation |
Azure OpenAI |
Elastic capacity for bursty catalog re-embedding without owning GPUs for the peak. |
ADR-24 |
| Delivery |
GitHub Actions, Argo CD, Argo Rollouts, Kyverno, Terraform |
The cluster is reconciled to Git, so the audit trail and the rollback are the same mechanism. |
ADR-25 |
| Observability |
OpenTelemetry, Prometheus + Thanos, Loki, Tempo, Grafana |
One vendor-neutral instrumentation layer, and retention priced as storage rather than as ingestion. |
ADR-26 |
| Resilience |
Central India active, South India read-active |
Two in-country regions, honest RPO, and a failover that is rehearsed rather than assumed. |
ADR-27 |