Article
Why your SaaS needs a DevOps strategy from day one
Every SaaS team we have inherited had the same story. Deployment started as one engineer running a command. It worked, so nobody changed it. Eighteen months later that command has grown environment variables nobody can account for, staging no longer resembles production, and the person who set it up has moved on.
This is not a failure of discipline. Skipping infrastructure work early is a rational trade when you are trying to find out whether anyone wants the product. The mistake is not making the trade — it is never revisiting it, and not knowing what it will cost to unwind.
What does deferring DevOps actually cost?
The cost is not the infrastructure work you eventually do. It is the decisions that get made in the meantime, which assume the current setup and are expensive to reverse.
- Configuration ends up in the application rather than the environment, so a second environment means a code change.
- Migrations get run by hand, so nobody is sure which have been applied where.
- Tests are skipped when deploys are manual, because the person deploying is already the person who checked it works.
- Secrets accumulate in places that are hard to audit and harder to rotate.
- Nobody can create a throwaway environment, so every experiment happens against staging, and staging is never trustworthy.
Each of these is individually small. Together they produce a system where the only person who can safely deploy is the person who has been there longest, which is a business risk long before it is an engineering one.
What is the minimum worth having before the first customer?
Not Kubernetes. Not a service mesh. The floor is much lower than teams assume, and most of it is a day or two of work.
- Deploys triggered by merging to a branch, not by a person running a command. GitHub Actions is sufficient and free at this scale.
- Configuration read from the environment, never committed. This single rule is what makes a second environment possible later.
- One command that stands up the whole stack locally. Docker Compose is usually enough, and it is how a new engineer becomes useful on their first day rather than their first week.
- Error tracking wired up before launch. Sentry takes twenty minutes and is the difference between hearing about a bug from your logs and hearing about it from a customer.
- Automated database migrations that run as part of deploy, with a documented rollback.
That is the whole list. It does not include infrastructure as code, orchestration, or observability platforms, because those earn their keep at a scale most pre-launch products have not reached.
When does the next tier become worth it?
Two signals, and they are both organisational rather than technical.
The first is a second engineer who needs to deploy. The moment deployment is shared, the informal knowledge that made a manual process workable stops being reliable, and the process has to become explicit.
The second is a customer whose contract implies availability. Once downtime has a named cost, you need to know about it before the customer does, which means monitoring on the handful of signals that actually indicate a problem — error rate, latency at the 95th percentile, queue depth, and whether the thing is up at all — routed to an alert that reaches a human.
At that point infrastructure as code starts paying for itself. Terraform or Bicep definitions mean staging and production differ only in their variables, which eliminates the entire class of bug where something worked in one environment and not the other.
Staging is only useful if it is production with different data. Anything less and you are testing a different system.
What does good look like six months in?
A healthy setup at this stage is unremarkable, and that is the point. Pull requests get a preview environment automatically and destroy it on merge. Containers are built once and promoted between environments rather than rebuilt at each stage, so the artefact tested is the artefact released.
Every alert has a runbook, and every runbook has been followed at least once by someone who did not write it. Cost is attributed to workloads rather than arriving as a single monthly surprise. New engineers deploy on their first week, because deploying is not an act of courage.
None of this is advanced. It is just work that is dramatically cheaper to do before there are customers depending on the thing being up.
Questions
Frequently asked.
How much DevOps does a pre-launch SaaS actually need?
Automated deploys on merge, configuration in the environment rather than the code, a one-command local setup, error tracking, and automated migrations. That is roughly two days of work and covers the majority of the value.
When should a SaaS team adopt infrastructure as code?
When a second engineer needs to deploy, or when a customer contract implies availability. Before either of those, the overhead usually outweighs the benefit.
Why is a drifted staging environment a problem?
Because testing in an environment that differs from production only tells you about that environment. Staging is useful when it is production with different data, which is what infrastructure as code makes achievable.