Vacancy Env Cutover Rehearsal
This sprint rehearsed Vacancy gateway cutover using environment only.
Canonical extracted Vacancy runtime target:
http://localhost:4023
Temporary isolated rehearsal ports used:
- auth:
http://localhost:4101 - old Vacancy host:
http://localhost:4120 - API rehearsal:
http://localhost:4002
These isolated ports were used to avoid disturbing the normal stack while proving the cutover path. They do not change the canonical Vacancy target.
Fallback Mode
Gateway fallback mode used:
TENDERS_SERVICE_URL=http://localhost:4120- no
VACANCIES_SERVICE_URL
Meaning:
- Vacancy traffic flowed through the existing fallback seam to legacy
svc-tendersVacancy hosting
Cutover Mode
Gateway cutover mode used:
TENDERS_SERVICE_URL=http://localhost:4120VACANCIES_SERVICE_URL=http://localhost:4023
Meaning:
- only Vacancy traffic moved to extracted
svc-vacancies - non-Vacancy tender-domain traffic still targeted the old host as before
Cutover Steps
- Started
svc-authon4101 - Started legacy
svc-tenderson4120 - Started extracted
svc-vacancieson canonical target4023 - Started API on
4002in fallback mode - Verified fallback behavior against the old Vacancy host
- Restarted API on
4002withVACANCIES_SERVICE_URL=http://localhost:4023 - Re-ran Vacancy route checks through the API
Rollback Steps
Rollback remained an env flip plus API restart:
- stop the API process running with
VACANCIES_SERVICE_URL=http://localhost:4023 - remove or unset
VACANCIES_SERVICE_URL - restart API with only
TENDERS_SERVICE_URL=http://localhost:4120 - re-run Vacancy smoke checks
Observations
- route shape remained unchanged
- auth behavior remained unchanged
- direct old-host vs new-host parity held
- gateway fallback matched the old host
- gateway cutover matched the new host
- rollback back to old-host behavior worked cleanly
Explicit compatibility note:
- the verified public Vacancy list/detail behavior still includes intentional compatibility-backed truth
- the cutover rehearsal preserved that reality rather than masking it
Remaining Risks
Low residual risk:
- this sprint did not verify a successful authenticated Vacancy mutation path
Not a blocker from this rehearsal:
- gateway seam readiness
- auth ingress shape
- owner/internal Vacancy read behavior
- applicant read behavior
- compatibility-backed public Vacancy list/detail routing through the extracted runtime