Do Cao Hieu
Do Cao Hieu
Do Cao Hieu
Do Cao Hieu
Do Cao Hieu

DevOps Engineer

Site Reliability Engineer

Platform Engineer

About Me

I'm Hieu, a DevOps engineer in Ho Chi Minh City. I run my own production platform: 5 Linux servers and about 120 containers behind Traefik and Cloudflare, with self-managed GitLab CI, Harbor and a full Prometheus, Grafana, Loki and Tempo stack. I hold it to SLOs with burn-rate alerts, ship through canary deploys that roll back on their own, and I am on call for it myself.

For Wellington Decorators in New Zealand I run the whole digital side remotely, from the website and CI/CD to email and monitoring.

  • Location: Ho Chi Minh City, Vietnam
  • Languages: Vietnamese, English
  • Skills:
    Docker
    Kubernetes
    Linux
    Prometheus
    Grafana
    Terraform
    Ansible
    GitLab CI
    GitHub Actions
    Python
What I Do
CI/CD and Releases

GitLab CI, GitHub Actions and Jenkins pipelines, signed images in Harbor, and canary deploys that roll back on their own.

Observability and SRE

Metrics, logs and traces with Prometheus, Loki, Tempo and Grafana; SLOs with burn-rate alerts; incidents with a timeline and a postmortem.

Infrastructure and Containers

Linux servers, Docker Compose in production, Traefik and Nginx at the edge, Ansible and Terraform; Kubernetes and Helm on a test cluster.

Data and Reliability

PostgreSQL and Redis with automatic failover (Percona, Sentinel), nightly backups to two cloud drives, and tested runbooks.

By the Numbers
5 Linux Servers
120 Containers
31 Monitored Apps
8 SLOs Tracked
Resume
Experience
2023 - Present
DevOps / Platform Engineer
Independent

Run 5 Linux servers in Singapore and Vietnam with about 120 containers and 30+ apps. Fleet Pulse for SLOs, canary deploys and incidents; self-managed GitLab, Harbor and Vault; nightly backups with Kopia to two cloud drives.

Mar 2024 - Present
Digital Lead, remote
Wellington Decorators Ltd, New Zealand

Built the site with Astro and headless Strapi on PostgreSQL in Docker Compose. Built Jenkins CI/CD, then a guarded deploy script with automatic rollback (about 440 ms downtime); end-to-end health checks with Telegram alerts.

Feb 2024 - May 2026
AI Trainer, Math and Language
Outlier AI

Trained frontier LLMs for OpenAI, Google, Anthropic and Meta (RLHF, SFT, rubric evaluation). Top 5%, Team Lead.

2019 - 2023
IT Help Desk
Moc Phat Furniture

IT support for 30+ staff: office LAN and Wi-Fi, NAS and backups.

Education
2015 - 2019
B.Eng, Automotive Engineering
HCMC University of Technology and Education

Where systems thinking and root-cause discipline first took hold.

Training
Kubernetes and DevOps
DevOpsEdu.vn, KodeKloud

Practical Kubernetes (certificate) and DevOps for Freshers at DevOpsEdu.vn; Kubernetes for Beginners at KodeKloud.

Platform
Containers
  • Docker and Docker Compose (production)
  • Kubernetes and Helm (test cluster)
  • Traefik and Nginx
  • Linux (Ubuntu), systemd, ufw
Delivery
CI/CD
  • GitLab CI (self-managed)
  • GitHub Actions
  • Jenkins (shared library)
  • Harbor registry, Trivy scanning
Operations
Observability
  • Prometheus, Alertmanager
  • Grafana, Loki, Tempo
  • SLOs and burn-rate alerts
  • Beszel, Dozzle
IaC and Data
  • Terraform, Ansible (Semaphore)
  • PostgreSQL (Percona HA)
  • Redis (Sentinel), MariaDB
  • Vault, Kopia backups
Languages
  • Bash, Python
  • Go, TypeScript
  • Vietnamese (native)
  • English (working)
Knowledge
  • Networking: TCP/IP, DNS, HTTP, TLS
  • Canary releases and automatic rollback
  • Incident response and postmortems
  • Backups and disaster recovery
  • AI gateways and RAG in production
  • Cost control on a small fleet
Projects
Writing
October 26, 2026 Auditing an old repo after the trivy-action tag hijack

While cleaning up my public GitHub repos I found a workflow that referenced a compromised trivy-action tag, checked whether I was exposed, and replaced the tag with a pinned commit and a self-test.

October 24, 2026 A 22.8 MB homepage crash-looped my job crawler for almost 6 hours

One oversized company homepage ran Job Radar's crawler out of memory, and because the task came back after every restart, almost nothing was collected for nearly 6 hours and nothing alerted.

October 24, 2026 What a home-made canary controller caught on its first day

Fleet Pulse's canary controller for Docker Compose and Traefik blocked three Job Radar releases on the day I built it, one deliberate failure and two real flaws in my own setup.

September 29, 2026 Traefik stopped seeing new containers after Docker restarted

A restart of Docker's socket left containers holding a stale bind mount, so Traefik returned 404 for new routes and monitoring agents went blind; a small self-healing script on five nodes fixed it.

September 15, 2026 Tailnet-only routes returned 403 because Tailscale rewrote the source address

Traefik's IP allowlist for the tailnet range rejected tailnet clients because Tailscale's exit-node masquerade changed their source address, fixed with a mangle rule on all five nodes.

September 9, 2026 A log shipper kept retrying logs its backend had rejected, and burned 1.5 cores in dockerd

Promtail looped forever on a backlog Loki would not accept, and every retry made dockerd re-parse 159 MB of container logs; a positions volume, a slower service-discovery refresh and a force-recreate fixed it.

August 30, 2026 server-2 went slow and then died, and the apps were innocent: reading CPU steal before blaming the application

A VPS hit load 93 on 4 cores with 66% steal time; the cause was the host, not the workloads, and the useful work was in the alerts and in how I read the numbers.

August 5, 2026 Two months of silent failure in a social posting pipeline

A shared API key was restricted, two posting bots kept running without errors anyone saw, and a client's social channels went quiet or repeated themselves for about two months.

August 2, 2026 An unattended deploy script that refuses bad builds, swaps by rename and rolls back by itself

After Jenkins stopped working for a client's Astro and Strapi site, I wrote a deploy script that checks the page count, stages the build while the old one serves, and rolls back on a failed health check.

Second edition, March 2026 AI Agents in Production

War stories from a DevOps engineer: model choice, context, cost, observability and security for agents in production. 13 chapters.

Free PDF, Vietnamese DevOps Bằng Hình

DevOps learned through diagrams, the gentlest start of the series.

Free PDF, Vietnamese Docker Compose Toàn Tập

Docker Compose from the first file to production, in 12 chapters.

Free PDF, Vietnamese DevOps Level MAX

A full DevOps engineer handbook in 25 chapters.

Free PDF, Vietnamese DevOps Tricks

A complete reference of practical tricks, in 24 chapters.

Free PDF, Vietnamese DevOps Field Manual

The flagship of the series: 848 pages of field notes.

Get in Touch