Stage 1 of 7 · Model
The bytes behind a sync
Use 86,400 seconds per day. The stated 2 MB average is after compression; it is deliberately a first estimate, not a claim about a production file distribution.
What you need to know first
20 million changed files averaging 2 MB each produce how much new content per day, before deduplication?
About 40 TB.
20,000,000 × 2 MB = 40,000,000 MB, or about 40 TB per day in decimal units. Replication, metadata, old versions and retries add more; deduplication may reduce stored bytes but should not be assumed for capacity planning.
If those 40 TB arrive evenly over a day, what average payload bandwidth does the service receive?
About 463 MB/s.
40 TB ÷ 86,400 seconds ≈ 463 MB/s aggregate, before protocol overhead and peak-to-average variation. This is a fleet-wide flow, not what one API server should stream through its request memory.
The workload has two different costs. Small files are dominated by request, hashing and metadata overhead; large files are dominated by bytes on the wire and interruption risk. A design that treats every file as one HTTP body pays both costs badly.
What the stage asks
Which conclusions follow from the workload?
- Holds
At the given average, the service receives about 40 TB of changed file content per day before deduplication.
20 million × 2 MB is 40 TB in decimal units. Replication and retained history affect storage, while bursts affect peak bandwidth.
- Fails
A single request carrying the entire file is a good default because it uses fewer API calls.
It cannot resume a multi-gigabyte transfer after a timeout, and it ties API connection lifetime and memory pressure to file size. Small files may still be sent in one request; large transfers need bounded resumable pieces.
- Depends
Content-addressed blocks guarantee that storage will be much smaller than the source bytes.
Identical blocks can be reused, but encrypted or already-compressed data may differ even when files look similar. Capacity planning should use measured deduplication, not assume it.
The reasoning
- The average input alone is about 40 TB/day before deduplication.
- Large transfers need bounded retries; small files need low per-request overhead.
- Treat measured deduplication as an optimization, not a durability assumption.
Sizing establishes why bytes and metadata should take different paths. A few hundred megabytes per second of average payload is a system-level budget; each API process should validate and authorize transfers without buffering whole files. Peak load and geographic egress still need explicit targets before choosing regions or hardware.