Architecture

2026-03-12 11:03:08
System Architecture - 1M+ Users/Day

Cloud Layer

Load Balancer x2 (Nginx HA)
Web Server x5 (FastAPI + Uvicorn)
Database 1+2 (PostgreSQL Primary + Replicas)
PgBouncer (Connection Pool)
Redis (Cache + Rate Limit + Sessions)

CDN / Storage

MinIO / S3 / Cloudflare R2
Images: direct CDN download
Videos: direct CDN stream
Presigned URL uploads
Not through home network

Local (MyHome)

Sync Service (JSON only)
Admin Panel (:8888)
Prometheus (:9090)
Grafana (:3000)
~1-5 KB per sync cycle
Data Flow Diagram
   Users (1M+/day)
        |
        v
   Domain (DNS Round-Robin)
        |
   +----+----+
   |         |
   v         v
 LB1      LB2      (Nginx, Active-Passive HA)
   |         |
   +----+----+
        |
   least_conn
   +-+--+--+--+-+
   | |  |  |  | |
   v v  v  v  v v
  Web1-5           (FastAPI + Uvicorn, async)
   |    |
   |    +-----------> S3/CDN   (Images/Videos - direct to CDN)
   |
   v
  PgBouncer         (Connection pooling)
   |
   +--------+--------+
   |        |        |
   v        v        v
 DB-Pri  Rep-1   Rep-2   (PostgreSQL Primary + Read Replicas)
   |
   |  JSON only (~1-5 KB)
   v
  Sync Service    (Cloud -> Local)
   |
   v
  Local (MyHome)  (Admin + Monitoring)
        
Capacity Analysis
Metric Capacity Notes
Requests/second ~2,500-5,000 r/s 5 web servers x 500-1000 r/s each
Users/day 1M+ users/day ~12 req/user = ~140M req/day capacity
DB Connections 1,000+ PgBouncer pooling, Primary + 2 read replicas
Bandwidth (Home) ~1-5 KB/cycle JSON metadata only, media via CDN
Cache Hit Rate 60-80% Nginx + Redis dual-layer caching