T06: optimization-case schema, fail-closed evaluator, cadence and decision template. Every option including the baseline must present all ten decision fields; one unknown blocks the comparison. Validated on the storage case (Hetzner computes and loses to Scaleway by EUR 29.14/month on operator labour; Host Europe blocks on four named gaps) and on the non-storage reef-railiance k3s rightsizing case (low utilization is real, but nothing is costable while the railiance01 price is unknown). T07: portfolio report over coverage, lifecycle, utilization, cost, renewals, risks, open cases, and next actions, derived only from committed evidence. Portfolio spend is reported null rather than as a partial sum, unattributed cost is a named list rather than a spread, and unmeasurable resources are reported rather than dropped. RESOURCE-WP-0003 is finished; both cases remain blocked_on_evidence against live delegated records in other repositories. RESOURCE-WP-0002 is untouched. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
6.9 KiB
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