The entire platform is defined as 9 CDK stacks built on serverless, pay-per-request services. A real-world pilot runs for roughly the price of a phone contract — and the same architecture carries 100,000 users with nothing re-built, because almost every component bills by usage, not by being switched on.
Each box is one of the deployed CDK stacks. Green-bordered services bill per request / per GB (they cost ~nothing while idle); amber-bordered services have a small fixed monthly floor.
flowchart TB
subgraph EDGE["CdnStack - global edge"]
CF["CloudFront CDN
per-GB transfer"]
end
subgraph API["ApiStack"]
APIGW["API Gateway
~220 routes - per request"]
L["14 Lambda functions
per ms of compute"]
end
subgraph AUTHS["AuthStack"]
COG["Cognito
free < 10k MAU"]
end
subgraph DATA["StorageStack + DatabaseStack + CacheStack"]
DDB[("DynamoDB
on-demand - per request")]
S3["S3 + Glacier
per GB - archive $1/TB"]
AUR[("Aurora Serverless v2
scales 0.5-128 ACU")]
VAL["ElastiCache Valkey
t4g.micro ~$12/mo"]
end
subgraph MEDIA["MediaStack"]
MC["MediaConvert
per video-minute"]
TR["Transcribe
per audio-minute"]
end
subgraph EVENTS["Scheduled + async"]
EB["EventBridge
capsule unlocks - hourly"]
SQS["SQS queues
per message"]
end
subgraph OBS["MonitoringStack"]
CW["CloudWatch
dashboards + alarms"]
end
U["📱 iOS · Android · Web"] --> CF
CF --> APIGW
APIGW --> COG
APIGW --> L
L --> DDB
L --> S3
L --> AUR
L --> VAL
S3 --> MC
MC --> S3
S3 --> TR
EB --> SQS --> L
L -.-> CW
style U fill:#14262a,stroke:#34d399,color:#e8f4f0
style CF fill:#14262a,stroke:#34d399,color:#e8f4f0
style APIGW fill:#14262a,stroke:#34d399,color:#e8f4f0
style L fill:#14262a,stroke:#34d399,color:#e8f4f0
style COG fill:#14262a,stroke:#34d399,color:#e8f4f0
style DDB fill:#14262a,stroke:#34d399,color:#e8f4f0
style S3 fill:#14262a,stroke:#34d399,color:#e8f4f0
style MC fill:#14262a,stroke:#34d399,color:#e8f4f0
style TR fill:#14262a,stroke:#34d399,color:#e8f4f0
style SQS fill:#14262a,stroke:#34d399,color:#e8f4f0
style EB fill:#14262a,stroke:#34d399,color:#e8f4f0
style AUR fill:#14262a,stroke:#fbbf24,color:#fde68a
style VAL fill:#14262a,stroke:#fbbf24,color:#fde68a
style CW fill:#14262a,stroke:#fbbf24,color:#fde68a
NetworkStack uses VPC endpoints instead of NAT gateways — avoiding the classic ~$35/mo-per-AZ fixed cost that quietly dominates small serverless bills.
flowchart LR
A["🌙 Quiet pilot day
a few hundred requests"] -->|"Lambda + DynamoDB +
API GW bill ~cents"| B["Floor: ~$60-90/mo
Aurora min ACU + Valkey
+ CloudWatch basics"]
C["🚀 Launch-day spike
1000x traffic"] -->|"same stacks scale
automatically, no deploy"| D["Bill rises with usage,
falls back after the spike"]
style A fill:#14262a,stroke:#34d399,color:#e8f4f0
style B fill:#14262a,stroke:#fbbf24,color:#fde68a
style C fill:#14262a,stroke:#34d399,color:#e8f4f0
style D fill:#0e3b2e,stroke:#4ade80,stroke-width:2px,color:#e8f4f0
The only "always-on" line items at pilot are the Aurora Serverless floor, the $12 Valkey cache node, and monitoring. Everything else — compute, storage, transcoding, delivery — is strictly pay-per-use.
Indicative figures from the platform cost model (single region, video-heavy usage assumptions). The Lean Pilot trims the fixed layer — basic monitoring, Aurora auto-pause, no WAF — which is exactly how you'd run 10-30 real test families.
| Service | Lean Pilot (100) | 1,000 | 10,000 | 100,000 |
|---|---|---|---|---|
| Lambda compute | $5 | $50 | $300 | $2,000 |
| API Gateway | $3 | $25 | $150 | $1,200 |
| DynamoDB (on-demand) | $10 | $50 | $400 | $2,800 |
| S3 + Glacier storage | $5 | $50 | $500 | $4,500 |
| CloudFront delivery | $8 | $100 | $600 | $3,500 |
| MediaConvert + Transcribe | $15 | $150 | $700 | $2,500 |
| Aurora Serverless v2 | $25 | $90 | $180 | $450 |
| ElastiCache Valkey | $12 | $12 | $50 | $200 |
| Cognito | $0 | $0 | $0 | $280 |
| Monitoring + misc (SES, SNS) | $77 | $323 | $320 | $570 |
| Total / month | ~$160 | ~$850 | ~$3,200 | ~$18,000 |
| Per active user | $1.60 | $0.85 | $0.32 | $0.18 |
Indicative, single-region, video-heavy assumptions — consistent with the full cost model in the dev portal. At 100k users, $0.18/user/month is comfortably covered by opt-in advertising or minimal subscription revenue.
Growing is configuration, not re-architecture. Each step is a dial turned, with the trigger that tells you when.
flowchart LR
P["🌱 Lean Pilot
~$160/mo"] -->|"> 500 active users:
enable full alarms + WAF"| G["📈 Growth
~$850/mo"]
G -->|"> 5k users: raise Aurora
max ACU - S3 tiering on"| S["🏗️ Scale
~$3.2k/mo"]
S -->|"> 50k users: Multi-AZ,
Glacier Deep Archive,
reserved capacity savings"| M["🌍 Mature
~$18k/mo"]
M -.->|"international launch"| R["Multi-region
data sovereignty"]
style P fill:#0e3b2e,stroke:#4ade80,stroke-width:2px,color:#e8f4f0
style G fill:#14262a,stroke:#34d399,color:#e8f4f0
style S fill:#14262a,stroke:#34d399,color:#e8f4f0
style M fill:#14262a,stroke:#34d399,color:#e8f4f0
style R fill:#14262a,stroke:#8aa6a0,color:#8aa6a0
Deploy is one command per environment: ./scripts/deploy.sh dev deploy — the same 9 stacks, parameterised per stage.