Inventar de rute
Fiecare probă, pool-ul așteptat și invariantul pe care îl protejează.
Filtrează după familia de rute, protocol sau tip de suprafață. Paginile se deschid pe loc; endpointurile se deschid în inspector, unde poți trimite o cerere fără să părăsești consola.
Pool-uri de rute ale adaptorului
- web
app-router-pages - App Router pages plus /api/metrics/web. Scales 2–8 on 65% CPU.
- api
app-route-handlers - App Router route handlers. Scales 2–6 on 65% CPU.
- legacy
pages-router - Pages Router pages and Pages API, including the Edge handler. Scales 1–4 on 70% CPU.
- heavy
cpu-and-streaming - CPU-isolated lane for /api/heavy and /api/metrics/heavy. Scales 1–3 on 60% CPU.
Deploymentul de control răspunde la toate rutele dintr-un singur pool monolit, deci eticheta de pool descrie așteptarea pentru adaptor în toate cele 10 familii.
58 din 58 probe
App Router rendering
Server Components, HTML streaming and request-time rendering inside the web pool.
- P05Streaming + Suspense
/ro/lab/streamingThree Suspense chunks resolving at 150 ms, 700 ms and 1600 ms.
AșteptatEnvoy and Cloudflare forward each reveal without coalescing the response.
- P27MDX compilation
/ro/lab/mdxAn .mdx route compiled by @next/mdx under the internationalised App Router.
AșteptatLoader resolution and traced assets survive both the control and adapter image builds.
RSC navigation
Prefetching, persistent layouts, parallel and intercepting routes, instant transitions.
- P07Instant navigation
/ro/lab/dynamicRequest-time cookies, headers and a configurable artificial delay behind a loading boundary.
AșteptatThe shared layout stays mounted and interactive while the payload arrives.
- P13Parallel routes
/ro/lab/parallelA cached `@activity` slot and a dynamic `@inspector` slot resolved independently.
AșteptatBoth slots render from one URL without one blocking the other.
- P14Intercepting routes
/ro/lab/photosClient navigation opens a modal; a direct request renders the full page.
AșteptatThe interception only applies to the client transition, not to a cold request.
Cache Components / ISR
PPR, `use cache` profiles, remote cache coherence and tag invalidation across replicas.
- P01Cache Components + PPR
/ro/lab/cacheShared `use cache` clock, `use cache: remote` Prisma read and a `use cache: private` cookie read.
AșteptatOne mutation invalidates every replica; the cache nonce is identical whichever pod answers.
- P02Partial-prefetch ISR
/ro/lab/catalogOne prerendered slug and two unlisted parameters resolved below the App Shell boundary.
AșteptatPrefetching an unknown slug warms the shared cache without blocking the shell.
Reads a `use cache: remote` article; PUT upserts it and invalidates three tags.
AșteptatConcurrent reads after a write return exactly one title and one version.
- P24Prerendered catalog entry
/ro/lab/catalog/prerenderedThe one slug returned by generateStaticParams.
AșteptatServed from the build output without a request-time render.
- P25Unlisted catalog parameter
/ro/lab/catalog/on-demandA fallback parameter resolved below the App Shell boundary.
AșteptatThe shell streams first, then the entry, and the result is written to the shared cache.
GET returns the tagged clock for a scope; POST revalidates a tag or path.
AșteptatRepeated GETs across pods return one nonce until a POST invalidates the tag.
Data & mutations
Prisma/PostgreSQL, Redis, Server Actions, forms and Draft Mode.
- P03Prisma 7 + PostgreSQL
/ro/lab/dataDriver-adapter counts and the ten most recent probe writes, rendered at request time.
AșteptatEvery pod reaches the same database with a healthy connection pool.
Scoped counter incremented on every read, deletable per scope.
AșteptatTwo consecutive reads increment by one regardless of which pod answered.
- P08Server Actions
/ro/lab/actionsEncrypted action IDs, a progressively enhanced form and tag expiry after the write.
AșteptatAn action submitted to one replica stays decryptable and revalidates every other replica.
- P12Draft Mode
/ro/lab/draftPreview cookie state plus enable and disable links.
AșteptatThe Secure preview cookie survives the proxy and the redirect back into the app.
GET returns row counts; POST records a probe run with runtime identity.
AșteptatWrites from any pod are visible to every other pod.
Enables or disables the preview cookie, then redirects into the draft page.
AșteptatThe forwarded host and protocol are honoured so the redirect stays on the same origin.
Route handlers
App Router `route.ts` methods, bodies, uploads and lifecycle work.
POST schedules post-response work; GET polls the resulting token.
AșteptatWork scheduled with `after()` completes even though the response already finished.
Echoes the method, repeated query parameters and body shape.
AșteptatEvery method reaches the handler with its verb, headers and repeated params intact.
A route handler that throws deliberately.
AșteptatReturns 500 without leaking a stack trace, and the pod stays healthy.
Accepts a multipart body and validates size and media type.
AșteptatByte counts match the upload and a disallowed media type returns 415.
Realtime & streaming
SSE, byte-observable streams, cancellation and signed webhook delivery.
Subscribes to a Redis channel and relays published events to an already-open response.
AșteptatA POST from any pod reaches a stream held open by a different pod.
HMAC-verified raw body with a shared idempotency key.
AșteptatBytes survive the proxy unchanged and a replayed delivery is recognised by any pod.
Emits a tick event on an interval until the duration elapses or the client aborts.
AșteptatTicks arrive individually and an aborted request releases its slot immediately.
Images, metadata & assets
next/image optimisation, generated metadata, icons, OG images and static files.
- P15Metadata + OG
/ro/lab/metadataDynamic head output with canonical alternates for both locales.
AșteptatGenerated metadata matches on both deployments, including language alternates.
- P17Image optimizer
/ro/lab/imagesA local SVG, a generated raster route and a remote pattern, all through next/image.
AșteptatFormats, ETags and cache headers match; unlisted remote hosts are rejected.
The PNG that the optimizer probe consumes.
AșteptatAvailable to the optimizer regardless of which pool holds it.
The topology diagram served from /public.
AșteptatCache-Control includes max-age=3600 on both deployments.
The file-convention Open Graph image.
AșteptatReturns image/png from the build output.
The file-convention app icon.
AșteptatReturns image/png and is excluded from the proxy matcher.
Generated from the sitemap file convention.
Așteptatapplication/xml with both locales listed.
Generated from the robots file convention.
Așteptattext/plain from the build output.
Generated from the manifest file convention.
Așteptatapplication/manifest+json from the build output.
Proxy & routing rules
proxy.ts, rewrites, redirects, header matching, auth and error boundaries.
The target of the `Accept: text/markdown` rewrite on /:locale/lab.
AșteptatHeader matching happens before the request reaches a route pool, and `Vary: Accept` is set.
- P28Romanian locale tree
/ro/labThe same inventory served through the `ro` locale prefix.
Așteptatproxy.ts rewrites the locale before the cached application path.
- P29Session creation
/ro/lab/authA Server Action that sets an HTTP-only cookie and redirects.
AșteptatThe Set-Cookie survives the proxy and the redirect target is preserved.
- P30Proxy-guarded route
/ro/lab/protectedRedirects to the auth route unless a lab-session cookie is present.
Așteptatproxy.ts runs before the cached application path on every deployment shape.
- P31Error boundaries
/ro/lab/errorsTriggers the segment error boundary, forbidden() and unauthorized().
AșteptatEach boundary renders its own output and the digest is stable across pods.
Reports the routing headers the handler actually received.
AșteptatA public `next-resume` header is stripped to null before Next.js sees it.
A beforeFiles rewrite that keeps the /status URL.
AșteptatThe rewrite resolves without a client-visible redirect.
A rewrite that crosses from an App Router URL into a Pages API handler.
AșteptatRouting metadata sends the rewritten path to the Pages Router pool.
An afterFiles rewrite that injects `item=one&item=two`.
AșteptatBoth values of the repeated parameter reach the handler.
A non-permanent redirect to the default locale.
Așteptat307, not 308, and the locale prefix is applied.
A permanent redirect to the health probe.
Așteptat308 with the Location header intact through Envoy.
Pages Router
getStaticProps/getServerSideProps, Pages API and the Edge runtime handler.
- P18Pages Router ISR
/legacy/isr/shared-cachegetStaticProps with `fallback: 'blocking'` and a 15 second revalidate.
AșteptatThe regenerated page is shared, not regenerated once per replica.
- P19Pages Router SSR
/legacy/ssrgetServerSideProps echoing pod, pool, query and user agent.
AșteptatPages Router traffic lands in the legacy pool, never in the App Router pools.
A Pages API handler declaring `runtime: 'edge'`.
AșteptatReports `runtime: "edge"` while still being served by the Pages Router pool.
- P50Pages Router index
/legacygetStaticProps with a 30 second revalidate.
AșteptatRegenerates once for the whole pool, not once per replica.
Echoes router, method, query, pool and pod.
AșteptatReports the legacy pool, proving Pages API is routed separately.
Runtime & operations
Health probes, Prometheus metrics, pool-isolated load and runtime identity.
- P22Pool-isolated load
/ro/lab/loadSHA-256 iterations executed inside the App Router page pool.
AșteptatRender CPU pressure scales the web pool without touching the API pool.
Process and request metrics for the pod that answered.
AșteptatEach pool exposes its own series so scaling behaviour is attributable.
Synthetic CPU work executed by the Pages Router pool.
AșteptatLoad here scales the legacy pool alone.
Synthetic CPU work routed to the dedicated heavy pool.
AșteptatOnly the heavy pool's HPA responds; web and api stay flat.
Synthetic CPU work executed inside the route-handler pool.
AșteptatLoad here scales the api pool without disturbing page rendering.
`?mode=liveness` checks the process; the default readiness mode checks Postgres and Redis.
AșteptatLiveness never depends on shared services; readiness does.
Prometheus exposition pinned to the web pool.
AșteptatAnswered by an App Router page pod, not a route-handler pod.
Prometheus exposition pinned to the heavy pool.
AșteptatAnswered by a heavy pod, confirming the CPU lane is reachable.
Prometheus exposition served by the Pages API handler.
AșteptatAnswered by a legacy pod so all four pools are observable.