Skip to content

docs(onprem): add hardware sizing guidance for self-hosted Pro - #15459

Merged
devGregA merged 5 commits into
bugfixfrom
docs/pro-hardware-sizing
Aug 2, 2026
Merged

docs(onprem): add hardware sizing guidance for self-hosted Pro#15459
devGregA merged 5 commits into
bugfixfrom
docs/pro-hardware-sizing

Conversation

@rossops

@rossops rossops commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator

Adds a public page with starting-point hardware recommendations for self-hosted DefectDojo Pro deployments, indexed by finding count and concurrent users. This guidance previously only existed in internal documents and got reassembled by hand for each request, which meant the numbers drifted. This gives it one home.

Specs are given as generic vCPU and memory figures so they apply to any cloud provider or on-premise hardware. The application node guidance assumes Kubernetes, and the page notes that a Docker Compose deployment on a single host should use the same totals.

Every tier is a range rather than a fixed number. Finding count is the headline figure, but it is not the only thing that drives sizing, so the page covers what pushes a deployment up a tier ahead of its finding count: import volume and frequency, deduplication breadth, reporting and dashboard load, API traffic from integrations, and retention policy.

Ranges are deliberately conservative. The floor of each range is a workable configuration and the ceiling leaves headroom, so a deployment provisioned anywhere inside a range has room to grow rather than needing a resize shortly after going live. The page is explicit that these are starting points rather than limits, and directs anyone at the top of the table to talk to us before provisioning.

Two points the page makes that are easy to get wrong:

  • Database memory matters more than database CPU. Aggregation-heavy queries stay fast while the working set and its indexes are served from memory and degrade quickly once the database reaches for disk, so memory should be bought before cores.
  • Application nodes track concurrent users, not finding count. The user figures in the table assume smaller datasets belong to smaller teams, and that assumption breaks often. The two layers scale independently.

Also reorders the on-premise section so the lifecycle reads size, install, migrate, upgrade.

Testing

  • hugo --minify --gc --config config/production/hugo.toml builds clean, 636 pages, no errors.
  • No new warnings. Verified by building this branch and its base separately and diffing the warning output. Identical, 8 before and 8 after, all pre-existing config-level deprecations.
  • All internal anchors on the new page resolve against the built output, checked alongside the other three pages in the section.
  • Sidebar ordering and section placement verified in the rendered HTML.

🤖 Generated with Claude Code

Adds a public page with starting-point hardware recommendations for
self-hosted DefectDojo Pro deployments, indexed by finding count and
concurrent users.

Specs are given as generic vCPU and memory figures so they apply to any
cloud provider or on-premise hardware. Every tier is expressed as a range
rather than a fixed number, since the right size depends on import volume,
deduplication breadth, reporting load, API traffic, and retention. The page
covers each of those as reasons to size up ahead of your finding count.

Ranges are deliberately conservative. The floor of each range is a workable
configuration and the ceiling leaves headroom, so a deployment provisioned
anywhere inside a range has room to grow rather than needing a resize
shortly after going live.

Also reorders the on-premise section so the lifecycle reads size, install,
migrate, upgrade.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
rossops and others added 4 commits August 1, 2026 16:06
Adds a row at the far end of the sizing table for deployments approaching
500M findings, along with a section on what changes at that scale.

The row is marked as a reference point rather than a continuation of the
pattern above it, since the gap from the 10M tier is too wide to
interpolate across and a deployment landing in between needs sizing on its
own terms.

Two things drive the accompanying guidance. Deduplication compares each
incoming finding against the existing data set, so import cost grows with
the size of the data behind it and becomes the binding constraint ahead of
query performance. And the memory figures throughout the table assume a
small hot set, which is what allows a database to hold far more data than
it has memory and still perform well. Both assumptions are now stated
rather than implied.

The 500M storage figure assumes older findings are archived out of the
live data set rather than accumulating, so the storage section states that
assumption and notes that the per-million rate does not extend to an
unmanaged data set of that size. Also notes that throughput becomes the
storage constraint before capacity does once the working set stops fitting
in memory.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The top tier before the 500M reference point listed a flat 16 vCPU, which
sat low against deployments of that size in practice and left an abrupt
gap ahead of the 500M row. Widening it to 16-32 keeps the ceiling in line
with what a data set of that size actually asks for.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Reads 768 GB+ rather than a fixed figure. How much memory a data set of
that size actually needs depends on how much of it stays hot, and the
section on very large deployments already says a workload that reads
across the whole data set will want more than the table lists. Writing it
as a floor keeps the table consistent with that.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Import and deduplication run on the application tier, so at a data set
that size the node count is driven by ingest throughput rather than by how
many people are in the UI. The section on application nodes now carries
that exception, since the rest of the table follows user count and the
500M row would otherwise look inconsistent with the rule stated directly
above it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@devGregA
devGregA self-requested a review August 2, 2026 02:42
@devGregA
devGregA merged commit f030856 into bugfix Aug 2, 2026
279 of 280 checks passed
@devGregA
devGregA deleted the docs/pro-hardware-sizing branch August 2, 2026 02:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants