DevOps for Startups - What You Actually Need (And What to Skip)
Most DevOps content is written for companies with 50-person platform teams. Here's what actually matters when you have 2–5 engineers.
The Minimal Stack That Scales to $1M ARR
Hosting: 1–2 VPS (Hetzner, DigitalOcean, or dedicated server)
Containers: Docker + Docker Compose
CI/CD: GitHub Actions
SSL: Let's Encrypt via Certbot or Caddy
Monitoring: Uptime Robot (free) + Sentry (errors) + basic logging
Backups: Automated daily DB backups to S3 or Backblaze B2
That's it. No Kubernetes, no Terraform, no service mesh. Introduce complexity when you have a specific problem, not in anticipation of problems.
CI/CD: The One Thing You Must Have
Every commit merged to main should:
- Run tests
- Build Docker image
- Deploy to staging
- (On approval) Deploy to production
GitHub Actions makes this 50 lines of YAML. If you're deploying by SSH-ing into a server and running git pull, you will ship broken code to production eventually.
# .github/workflows/deploy.yml (simplified)
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run tests
run: npm test
- name: Build and push Docker image
run: docker build -t myapp:${{ github.sha }} .
- name: Deploy to server
run: ssh deploy@myserver "docker pull myapp:${{ github.sha }} && docker compose up -d"
Docker: Use It From Day One
Docker ensures "works on my machine" == "works in production." Your development environment, CI, staging, and production all run identical containers.
Docker Compose handles multi-container setups (app + database + Redis + Nginx) with one file. For most startups this is all you need.
Monitoring: The Minimum
Uptime Robot - pings your endpoints every 5 minutes, alerts via Telegram/email when down. Free tier is sufficient.
Sentry - catches unhandled errors in frontend and backend with stack traces. Free tier: 5k errors/month. Invaluable.
Server metrics - CPU, memory, disk via Netdata or Grafana + Prometheus when you need it. Don't set this up on day one.
When to Actually Consider Kubernetes
- You have 10+ microservices
- You need auto-scaling (traffic patterns that 10× in minutes)
- You have a dedicated DevOps engineer
Before that: Docker Compose + 2 servers (primary + hot standby) handles more load than most startups ever see.
Backup Strategy (Non-Negotiable)
- Daily PostgreSQL dump → compressed → uploaded to Backblaze B2 ($0.006/GB)
- Keep 30 days of backups
- Restore test monthly - backups you've never tested aren't backups
One pg_dump command in a cron job. This has saved multiple clients from total data loss.