Files
goodgo-platform/docs/PRODUCTION_READINESS.md
Ho Ngoc Hai d8b409a9ab
Some checks failed
CI / Lint → Typecheck → Test → Build (22) (push) Failing after 18s
CI / E2E Tests (push) Has been skipped
CodeQL Analysis / CodeQL (javascript-typescript) (push) Failing after 2m15s
Deploy / Build API Image (push) Failing after 28s
Deploy / Build Web Image (push) Failing after 16s
Deploy / Build AI Services Image (push) Failing after 17s
E2E Tests / Playwright E2E (push) Failing after 31s
Security Scanning / Dependency Audit (pnpm) (push) Failing after 3s
Security Scanning / Trivy Scan — API Image (push) Failing after 1m46s
Security Scanning / Trivy Scan — Web Image (push) Failing after 1m7s
Security Scanning / Trivy Scan — AI Services Image (push) Failing after 53s
Security Scanning / Trivy Filesystem Scan (push) Failing after 35s
Deploy / Deploy to Staging (push) Has been skipped
Deploy / Smoke Test Staging (push) Has been skipped
Deploy / Deploy to Production (push) Has been skipped
Deploy / Smoke Test Production (push) Has been skipped
Security Scanning / Security Gate (push) Failing after 0s
Deploy / Rollback Staging (push) Has been skipped
Deploy / Rollback Production (push) Has been skipped
docs: dịch 22 file Markdown còn lại sang tiếng Việt có dấu (TEC-2881)
Hoàn tất đợt cuối của nhiệm vụ chuyển toàn bộ tài liệu sang tiếng Việt.
Đã dịch 22 file `.md` còn sót (~9.7k dòng) — gồm RUNBOOK, audits,
docs/architecture, docs/load-testing, libs READMEs và các quick references.
Giữ nguyên code blocks, đường dẫn, identifier kỹ thuật, URL và biến môi trường.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-19 03:26:14 +07:00

14 KiB

GoodGo Platform — Checklist Sẵn Sàng Production

Cập nhật lần cuối: 2026-04-12 Trạng thái: CHƯA SẴN SÀNG — còn 5 blocker quan trọng Mục tiêu launch: TBD (chờ giải quyết blocker) Cần sign-off từ: SRE Engineer, DevOps Engineer, CTO


Tóm Tắt

Hạng mục Pass Fail Blocked Tổng
Hạ tầng 1 3 0 4
Chất lượng ứng dụng 2 1 0 3
Vận hành 3 0 0 3
Bảo mật 0 1 0 1
Hiệu năng 0 0 1 1
Tổng 6 5 1 12

Checklist

1. Kết Quả Load Test (K6 Baseline)

Trường Giá trị
Trạng thái PARTIAL PASS
Owner SRE Engineer
Bằng chứng load-tests/results/BASELINE-REPORT.md
Ngày test 2026-04-09

Phát hiện:

  • Đã hoàn thành chạy baseline K6 v1.7.1 với môi trường dev local
  • 4 bộ test được chạy: Auth, Listings, Search, Payments
  • SLA latency đạt yêu cầu ở mức framework (p50 < 3ms, p95 < 6ms, p99 < 19ms)
  • SLA error rate THẤT BẠI — auth/listings/payments trả về HTTP 500 do vấn đề dependency môi trường dev (Prisma/DB chưa được cấu hình đầy đủ)
  • Bỏ qua test search (Typesense không khả dụng trong dev)

Blocker: Load test phải được chạy lại với môi trường staging có đầy đủ các dependency backend hoạt động (PostgreSQL, Redis, Typesense, sandbox VNPay). Latency ở mức framework đã được validate; hiệu năng business logic thì chưa.

Hành động cần thiết:

  • Provision môi trường staging với tất cả dependency
  • Chạy lại bộ test K6 với staging
  • Validate error rate < 1% trên tất cả critical path
  • Tài liệu hóa kết quả load test tương đương production

2. Sign-off Penetration Test Bảo Mật

Trường Giá trị
Trạng thái FAIL
Owner CTO / DevOps Engineer
Bằng chứng Không có — chưa có báo cáo pen-test chính thức

Phát hiện:

  • Có scanning bảo mật tự động (.github/workflows/security.yml, .github/workflows/codeql.yml)
  • Chưa có penetration test chính thức từ bên thứ ba hoặc thủ công
  • Chưa có tài liệu sign-off bảo mật

Blocker: Launch production yêu cầu đánh giá bảo mật chính thức bao quát OWASP Top 10, các luồng xác thực (JWT, OAuth, CSRF), bảo mật endpoint thanh toán, và ranh giới authorization API.

Hành động cần thiết:

  • Lên lịch penetration test (nội bộ hoặc bên thứ ba)
  • Phạm vi: luồng auth, callback thanh toán (VNPay/MoMo/ZaloPay), endpoint admin, file upload, API geospatial
  • Khắc phục các phát hiện critical/high
  • Lấy báo cáo pen-test có chữ ký và xác nhận khắc phục

3. Cấu Hình Ngưỡng Alert Monitoring

Trường Giá trị
Trạng thái PASS
Owner SRE Engineer
Bằng chứng monitoring/prometheus/alert-rules.yml

Phát hiện:

  • 15+ alert rule Prometheus đã cấu hình trên nhiều nhóm:
    • goodgo_api_latency — cảnh báo latency p99 (>1s), critical SLO breach (>3s), latency theo từng endpoint
    • goodgo_api_errors — alert tỷ lệ lỗi 5xx
    • goodgo_database — cạn kiệt connection pool, latency truy vấn
    • goodgo_infrastructure — disk, memory, CPU, sức khỏe container
  • Mức độ severity alert: warningcritical
  • URL runbook được link trong annotation alert
  • Dashboard Grafana được tham chiếu cho việc điều tra
  • AlertManager đã được tích hợp

Trạng thái: SẴN SÀNG — Ngưỡng alert được định nghĩa rõ ràng và theo best practice.


4. Hoàn Tất Verify Backup/Restore

Trường Giá trị
Trạng thái PASS
Owner SRE Engineer / DevOps Engineer
Bằng chứng docs/backup-restore.md, .github/workflows/backup-verify.yml

Phát hiện:

  • Backup PostgreSQL hằng ngày tự động (02:00 UTC) qua pg_dump định dạng custom
  • Chính sách giữ 7 ngày (có thể cấu hình qua BACKUP_RETENTION_DAYS)
  • Tự động verify backup hằng tuần qua GitHub Actions workflow
  • Mục tiêu RTO: ≤ 30 phút | Mục tiêu RPO: ≤ 24 giờ
  • Quy trình backup/restore thủ công đã được tài liệu hóa
  • Restore đã được test và tài liệu hóa với runbook từng bước

Trạng thái: SẴN SÀNG — Quy trình backup được tự động hóa, đã verify và tài liệu hóa.

Khuyến nghị: Cân nhắc WAL archiving cho point-in-time recovery liên tục để giảm RPO xuống dưới 24 giờ.


5. Đã Review Runbook Phản Ứng Sự Cố

Trường Giá trị
Trạng thái PASS
Owner SRE Engineer
Bằng chứng docs/RUNBOOK.md

Phát hiện:

  • Runbook 41KB toàn diện bao quát:
    • Danh mục dịch vụ và health check
    • 10 kịch bản sự cố thường gặp (cạn DB pool, Redis fail, Typesense không khả dụng, latency cao, lỗi callback thanh toán, alert disk, MinIO fail, AI service mất, lỗi pipeline log, đột biến 5xx)
    • 6 quy trình recovery (restore DB, flush Redis, rolling restart, rollback, reindex Typesense, recovery toàn host)
    • Ma trận escalation
    • Link đến dashboard monitoring
    • Các truy vấn PromQL hữu ích
    • Tham khảo nhanh môi trường
  • Cập nhật lần cuối: 2026-04-11

Trạng thái: SẴN SÀNG — Runbook đầy đủ và cập nhật.


6. Đóng Băng Schema Database (Migration Lockdown)

Trường Giá trị
Trạng thái PASS (có điều kiện)
Owner DevOps Engineer / CTO
Bằng chứng prisma/migrations/ (16 migration), prisma/migrations/migration_lock.toml

Phát hiện:

  • 16 migration Prisma tuần tự đã có
  • Migration mới nhất: 20260411200000_add_mfa_totp_support (2026-04-11)
  • Có file migration lock (migration_lock.toml)
  • 22 model database đã được định nghĩa (User, Property, Listing, Payment, Subscription, v.v.)
  • PostGIS extension đã cấu hình cho truy vấn geospatial

Điều kiện: Schema phải được đóng băng chính thức trước khi launch. Các migration gần đây (4 cái vào 2026-04-10/11) cho thấy schema đang được thay đổi tích cực. Phải khai báo ngày freeze và không chấp nhận migration mới sau ngày đó nếu không có sign-off của CTO.

Hành động cần thiết:

  • Khai báo ngày freeze schema (khuyến nghị: 48 giờ trước launch)
  • Thông báo freeze đến tất cả developer
  • Cần phê duyệt CTO cho mọi thay đổi schema sau freeze

7. CI/CD Pipeline Xanh (Lint, Typecheck, Test, Build)

Trường Giá trị
Trạng thái PASS
Owner DevOps Engineer
Bằng chứng .github/workflows/ (7 workflow)

Phát hiện:

  • ci.yml — Pipeline đầy đủ: lint → typecheck → test → build
  • deploy.yml — Tự động hóa deployment
  • e2e.yml — Bộ test E2E Playwright
  • security.yml — Scan bảo mật tự động
  • codeql.yml — Phân tích GitHub CodeQL
  • load-test.yml — Tự động hóa load test K6
  • backup-verify.yml — Verify backup hằng tuần

Trạng thái: SẴN SÀNG — Pipeline CI/CD toàn diện và bao quát đầy đủ quality gate (lint, typecheck, unit test, build, E2E, security, load test).


8. Kết Quả Test E2E

Trường Giá trị
Trạng thái FAIL
Owner DevOps Engineer / Backend Engineer
Bằng chứng e2e/ (31 file test spec trên api/, web/, load/)

Phát hiện:

  • 31 file test spec E2E bao quát surface API và Web
  • Hạ tầng test: Playwright với global setup/teardown
  • Tổ chức theo domain: api/ (test API backend), web/ (test browser frontend), load/ (test kịch bản tải)
  • 2 test hiện đang fail (theo lần chạy Playwright cuối)
  • Không có file test-results/.last-run.json được lưu lại để phân tích chi tiết lỗi

Blocker: Tất cả test E2E phải pass trước khi launch production.

Hành động cần thiết:

  • Chạy bộ test E2E đầy đủ: pnpm test:e2e
  • Sửa 2 test đang fail
  • Đạt 100% pass rate trên bộ test đầy đủ
  • Lưu trữ kết quả test pass làm bằng chứng

9. Tài Liệu Hóa Benchmark Hiệu Năng

Trường Giá trị
Trạng thái BLOCKED
Owner SRE Engineer
Bằng chứng load-tests/results/BASELINE-REPORT.md (một phần)

Phát hiện:

  • Benchmark latency mức framework đã được tài liệu hóa (p50/p95/p99)
  • Benchmark business logic không khả dụng (auth trả 500, search không khả dụng)
  • Chưa có profile hiệu năng tương đương production
  • Bị chặn vì chưa có môi trường staging

Blocker: Không thể thiết lập benchmark hiệu năng có ý nghĩa nếu không có môi trường staging chạy đầy đủ dependency.

Hành động cần thiết:

  • Provision môi trường staging
  • Chạy bộ test K6 với database, Redis, Typesense thật
  • Tài liệu hóa baseline latency theo từng endpoint (auth, CRUD listing, search, payment)
  • Thiết lập sức chứa throughput (số user đồng thời tối đa mỗi instance)
  • Tài liệu hóa mức sử dụng tài nguyên dưới tải (CPU, memory, connection)

10. Sẵn Sàng Chứng Chỉ SSL/TLS

Trường Giá trị
Trạng thái FAIL
Owner DevOps Engineer
Bằng chứng docs/deployment.md (dòng ~146, mục chưa tích)

Phát hiện:

  • Chưa có reverse proxy (nginx/Caddy/Traefik) cấu hình trong docker-compose.prod.yml
  • Chưa có cấp chứng chỉ SSL/TLS (Let's Encrypt, thủ công, hay cloud-managed)
  • Tài liệu deployment liệt kê SSL/TLS như một mục to-do chưa tích
  • API và web service hiện đang exposed trên HTTP thường

Blocker: Tất cả lưu lượng production phải được mã hóa qua HTTPS.

Hành động cần thiết:

  • Thêm dịch vụ reverse proxy (nginx hoặc Traefik) vào docker-compose.prod.yml
  • Cấu hình tự động gia hạn Let's Encrypt (certbot hoặc Traefik ACME)
  • Bắt buộc redirect HTTPS (HTTP → HTTPS)
  • Cấu hình HSTS header
  • Verify tính hợp lệ của chuỗi chứng chỉ

11. Verify Cấu Hình DNS

Trường Giá trị
Trạng thái FAIL
Owner DevOps Engineer / CTO
Bằng chứng Không có — chưa có cấu hình DNS được tài liệu hóa

Phát hiện:

  • Chưa có domain nào được đăng ký hoặc tài liệu hóa (vd: goodgo.vn, api.goodgo.vn)
  • Không có DNS zone file hay cấu hình trong infra/
  • Không có tài liệu cho cấu hình DNS provider
  • Tài liệu deployment không tham chiếu cấu hình DNS

Blocker: Production yêu cầu domain với DNS record phù hợp.

Hành động cần thiết:

  • Đăng ký domain production (vd: goodgo.vn)
  • Cấu hình DNS A/CNAME record cho web (goodgo.vn) và API (api.goodgo.vn)
  • Cài đặt monitoring/health check cho DNS
  • Tài liệu hóa nhà cung cấp DNS và cấu hình record trong docs/
  • Cấu hình giá trị TTL phù hợp

12. Cài Đặt CDN Cho Static Asset

Trường Giá trị
Trạng thái FAIL
Owner DevOps Engineer
Bằng chứng docs/deployment.md (dòng ~167, mục chưa tích)

Phát hiện:

  • Chưa cấu hình CDN (Cloudflare, CloudFront hay tương tự)
  • Static asset của Next.js phục vụ trực tiếp từ origin
  • Không có edge caching cho ảnh, JS bundle hay CSS
  • Tài liệu deployment liệt kê CDN như một mục to-do chưa tích

Blocker: CDN cải thiện trải nghiệm người dùng Việt Nam (latency, tính sẵn sàng) và bảo vệ origin khỏi DDoS.

Hành động cần thiết:

  • Chọn nhà cung cấp CDN (khuyến nghị Cloudflare để dễ; CloudFront nếu trên AWS)
  • Cấu hình CDN cho static asset Next.js (_next/static/)
  • Đặt cache header cho asset bất biến
  • Cấu hình CDN cho tối ưu hình ảnh (ảnh bất động sản)
  • Cài đặt rule bảo vệ DDoS

Tóm Tắt Blocker Quan Trọng

# Blocker Owner Ưu tiên Phụ thuộc
B1 Chưa có penetration test bảo mật CTO / DevOps P0 — Critical Sắp lịch bên ngoài
B2 2 test E2E đang fail DevOps / Backend P0 — Critical Cần fix code
B3 Chưa cấu hình SSL/TLS DevOps P0 — Critical Cần setup reverse proxy
B4 Chưa cấu hình DNS DevOps / CTO P0 — Critical Cần đăng ký domain
B5 Benchmark hiệu năng bị chặn vì staging SRE P1 — High Cần môi trường staging
B6 Chưa setup CDN DevOps P1 — High Cần quyết định nhà cung cấp CDN

Sign-off

Launch production yêu cầu sign-off từ tất cả vai trò được liệt kê sau khi tất cả mục checklist pass.

Vai trò Tên Trạng thái Ngày Chữ ký
SRE Engineer Pending
DevOps Engineer Pending
CTO Pending

Lịch Sử Sửa Đổi

Ngày Tác giả Thay đổi
2026-04-12 SRE Engineer Tạo checklist ban đầu, đánh giá 12 mục