Why Your Deployment Is Still a Manual Process in 2025
by Arif Ikhsanudin, Backend Developer
You Have a Pipeline. Deployment Is Still a Ceremony.
Look at your last five production deployments. Were any of them triggered by pushing a button — one button, no prerequisites, no Slack coordination, no "can you be on standby in case something breaks?" Not one? That's the pattern. Teams invest months building pipelines that still terminate at a manual hand-off, whether that's an ops engineer who "does the deploy," a change advisory board approval, or just an unspoken rule that only the tech lead merges to main on Fridays.
This isn't a tooling failure. It's an organizational trust failure disguised as a process.
Why Manual Steps Survive
Every manual step in a deployment exists for one of three reasons: it compensates for something the automated pipeline can't verify, it's institutional memory that was never encoded, or it's risk aversion that was never re-examined after the original incident that created it.
Unverified assumptions are the most common cause. Your pipeline runs unit tests and a build — but production has a specific database state, a VPN requirement, and three third-party integrations that behave differently under load. Nobody automated the verification of those because "we'd know if something was wrong when it goes out." That heuristic requires a human on standby.
Tribal knowledge is the second killer. Someone knows that service B must be deployed before service A, or that a config flag needs to be toggled in the admin panel after deployment, or that the load balancer needs a 30-second drain before the old instances terminate. It's not written down because it's "obvious" to the three people who've been burned by it. Automation can't run what's only in someone's head.
Risk aversion that calcified is the third. An incident three years ago led to a rule: all production deploys require a second set of eyes. That was reasonable then. Whether it's still reasonable — now that you have canary deployments, automated rollbacks, and proper observability — nobody has asked.
What Actually Makes Deployment Automatable
You need three things before a deployment can safely run without human coordination:
Confidence in your checks. Not just "tests pass," but "these tests cover the failure modes that have historically caused incidents." This means going back through your postmortems and asking whether a test would have caught each issue. If the answer is consistently no, your test suite is not a safety net for deployment — it's a correctness check for business logic, which is a different thing.
Externalized, version-controlled configuration. If deployment requires someone to update a config value in a UI after the fact, you have a manual step that's invisible to your pipeline. Use environment-specific config files checked into version control, or a config management tool like AWS Parameter Store or HashiCorp Vault, and pull values at startup — not post-deploy.
# Pull config at container startup, not during deployment
# Dockerfile entrypoint pattern
ENTRYPOINT ["sh", "-c", "aws ssm get-parameters-by-path \
--path /myapp/${ENVIRONMENT}/ \
--with-decryption \
--query 'Parameters[*].[Name,Value]' \
--output text | \
awk '{print substr($1, length(\"/myapp/${ENVIRONMENT}/\")+1) \"=\" $2}' \
> /etc/myapp/config.env && exec java -jar app.jar"]
A documented, tested rollback path. "We'd roll back if needed" is not a rollback plan. The rollback plan is: here is the exact command or pipeline trigger that reverts to the previous version, here is the expected time to completion, here is who gets notified automatically. If you've never run a rollback in a non-production environment, you don't have a rollback plan — you have a rollback theory.
The Real Blocker Is Accountability Structure
Automated deployment means that when something breaks, the pipeline did it. In orgs where post-incident reviews look for people to blame rather than systems to improve, that's a problem. Nobody wants to be the engineer who "set up the automation that took down production."
Blameless postmortems aren't just a morale improvement — they're a prerequisite for automated deployment. If the culture punishes incidents rather than learning from them, every engineer with influence over the pipeline will quietly ensure a human remains in the loop as a buffer.
Fix the culture, and the automation becomes politically viable. Skip the culture fix, and you'll be adding manual approval gates back to pipelines that were briefly automatic.
The Step to Take This Week
Find the last production deployment that required human intervention beyond clicking "deploy." Write down exactly what that human did. For each action, answer: could this be encoded as a pre-deploy check, a post-deploy verification, or automated configuration? If the answer is yes to all of them — automate one. Not all of them. One. Build trust in the automation incrementally, and the manual steps will become indefensible one by one.