Self-Hosted Cost Model

Modeling the Cost of a Self-Hosted Lakehouse

Self-hosted software is free; the lakehouse is not. It costs hardware written off over its life, erasure-coding redundancy (EC:2 on four drives stores every byte twice, Erasure Coding), headroom, power and, above all, people. In this model the hardware, power and labor figures are assumptions to replace with your own quotes; the S3 figure is AWS 24 's list price on 2 October 2026:

costs/model.py: self-hosted MinIO versus S3 Standard storage per monthPython
"""Monthly storage cost: self-hosted MinIO versus Amazon S3 Standard, and where they cross."""
# Assumptions (replace with your own quotes): four storage servers, HDDs, power, admin time
SERVERS = 4 * 8000 / 48                  # four $8,000 servers written off over 48 months
DRIVES_PER_TB = 2.0 * 1.25 * 15 / 48     # EC:2 stores data twice, 25% headroom, $15 per TB
POWER = 4 * 0.30 * 730 * 0.15            # 300 W each, 730 hours, $0.15 per kWh
ADMIN = 16 * 75                          # 16 hours a month at $75 an hour
S3_PER_TB = 1000 * 0.023                 # S3 Standard list price, us-east-1, first 50 TB
def self_hosted(tb):
    return SERVERS + tb * DRIVES_PER_TB + POWER + ADMIN
for tb in (2, 20, 200):
    print(f"{tb:>4} TB  self-hosted ${self_hosted(tb):>6,.0f} "
          f"(admin {ADMIN / self_hosted(tb):.0%})   S3 ${tb * S3_PER_TB:>6,.0f}")
tb = next(t for t in range(1, 1000) if t * S3_PER_TB > self_hosted(t))
print(f"break-even: about {tb} TB of table data")
Output
   2 TB  self-hosted $ 2,000 (admin 60%)   S3 $    46
  20 TB  self-hosted $ 2,014 (admin 60%)   S3 $   460
 200 TB  self-hosted $ 2,154 (admin 56%)   S3 $ 4,600
break-even: about 90 TB of table data

Self-hosting is nearly a fixed cost, 60% of it the administrator's time, while S3 grows linearly from almost nothing, so under these assumptions owning the storage pays only beyond about 90 TB (higher still with S3's cheaper tiers above 50 TB). Compute is left out (both need it), as are requests and egress (Costs Compared). The answer turns on admin hours, not drives.