Strangler Fig Demo

Same event. Legacy waits. Modern responds now.

Trigger one interview moment and watch the difference in user experience: the modern stream confirms it immediately, while the legacy snapshot stalls behind polling, PHP latency, and a visibly stale screen.

Session

Interview session

Moderator

Moderator

Participant

Participant

Trigger

One button generates one business event from the modern API.

Fast path

The interviewer sees the new moment immediately through the WebSocket stream.

Slow path

The legacy view stays stale until the next 3s poll finishes and PHP returns.

Live Nginx Cutover

Same URL. Live cutover through nginx.

Keep this page open and switch the gateway in another terminal. The client contract stays fixed while nginx changes which implementation serves the route behind it.

Canonical route

/interview/session/1

Current upstream

waiting

Gateway check

Waiting...

Route mode

Waiting

Gateway latency

Waiting...

What the stable route is serving right now

Waiting for the canonical gateway route to answer.

Waiting for the gateway route to answer so the current upstream can be identified.

Demo command:./scripts/cutover-session-route.sh modern./scripts/cutover-session-route.sh legacy

Legacy Snapshot

Wait For Polling To Finish

This is the slow path. Even after the new moment exists elsewhere, this card cannot move until a synchronous HTTP poll finishes and the legacy controller returns.

Polling every 3s...

Last check: Waiting...

State

Waiting for first event

Response time

Loading...

Snapshot as of

Waiting...

Delivery mode

HTTP poll + sync PHP controller

Last visible interview moment

No synced moment yet. Trigger the simulation to start the comparison.

Trigger one event and this card will immediately demonstrate the wait: nothing changes here until the next poll fully completes.

Modern Stream

Publish Once, Update Immediately

This is the fast path. The same interview moment lands here as soon as the modern API publishes it, without waiting for another page poll to confirm progress.

WebSocket connecting

Latest event: Waiting...

State

Waiting for first event

Connection

Reconnecting

Demo events

0

Delivery mode

Socket.IO push

Latest interview moment

No live events yet. Trigger the simulation to push the first interview moment.

This is the target state of the strangler pattern: publish the event once, update the main experience now, and let legacy compatibility trail behind.

Recent Demo Events

What the interviewer can point to

The event list proves the business action already happened, even while the legacy snapshot still looks old.

No demo events yet. Click Simulate Interview Event to start the side-by-side comparison.