Skip to content

perf(backend): JWKS warm-up, compressie, parallelle sync-poll (vervolg op #350)#351

Open
robbertbos wants to merge 2 commits into
perf/backend-concurrency-scalingfrom
perf/backend-scaling-pr2
Open

perf(backend): JWKS warm-up, compressie, parallelle sync-poll (vervolg op #350)#351
robbertbos wants to merge 2 commits into
perf/backend-concurrency-scalingfrom
perf/backend-scaling-pr2

Conversation

@robbertbos

@robbertbos robbertbos commented Jun 8, 2026

Copy link
Copy Markdown
Member

Vervolg-quick-wins op #350 (gestapeld: base perf/backend-concurrency-scaling).

Wijzigingen

  • JWKS-hardening (auth.ts, index.ts): expliciete timeoutDuration: 2500 (i.p.v. de jose-default 5000ms) + best-effort warmUpJwks() bij worker-start. Tokenvalidatie ongewijzigd. (Hygiëne voor de koude-start na een deploy — niet de fix voor een "elke-klik-traag"-symptoom.)
  • Response-compressie backend (app.ts): @fastify/compress (global) voor grote JSON-payloads.
  • Compressie statische assets (containers/frontend/nginx.conf): gzip on voor de SPA-bundle (JS/CSS/HTML) — die ging ongecomprimeerd over de lijn. Gevalideerd met nginx -t. De ingress (ingress-nginx, defaults) geeft de backend-compressie door; voor de API is daar niets nodig.
  • Parallelle sync-poll (sync.ts): de twee onafhankelijke queries via Promise.all.

Bijgewerkt na merge van #353

Verificatie

100% coverage, tsc schoon, nginx -t ok. Conflictvrij met samenwerken.

@robbertbos robbertbos force-pushed the perf/backend-scaling-pr2 branch 2 times, most recently from 84ed8d0 to 493904b Compare June 8, 2026 19:40
@robbertbos robbertbos changed the title perf(backend): JWKS warm-up, compressie, atomische save, parallelle sync-poll (vervolg op #350) perf(backend): JWKS warm-up, compressie, parallelle sync-poll (vervolg op #350) Jun 8, 2026
@robbertbos robbertbos force-pushed the perf/backend-scaling-pr2 branch 2 times, most recently from 250828d to 56cbc21 Compare June 8, 2026 20:08
@robbertbos robbertbos force-pushed the perf/backend-concurrency-scaling branch from 37c7b54 to 88ba803 Compare June 8, 2026 21:23
Vervolg-quick-wins op PR1 (#350), drie onafhankelijke verbeteringen:

- JWKS: expliciete timeoutDuration 2500ms (i.p.v. de jose-default 5000ms) plus
  een best-effort warmUpJwks() bij worker-start, zodat de eerste geauthenticeerde
  request niet de koude Keycloak-fetch betaalt. Tokenvalidatie ongewijzigd.
- @fastify/compress (global) voor grote JSON-responses.
- sync-poll: de twee onafhankelijke queries parallel via Promise.all.

De atomische save (db.transaction) is hier komen te vervallen: die wordt gedekt
door de save-race-fix #353 (transactie + conditional UPDATE), inmiddels gemerged.

100% coverage.
De frontend-nginx comprimeerde niets; de SPA-bundle (JS/CSS/HTML) ging
ongecomprimeerd over de lijn. gzip on + types/min_length/vary toegevoegd zodat
de tekst-assets gecomprimeerd worden (snellere initial load). Afbeeldingen/fonts
worden overgeslagen (al gecomprimeerd). Aanvulling op de backend-compressie
(@fastify/compress) in deze PR. Gevalideerd met nginx -t.
@robbertbos robbertbos force-pushed the perf/backend-scaling-pr2 branch from 56cbc21 to 0df2bbb Compare June 8, 2026 21:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant