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>
106 lines
6.9 KiB
Markdown
106 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
|