Case study DevOps này kể câu chuyện một team dev 5 người tại startup SaaS ở Hà Nội — từ lúc deploy 1 lần/tuần bằng SSH (và run mỗi lần deploy) đến khi tự tin deploy 10 lần/ngày nhờ CI/CD pipeline tự động. Tất cả setup trong 2 tuần, chi phí gần bằng 0.
Bối cảnh
Về startup
- Sản phẩm: Platform quản lý dự án cho agency
- Team dev: 5 người (3 backend, 2 frontend)
- Tech stack: React + Node.js + PostgreSQL
- Users: 5,000+ (200 công ty)
- Server: 1 VPS trên DigitalOcean ($40/tháng)
Quy trình deploy cũ
Dev viết code → Push lên GitHub → Nhắn anh Tuấn (senior dev) → Anh Tuấn SSH vào server
→ git pull → npm install → npm run build → pm2 restart → Test bằng tay → Hy vọng không sập
Thời gian: 30-60 phút mỗi lần deploy. Tần suất: 1 lần/tuần (thứ 6 chiều, để cuối tuần có thời gian fix nếu lỗi).
Vấn đề cụ thể
| Vấn đề | Tần suất | Hậu quả |
|---|---|---|
| Deploy lỗi, app crash | 1-2 lần/tháng | Downtime 30 phút - 2 giờ |
| ”Trên máy em chạy tốt” | Hàng tuần | 2-4 giờ debug environment mismatch |
| Anh Tuấn đi vắng → không deploy được | 2-3 lần/tháng | Feature delay, hotfix chờ |
| Quên chạy migration | 1 lần/tháng | App crash, rollback thủ công |
| Merge conflict khi cả team đều push cuối tuần | Hàng tuần | 1-3 giờ resolve |
| Test bằng tay bỏ sót bug | Hàng tháng | Bug đến production, khách phàn nàn |
Tổng thời gian lãng phí: ~40 giờ/tháng (8 ngày công).
Turning point
Tháng 3: Deploy thứ 6 như mọi khi. Anh Tuấn quên chạy database migration. App crash. Rollback thủ công — nhưng rollback xóa mất 3 giờ data khách hàng mới tạo. Khách hàng phàn nàn trên group Zalo. CEO ra tối hậu thư: “Fix quy trình deploy trong 2 tuần.”
Giải pháp: DevOps Pipeline trong 2 tuần
Tuần 1: CI Pipeline + Docker
Ngày 1-2: Docker hóa ứng dụng
Tạo Dockerfile cho frontend và backend:
Mỗi dev chạy docker compose up → có môi trường giống production trên máy local. Hết “trên máy em chạy tốt”.
Ngày 3-4: CI Pipeline (GitHub Actions)
Setup auto test khi push code — bao gồm lint check, unit tests, và build verification. Mỗi pull request phải pass CI mới merge được. Bật branch protection rules.
Ngày 5: Database migration tự động
Migration chạy tự động trong CI/CD pipeline — không ai quên nữa. Pipeline tự động kiểm tra migration có conflict không, chạy migration trên staging trước.
Tuần 2: CD Pipeline + Monitoring
Ngày 1-2: Staging environment
Setup staging server ($10/tháng DigitalOcean). Mọi code merge vào develop → tự động deploy lên staging trong 5 phút. Team test trên staging trước.
Ngày 3-4: Production deployment
Merge develop vào main → GitHub Actions tự động:
- Build Docker images
- Push lên container registry
- SSH vào production
- Pull new images
- Docker Compose up (zero-downtime)
- Chạy health check
- Thông báo Slack
Rollback: 1 click trên GitHub → re-deploy previous image → 2 phút.
Ngày 5: Monitoring + Alerting
Setup monitoring stack miễn phí:
- Sentry (free tier): Error tracking — biết ngay khi có lỗi JS/API
- UptimeRobot (free): Ping website mỗi 5 phút, alert khi down
- Docker health checks: Tự restart container khi crash
- GitHub Actions notifications: Slack alert khi deploy thành công/thất bại
Pipeline hoàn chỉnh
Developer push code
↓
[GitHub Actions CI]
├── Lint check (1 phút)
├── Unit tests (2 phút)
├── Build Docker images (3 phút)
└── PASS/FAIL notification
↓ (nếu PASS)
[Pull Request Review]
├── Teammate review code
└── Approve merge
↓
[Merge to develop]
↓
[Auto Deploy Staging] (3 phút)
↓
[Team test trên staging]
↓
[Merge to main]
↓
[Auto Deploy Production] (5 phút)
↓
[Health Check + Monitoring]
├── Sentry: no new errors ✓
├── UptimeRobot: 200 OK ✓
└── Slack: "Deploy v1.23 thành công"
Tổng thời gian: ~15 phút (từ code → production). Trước: 30-60 phút + rủi ro.
Kết quả
So sánh trước - sau
| Metric | Trước | Sau | Cải thiện |
|---|---|---|---|
| Deploy frequency | 1/tuần | 8-12/ngày | +5,600% |
| Deploy time | 30-60 phút | 8 phút (tự động) | -87% |
| Deploy failure rate | 25% | 3% | -88% |
| Mean time to recovery | 1-2 giờ | 5 phút (rollback) | -96% |
| Time wasted/tháng | 40 giờ | 4 giờ | -90% |
| Environment issues | Hàng tuần | 0 (Docker) | -100% |
| Người biết deploy | 1 (anh Tuấn) | 5 (cả team) | +400% |
| Test coverage | 0% | 72% | +72% |
Impact cho business
| Business metric | Trước | Sau 3 tháng |
|---|---|---|
| Feature release cycle | 2-4 tuần | 1-3 ngày |
| Bugs trên production | 5-8/tháng | 1-2/tháng |
| Customer complaints | 3-5/tháng | 0-1/tháng |
| Developer satisfaction | 3/5 | 4.5/5 |
| Uptime | 98.5% | 99.9% |
Chi phí đầu tư
| Hạng mục | Chi phí |
|---|---|
| Staging server (DigitalOcean) | $10/tháng |
| GitHub Actions | $0 (free tier) |
| Sentry | $0 (free tier) |
| UptimeRobot | $0 (free tier) |
| Docker Hub | $0 (free tier) |
| Thời gian setup (2 tuần × 1 dev) | ~20 triệu VND (opportunity cost) |
| Tổng chi phí | ~20 triệu setup + 250K/tháng |
ROI
- Tiết kiệm: 36 giờ/tháng × 50K/giờ (dev) = 1.8 triệu/tháng
- Giảm downtime: 2 giờ/tháng × 2 triệu/giờ (doanh thu) = 4 triệu/tháng
- Nhanh hơn ship feature: Ước tính +10% doanh thu/quý nhờ feature release nhanh
- ROI tháng đầu tiên: Hoàn vốn setup
Bài học cho team dev nhỏ
1. Bắt đầu đơn giản
Không cần Kubernetes, không cần AWS ECS, không cần Terraform. Docker Compose + GitHub Actions + 1 VPS là đủ cho team < 10 devs.
2. Docker giải quyết 80% vấn đề
“Trên máy em chạy tốt” — câu này biến mất hoàn toàn sau khi dùng Docker. Mọi người chạy cùng 1 Docker image.
3. CI/CD bắt buộc cho mọi team size
Kể cả team 1 người. Auto test + auto deploy = an toàn + nhanh + không stress. Free tools đủ dùng.
4. Rollback quan trọng hơn deploy
Deploy luôn có thể lỗi. Quan trọng là rollback nhanh (< 5 phút). Docker image versioning cho phép rollback 1 click.
5. Monitoring là must-have, không phải nice-to-have
Biết lỗi trước user biết. Sentry + UptimeRobot (miễn phí) cho biết ngay khi có vấn đề — thay vì chờ user phàn nàn.
Tech stack DevOps (miễn phí)
| Tool | Chức năng | Free tier |
|---|---|---|
| GitHub | Source control | Unlimited |
| GitHub Actions | CI/CD | 2,000 phút/tháng |
| Docker | Containerization | Unlimited |
| Sentry | Error tracking | 5K events/tháng |
| UptimeRobot | Uptime monitoring | 50 monitors |
| Slack | Notifications | Unlimited |
Tổng chi phí tools: 0 VND/tháng. DevOps không cần đắt.
Trinh Digital DevOps Services
Tại Trinh Digital, chúng tôi giúp:
- DevOps Setup Sprint — Setup CI/CD hoàn chỉnh trong 1 tuần, từ 20 triệu VND
- Docker Migration — Dockerize ứng dụng hiện tại
- Managed DevOps — Quản trị pipeline hàng tháng
- DevOps Training — Workshop 1 ngày cho dev team
FAQ — Câu hỏi thường gặp
1. Team dùng PHP/WordPress, có áp dụng được không?
Được. GitHub Actions + SSH deploy hoạt động với mọi ngôn ngữ. WordPress: auto deploy qua rsync, auto run database migration. Docker optional cho PHP (không bắt buộc).
2. Server cũ (không phải cloud) có setup CI/CD được không?
Được, miễn server có SSH access. GitHub Actions SSH vào server cũ như SSH vào cloud. Chỉ cần internet connection.
3. Làm sao thuyết phục CEO đầu tư 2 tuần cho DevOps?
Tính: 40 giờ/tháng lãng phí × 12 tháng × 50K/giờ = 24 triệu/năm (chỉ riêng thời gian). Cộng thêm rủi ro downtime: 1 lần sập 4 giờ = 8-20 triệu. Setup DevOps: 20 triệu 1 lần. ROI rõ ràng.
Muốn setup DevOps cho team trong 1-2 tuần? Liên hệ Trinh Digital để được tư vấn và hỗ trợ setup.