← Back to capsules
DevOps Backend Deploy CI_CD SRE Producción

My production deploy protocol

Published on August 20, 2026

Deploying without a protocol is playing Russian roulette with production 🔥

Without a fixed order, every deploy is a gamble. And production is no place to improvise. 😅

In my early deployments of 𝗟𝘂𝗺𝗶𝗻𝗛𝗲𝗮𝗹𝘁𝗵 on the VPS I learned this the hard way: one skipped step, one variable that didn't update, and the service down on a Friday night. 💻

Today I have a fixed 𝗽𝗿𝗼𝘁𝗼𝗰𝗼𝗹 with three phases:

🟡 𝗣𝗿𝗲-𝗱𝗲𝗽𝗹𝗼𝘆

✅ Review and compare environment variables (.env)

✅ Validate the build locally

✅ Run the tests

✅ Review 𝗗𝗕 𝗺𝗶𝗴𝗿𝗮𝘁𝗶𝗼𝗻 𝘀𝗰𝗿𝗶𝗽𝘁𝘀 before running them

✅ Create a backup of the current server and database state

🔵 𝗗𝗲𝗽𝗹𝗼𝘆

✅ Pull the correct branch on the server

✅ Install dependencies

✅ Run 𝗗𝗕 𝗺𝗶𝗴𝗿𝗮𝘁𝗶𝗼𝗻 𝘀𝗰𝗿𝗶𝗽𝘁𝘀 (if applicable)

✅ Run the build — or the 𝘀𝗲𝗺𝗶-𝗮𝘂𝘁𝗼𝗺𝗮𝘁𝗶𝗰 𝗱𝗲𝗽𝗹𝗼𝘆 𝘀𝗰𝗿𝗶𝗽𝘁

✅ Restart the service (PM2 / systemd / nginx)

🟢 𝗣𝗼𝘀𝘁-𝗱𝗲𝗽𝗹𝗼𝘆

✅ Smoke test on critical routes

✅ Verify that DB migrations applied correctly

✅ Functional test from the client (app, web system, user's full flow)

✅ Review logs in real time for the first 5 minutes

✅ Confirm that monitoring is active

And two 𝗺𝗮𝘅𝗶𝗺𝘀 I always apply 👇

🚫 𝗔𝘃𝗼𝗶𝗱 𝗱𝗲𝗽𝗹𝗼𝘆𝗶𝗻𝗴 𝗼𝗻 𝗙𝗿𝗶𝗱𝗮𝘆𝘀. If something breaks, you have the whole weekend ahead. Not worth it.

🕐 𝗗𝗲𝗽𝗹𝗼𝘆 𝗱𝘂𝗿𝗶𝗻𝗴 𝗹𝗼𝘄 𝗰𝗼𝗻𝗰𝘂𝗿𝗿𝗲𝗻𝗰𝘆. Fewer active users = less impact if something fails while the system stabilizes.

A checklist is not bureaucracy. It's the difference between a smooth deploy 🚀 and an emergency night.

Do you have your own deploy protocol? What maxim would you add? 👇

Keep flying, Champions! ✈️