DevSecOps thực chiến cho website doanh nghiệp: CI/CD, GitOps, Kubernetes và Monitoring
Cách FlowNexa triển khai website Next.js và Strapi CMS lên Kubernetes bằng CI/CD, security scan, GitOps deployment branch, monitoring, backup và restore drill.

Khi một website doanh nghiệp bước vào production, câu hỏi không còn đơn giản là “làm sao để deploy được?”. Câu hỏi quan trọng hơn là: làm sao để deploy an toàn, có kiểm soát, có thể rollback, có kiểm thử, có security gate và có khả năng vận hành ổn định lâu dài?
Đó là lý do FlowNexa xây dựng website theo hướng DevSecOps và GitOps ngay từ đầu. Thay vì deploy thủ công từ máy cá nhân hoặc chỉnh sửa trực tiếp trên server, toàn bộ thay đổi đi qua pipeline kiểm thử, build image, scan bảo mật, cập nhật manifest và triển khai có kiểm soát lên Kubernetes.
FlowNexa hiện vận hành public website bằng Next.js, CMS bằng Strapi, triển khai trên Kubernetes cho cả staging và production. Bên cạnh CI/CD, hệ thống còn có monitoring, backup, restore drill và dashboard theo dõi tài nguyên production.

Production readiness
Vì sao website production cần hơn một lệnh deploy?
Khi website có CMS, nhiều môi trường, SEO, backup, monitoring và production traffic thật, rủi ro sẽ tăng lên rất nhanh nếu vẫn deploy thủ công.
Vấn đề thường gặp
Những rủi ro khi chỉ có một lệnh deploy
Không biết version đang chạy
Production không còn trace được chính xác image hoặc commit nào đang live.
Không có security scan
Release đi thẳng lên môi trường thật mà không qua quality gate hoặc vulnerability scan.
Staging và production lệch cấu hình
Hai môi trường drift dần theo thời gian, rehearsal không còn ý nghĩa.
Rollback khó
Image hoặc manifest không được version hóa rõ ràng khi cần quay lại bản ổn định.
Phụ thuộc người thao tác
Deploy phụ thuộc vào kinh nghiệm cá nhân thay vì quy trình có kiểm soát.
Thiếu verify sau deploy
Không có quy trình kiểm tra backup, restore và monitoring sau mỗi release.
FlowNexa giải quyết bài toán này bằng một quy trình DevSecOps theo hướng automation-first, secure-by-default và GitOps-ready.
Kiến trúc
Kiến trúc tổng quan
Public website Next.js, CMS Strapi, PostgreSQL, persistent volume cho media uploads, staging và production tách riêng trên Kubernetes.
Developer ↓ Pull Request / Merge to main ↓ GitHub Actions CI ↓ Verify web + Verify CMS ↓ SonarQube quality gate + security scan ↓ Build Docker images ↓ Trivy image vulnerability scan ↓ Push image với immutable tag ↓ Update Kubernetes manifests ↓ GitOps deployment branch ↓ Staging / Production Kubernetes ↓ Prometheus + Grafana monitoring ↓ Backup / Restore drill / Alerting
CI pipeline
CI trên main branch: kiểm tra trước khi build image
Image chỉ được build và publish sau khi cả web và CMS đều vượt qua verify job.
Verify web
Pipeline kiểm tra ứng dụng Next.js
Checkout repository
Lấy source code từ main branch.
Setup Node.js
Chuẩn hóa runtime cho bước verify.
Install dependencies
Cài đặt dependencies trước khi chạy kiểm tra.
Verify web application
Lint, typecheck, test và build cho web app.
SonarQube Cloud scan
Quality gate và security scan trước khi build image.

Với CMS, pipeline chạy verify riêng cho Strapi CMS. Điều quan trọng là image chỉ được build và publish sau khi cả web và CMS đều vượt qua verify job. Cách làm này giúp giảm khả năng đẩy một image lỗi lên registry và biến pipeline thành lớp kiểm soát đầu tiên trước khi release.
DevSecOps gate
Security và quality nằm trong pipeline
SonarQube Cloud kiểm tra quality gate, coverage, security, reliability, maintainability, duplications và security hotspots.

Nguyên tắc vận hành
Nếu quality gate hoặc security scan fail, pipeline phải dừng. Sau bước verify source code, Docker image tiếp tục được scan bằng Trivy. Các vulnerability mức HIGH hoặc CRITICAL cần được xử lý trước khi image được dùng cho production.
Immutable tags
Build image với immutable tag
FlowNexa sử dụng image tag theo commit short SHA, ví dụ flownexa-web:<short-sha> và flownexa-cms:<short-sha>.
Lợi ích
Vì sao không nên dùng tag latest cho production
Trace chính xác
Biết version nào đang chạy trên staging hoặc production.
Liên kết với commit
Dễ trace từ production image về commit gốc.
Rollback nhanh
Quay lại image tag cũ khi có sự cố production.
Tránh nhầm lẫn
Không bị ghi đè do tag latest thay đổi liên tục.
Minh bạch release
Tăng tính minh bạch trong quá trình triển khai.
GitOps
GitOps deployment branch: tách source code và trạng thái triển khai
main branch cho source code và CI; deployment branch cho Kubernetes manifests và image tag đang được triển khai.
main branch ↓ CI verify + security scan ↓ Build and push image ↓ Update deployment branch ↓ GitOps controller sync ↓ Kubernetes rollout GitOps không chỉ là dùng Argo CD hay Flux. Giá trị lớn nhất của GitOps là mọi thay đổi production đều có lịch sử, có review, có version và có rollback path rõ ràng.
Staging
Staging là production rehearsal
Staging không chỉ để xem thử giao diện mà là nơi kiểm tra toàn bộ release flow trước khi go-live.
Checklist staging
Các bước quan trọng trên staging
Deploy image mới
Triển khai image đã qua verify và scan.
Verify web và CMS
Kiểm tra rendering, API và nội dung.
Kiểm tra media CMS
Upload/delete media trong CMS và xác nhận hiển thị trên website.
Backup và restore drill
Chạy drill cho database và uploads trước production.
Capture UI/UX
Chụp nhiều viewport, theme và ngôn ngữ để phát hiện lỗi layout.
Kiểm tra lỗi runtime
Console error, network error, missing asset và layout overflow.
Kubernetes
Production readiness trên Kubernetes
Một hệ thống production-ready cần nhiều hơn một deployment thành công.
Vận hành
Các yếu tố vận hành quan trọng với FlowNexa
Web HPA
Web app chạy nhiều replica và có thể scale bằng HPA.
CMS một replica
CMS giữ một replica do media uploads dùng persistent volume RWO.
PostgreSQL PVC
Database metadata có persistent volume riêng.
Uploads PVC
CMS uploads có persistent volume riêng, tách khỏi database.
Dual backup
Backup cho cả database và uploads, volume backup tách riêng.
Verify và monitoring
Script verify production sau deploy, monitoring và alerting.
Kiến trúc vận hành được
Không phải lúc nào scale nhiều replica cũng đúng nếu storage backend chưa phù hợp. Khi media uploads còn trên local PVC, scale CMS nhiều replica có thể tạo rủi ro về tính nhất quán file.
Monitoring
Monitoring sau deploy: phần thường bị bỏ quên trong CI/CD
Sau khi deploy, câu hỏi quan trọng hơn là: hệ thống có đang chạy ổn không?

Runtime metrics
Các nhóm chỉ số cần theo dõi
CPU và memory
Utilization, requests và limits theo namespace.
Workload và pod
Pod đang chạy, workload tiêu thụ tài nguyên bất thường.
Xu hướng sau deploy
Phát hiện spike CPU/memory sau release mới.
Resource configuration
Đánh giá requests/limits có hợp lý hay không.
Storage monitoring
Monitoring storage: database, uploads và backup
Với website có CMS, monitoring CPU/RAM là chưa đủ.

PVC dashboard
Dashboard PVC giúp đội vận hành biết
Mount mapping
PVC nào đang được mount bởi pod nào.
Requested capacity
Dung lượng requested của từng PVC.
StorageClass
StorageClass và mode đang sử dụng.
Usage percentage
Volume usage theo phần trăm để phát hiện sớm rủi ro đầy disk.
Backup volume
Backup volume có tồn tại và được dùng đúng mục đích.
Nguyên tắc backup
Backup chưa từng restore thử thì chưa thể xem là backup đáng tin cậy. Restore drill giúp phát hiện sớm backup file không đầy đủ, permission sai, volume mount sai, script restore lỗi hoặc thiếu uploads media.
Từ triển khai FlowNexa
Bài học thực tế
DevSecOps là vòng đời
Không chỉ thêm một tool scan mà đưa security, quality và automation vào toàn bộ SDLC.
GitOps là quản lý trạng thái
Mọi thay đổi production có lịch sử, review và rollback path rõ ràng.
Monitoring trả lời câu hỏi vận hành
Hệ thống có ổn không, storage có đầy không, backup có chạy không.
Production readiness là vòng đời
Kiểm thử, triển khai, quan sát, backup, restore, cải tiến liên tục.
Kết luận
Website doanh nghiệp cần production-ready, không chỉ deploy được
CI verify, SonarQube, Trivy scan, immutable tag, GitOps branch, Kubernetes staging/production, Grafana monitoring, PVC tracking, backup và restore drill.
FlowNexa hỗ trợ doanh nghiệp thiết kế và triển khai hệ thống web, CMS và SaaS theo hướng cloud-native, automation-first và secure-by-default. Chúng tôi có thể hỗ trợ thiết kế CI/CD pipeline, container hóa ứng dụng, triển khai Kubernetes, thiết kế GitOps workflow, tích hợp security scan, thiết lập monitoring/logging/alerting, xây dựng backup/restore strategy và chuẩn hóa quy trình release/rollback.
Nếu doanh nghiệp của bạn đang muốn nâng cấp từ deploy thủ công sang một quy trình production-ready hơn, DevSecOps và GitOps là một bước đi rất đáng đầu tư.

