107 lines
6.9 KiB
Markdown
107 lines
6.9 KiB
Markdown
|
|
# Expanded object-storage comparison — 2026-08-10
|
|||
|
|
|
|||
|
|
This adds self-managed S3-compatible storage and four large-cloud price points
|
|||
|
|
to the managed-provider comparison. All recurring totals include operator labor
|
|||
|
|
at €60/hour. Taxes are excluded. USD prices use the 2026-08-10 ECB reference
|
|||
|
|
rate of 1 EUR = 1.1555 USD.
|
|||
|
|
|
|||
|
|
## Self-managed reference architecture
|
|||
|
|
|
|||
|
|
Garage is the reference open-source implementation. It has an S3-compatible
|
|||
|
|
API and is designed for distributed deployments. Garage explicitly says its
|
|||
|
|
single-node quick-start has no redundancy and must not be used in production.
|
|||
|
|
CNPG/Barman compatibility remains a live preflight requirement.
|
|||
|
|
|
|||
|
|
The initial fixed-size estimates use locally attached storage:
|
|||
|
|
|
|||
|
|
- Host Europe: 8 vCPU, 16 GB RAM, 400 GB NVMe at €37.99/month including 19%
|
|||
|
|
VAT, normalized to €31.92 net per node. Network traffic is flat-rate.
|
|||
|
|
- Hetzner: CX53, 16 vCPU, 32 GB RAM, 320 GB local SSD at €29.49/month plus
|
|||
|
|
€0.50 IPv4, net per node. The June 2026 price adjustment is used.
|
|||
|
|
|
|||
|
|
Replication consumes the extra nodes; it does not multiply usable capacity.
|
|||
|
|
All nodes at one provider/location still share provider and site failure risk.
|
|||
|
|
|
|||
|
|
| Topology | Infrastructure/month | Internal labor/month | Running total at 320 GB | Internal setup | External setup | Usable ceiling | Assessment |
|
|||
|
|
| --- | ---: | ---: | ---: | ---: | ---: | ---: | --- |
|
|||
|
|
| Host Europe, 1 node | €31.92 | 2 h / €120 | €151.92 | 8 h / €480 | not quoted | 400 GB | no redundancy; not production |
|
|||
|
|
| Host Europe, 2 nodes | €63.85 | 3 h / €180 | €243.85 | 12 h / €720 | not quoted | 400 GB | replicated, but poor failure/quorum shape |
|
|||
|
|
| Host Europe, 3 nodes | €95.77 | 4 h / €240 | €335.77 | 16 h / €960 | not quoted | 400 GB | production candidate; single provider/site risk |
|
|||
|
|
| Hetzner, 1 node | €30.09 | 2 h / €120 | €150.09 | 8 h / €480 | not quoted | 320 GB | no redundancy; not production |
|
|||
|
|
| Hetzner, 2 nodes | €60.18 | 3 h / €180 | €240.18 | 12 h / €720 | not quoted | 320 GB | replicated, but poor failure/quorum shape |
|
|||
|
|
| Hetzner, 3 nodes | €90.27 | 4 h / €240 | €330.27 | 16 h / €960 | not quoted | 320 GB | production candidate; single location risk |
|
|||
|
|
|
|||
|
|
These sizes cover the base scenario's first month (180 GB), but not its month
|
|||
|
|
12 estimate (458 GB). The calculator therefore returns `null` once the fixed
|
|||
|
|
capacity is exceeded. A larger Host Europe 800 GB node tier or Hetzner Volumes
|
|||
|
|
would be required; obtain account quotes before treating that expansion as a
|
|||
|
|
decision price. Hetzner also documents that its Volumes are already replicated
|
|||
|
|
across three physical servers, which means combining three Garage replicas with
|
|||
|
|
three replicated Volumes would buy nested redundancy at additional cost.
|
|||
|
|
|
|||
|
|
## Managed object-storage price points
|
|||
|
|
|
|||
|
|
Azure Blob and Google Cloud Storage are Barman-supported object stores but are
|
|||
|
|
not S3-compatible APIs. AWS and STACKIT are direct S3 API comparisons. The
|
|||
|
|
following table fixes stored volume at **320 GB**, uses the base request pattern
|
|||
|
|
(2,500 writes and 1,000 reads/month), and includes one 5 GB restore drill. This
|
|||
|
|
puts elastic per-GB products, Hetzner's bundled minimum, and Garage's fixed
|
|||
|
|
capacity on the same running-cost basis.
|
|||
|
|
|
|||
|
|
| Service | Infrastructure at 320 GB | Internal labor/month | Running total at 320 GB | Internal setup | External setup |
|
|||
|
|
| --- | ---: | ---: | ---: | ---: | ---: |
|
|||
|
|
| Scaleway Standard Multi-AZ | €5.14 | 1 h / €60 | **€65.14** | none | €0 assumed |
|
|||
|
|
| Hetzner Object Storage | €6.49 | 1.5 h / €90 | **€96.49** | none | €0 assumed |
|
|||
|
|
| AWS S3 Standard, Frankfurt | €6.80 | 1.5 h / €90 | **€96.80** | 4 h / €240 | €0 assumed |
|
|||
|
|
| STACKIT Object Storage Premium-EU01 | €8.52 | 1.5 h / €90 | **€98.52** | 4 h / €240 | €0 assumed |
|
|||
|
|
| Google Cloud Storage Standard, Frankfurt | €6.05 | 2 h / €120 | **€126.05** | 6 h / €360 | €0 assumed |
|
|||
|
|
| Azure Blob Hot ZRS, Germany West Central | €6.72 | 2 h / €120 | **€126.72** | 6 h / €360 | €0 assumed |
|
|||
|
|
|
|||
|
|
Cloud request costs are negligible here; operator effort and egress assumptions
|
|||
|
|
matter more. Azure/GCP egress figures are explicit planning estimates rather
|
|||
|
|
than captured retail meters, so they must be refreshed in an account calculator
|
|||
|
|
before decision approval.
|
|||
|
|
|
|||
|
|
"Internal setup" values the federation's own implementation time at €60/hour.
|
|||
|
|
"External setup" means paid consulting, vendor professional services, or a
|
|||
|
|
contractor. No such service is assumed for managed self-service onboarding. It
|
|||
|
|
is **not quoted**, rather than zero, for Garage because an external security or
|
|||
|
|
operations review may be prudent and no scope or rate has been obtained.
|
|||
|
|
|
|||
|
|
The apparent difference between the earlier €62.89 Scaleway total and the
|
|||
|
|
normalized €5.14 infrastructure figure is reconciled in
|
|||
|
|
`docs/forecast-actual-control.md`: €62.89 is 180 GB infrastructure (€2.89) plus
|
|||
|
|
€60 labor, while €5.14 is infrastructure alone at 320 GB. The comparable 320 GB
|
|||
|
|
total is €65.14.
|
|||
|
|
|
|||
|
|
## Interpretation
|
|||
|
|
|
|||
|
|
Self-management does not win at this workload once even two hours/month of
|
|||
|
|
patching, monitoring, certificate handling, upgrades, disk replacement,
|
|||
|
|
capacity management, and restore support are valued. Three-node Garage costs
|
|||
|
|
roughly €330–€336/month plus €960 setup labor and still shares a provider/site
|
|||
|
|
failure domain. It may become attractive if the platform wants the capability
|
|||
|
|
for broader workloads, can amortize operations across them, or deliberately
|
|||
|
|
values open-source control above the cost difference.
|
|||
|
|
|
|||
|
|
For this backup alone, Scaleway remains the lowest modeled managed option.
|
|||
|
|
STACKIT is especially interesting as a sovereign three-AZ S3-compatible
|
|||
|
|
alternative: its documentation now states automatic replication across all
|
|||
|
|
three availability zones, versioning, lifecycle rules, server-side encryption,
|
|||
|
|
bucket policies, and Object Lock.
|
|||
|
|
|
|||
|
|
## Primary sources
|
|||
|
|
|
|||
|
|
- Host Europe VM pricing: https://www.hosteurope.de/Server/Virtual-Server/
|
|||
|
|
- Hetzner June 2026 pricing: https://docs.hetzner.com/general/infrastructure-and-availability/price-adjustment/
|
|||
|
|
- Hetzner Volume replication: https://docs.hetzner.com/cloud/volumes/overview/
|
|||
|
|
- Garage single-node warning: https://garagehq.deuxfleurs.fr/documentation/
|
|||
|
|
- AWS S3 price list: https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonS3/current/eu-central-1/index.json
|
|||
|
|
- AWS egress/free allowance: https://aws.amazon.com/ec2/pricing/on-demand/
|
|||
|
|
- Azure retail pricing API: https://learn.microsoft.com/en-us/rest/api/cost-management/retail-prices/azure-retail-prices
|
|||
|
|
- Google Cloud Storage pricing: https://cloud.google.com/storage/pricing
|
|||
|
|
- STACKIT storage pricing: https://www.stackit.de/de/preise__trashed/cloud-services/iaas/stackit-storage/
|
|||
|
|
- STACKIT object-storage capabilities: https://docs.stackit.cloud/de/products/storage/object-storage/basics/introduction/
|
|||
|
|
- STACKIT network pricing: https://www.stackit.de/de/preise__trashed/cloud-services/iaas/stackit-network/
|
|||
|
|
- ECB daily FX rate: https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml
|