Environment
Các bản cài đặt riêng biệt của cùng một hệ thống dùng cho từng mục đích: DEV để lập trình, SIT để ghép nối, UAT để khách nghiệm thu, PROD là hệ thống thật đang chạy.
Định nghĩa
Cùng một phần mềm, nhiều bản chạy song song, mỗi bản một mục đích và một bộ dữ liệu riêng. Dev nghịch bản của họ, QC test bản khác, khách nghiệm thu bản thứ ba, người dùng thật dùng bản cuối. Hiểu chuỗi này là hiểu được vì sao câu "bên em test thấy ổn mà" có thể đúng mà vẫn chẳng nói lên điều gì.
Mỗi môi trường là một bản cài riêng của hệ thống, có dữ liệu riêng và cấu hình riêng, phục vụ một loại công việc.
Chuỗi môi trường
| Môi trường | Dùng để | Dữ liệu | Ai vào |
|---|---|---|---|
| DEV | Lập trình, thử nghiệm nhanh | Dữ liệu rác, tạo bừa, xóa thoải mái | Dev |
| SIT | Ghép nối các hệ thống, test tích hợp | Dữ liệu tự tạo có chủ đích, kết nối sandbox | QC, dev, BA |
| UAT | Khách nghiệm thu theo nghiệp vụ thật | Bản sao dữ liệu thật đã che thông tin nhạy cảm | Người dùng nghiệp vụ, BA |
| STAGING / PREPROD | Diễn tập phát hành, đo hiệu năng | Giống PROD nhất có thể | Đội kỹ thuật, một số ít người |
| PROD | Chạy thật, phục vụ người dùng | Dữ liệu thật | Người dùng cuối, đội vận hành |
Ít dự án đủ năm cái. Nhỏ thì gộp SIT với UAT, hoặc bỏ staging — tiết kiệm hạ tầng, đổi lại QC và khách giẫm chân nhau: khách đang nghiệm thu thì dev deploy bản mới, dữ liệu dở dang bị reset.
Vì sao cấm test trên PROD
Nghe hiển nhiên, nhưng vẫn xảy ra đều đặn với lý do "chỉ xem thôi, không bấm gì".
- Dữ liệu test lẫn vào dữ liệu thật. Đơn hàng tên "test abc" nằm trong báo cáo doanh thu, kế toán lôi ra hỏi cuối tháng.
- Kích hoạt tác dụng phụ thật: gửi email, gửi SMS, gọi API đối tác, trừ tồn kho, sinh bút toán.
- Thao tác sai gây sự cố ngay trong giờ làm việc, ảnh hưởng người dùng thật.
Nặng nhất là chạm vào dữ liệu cá nhân của khách. Từ 01/01/2026, khi Luật Bảo vệ dữ liệu cá nhân có hiệu lực, chuyện đó thôi không còn là nội quy nội bộ.
Ngoại lệ hợp lệ duy nhất là bộ smoke sau deploy: kịch bản viết sẵn, tài khoản chuyên dụng, có bước dọn dữ liệu vừa tạo.
Che dữ liệu khi copy xuống UAT
UAT cần dữ liệu giống thật thì khách mới test có ý nghĩa. Bê nguyên bản sao PROD xuống thì lại là mở toang thông tin cá nhân ở một môi trường kiểm soát lỏng hơn hẳn.
Data masking là bước xử lý ở giữa: giữ nguyên cấu trúc và tính hợp lệ của dữ liệu, thay giá trị nhạy cảm bằng giá trị giả.
- Số điện thoại, email, số căn cước, số thẻ, địa chỉ nhà: thay bằng giá trị giả nhưng vẫn đúng định dạng — và sinh theo một dấu hiệu nhận biết được, ví dụ mọi số giả đều bắt đầu bằng
0999. Thiếu dấu hiệu đó thì về sau không có cách nào đếm chỗ còn sót. - Tên khách hàng: thay bằng tên ngẫu nhiên. Giữ độ dài và dấu tiếng Việt để còn test được hiển thị.
- Số tiền và ngày giao dịch: thường giữ nguyên vì nghiệp vụ cần, trừ khi hợp đồng yêu cầu khác.
- Giữ tính nhất quán: cùng một khách hàng ở ba bảng phải được thay thành cùng một giá trị giả, nếu không thì báo cáo đối chiếu sẽ sai.
Nhớ tắt các kênh gửi ra ngoài trước khi bật UAT: email, SMS, thông báo đẩy, webhook tới đối tác. Đã có khách hàng thật nhận tin nhắn xác nhận đơn hàng test lúc 2h sáng.
Ví dụ thực tế
Bảng lịch sử tin nhắn bị bỏ sót. Script che dữ liệu chạy qua bảng khách hàng, bảng phiếu bảo hành, bảng liên hệ — riêng bảng tin nhắn không nằm trong danh sách, và nó còn nguyên số điện thoại thật.
Dự án quản lý bảo hành cho một hãng điện máy: trước mỗi đợt UAT, đội copy 176.000 phiếu từ PROD xuống rồi chạy script che số điện thoại và tên khách, mất khoảng 40 phút. Chỗ sót lộ ra nhờ một dòng trong checklist — với điều kiện dòng đó viết đúng.
Câu truy vấn ấy đếm số bản ghi có số điện thoại không bắt đầu bằng 0999 — chạy được là nhờ quy ước đầu số giả ở trên. Kết quả trả về hơn 5.000 dòng, thế là biết còn sót. Đếm theo kiểu "còn khớp định dạng số điện thoại VN" thì vô dụng: giá trị đã che cũng đúng định dạng, nên chốt kiểm đó lúc nào cũng xanh. Chắc hơn nữa là đối chiếu ngược sang danh sách số thật bên PROD rồi đếm số dòng còn trùng.
Chốt kiểm đó mất một phút. Cái nó chặn là buổi bạn ngồi giải trình với phòng pháp chế xem 5.000 số điện thoại thật đã nằm trên UAT bao lâu và những ai từng đăng nhập vào đó.
