the playbook
28 March 2026 · 4 min read
Zero Bricked Prods
How to ship Liferay without turning production into a graveyard of half-deployed bundles.
Production should never be where you discover whether a bundle actually works. If the last deploy left the portal in a weird state, the fix is process — not another hotfix at 11pm.
The problem
Bricked prod usually means one of three things: a client extension failed mid-deploy, a module version mismatch took down the JVM, or someone pushed config that only worked on their laptop. The symptom is always the same — the portal boots, but half the features are gone and nobody knows which deploy broke it.
If you cannot reproduce the deploy on a clean environment in under thirty minutes, you are not ready for production.
The rule
Zero bricked prods means every release path is rehearsed before it touches customer traffic:
- Build artifacts in CI — same Gradle/Yarn commands, same JDK, same Node version every time.
- Deploy to a staging DXP that mirrors prod scopes, OAuth apps, and database size order-of-magnitude.
- Run smoke checks: login, headless token, one read tool, one write form if admin flows exist.
- Only then promote the same artifact hash — never rebuild on the server.
What good looks like
- Rollback is boring — previous LPKG or container image is one command away.
- Client extensions version independently; a bad widget does not require a full portal restart if the backend stays compatible.
- Ops runbooks name the exact health endpoints and log lines to check, not “ask Papu.”