Website được thiết kế tối ưu cho thành viên chính thức. Hãy Đăng nhập hoặc Đăng ký để truy cập đầy đủ nội dung và chức năng. Nội dung bạn cần không thấy trên website, có thể do bạn chưa đăng nhập. Nếu là thành viên của website, bạn cũng có thể yêu cầu trong nhóm Zalo "CNTT" các nội dung bạn quan tâm.

4. Phân biệt môi trường: Dev – Test – Staging – Live

ICT

1. Vì sao phải phân biệt rõ các môi trường?

Một trong những nguyên nhân phổ biến gây sự cố nghiêm trọng trên hệ thống Web Server là:

Triển khai, thử nghiệm và chỉnh sửa trực tiếp trên môi trường đang phục vụ người dùng.

Hệ quả thường thấy:

  • Website đang chạy bị lỗi ngay khi chỉnh sửa

  • Khó truy vết nguyên nhân sự cố

  • Không có khả năng quay lui (rollback)

  • Áp lực vận hành dồn lên cá nhân trực hệ thống

Phân biệt môi trường không phải là xa xỉ, mà là yêu cầu tối thiểu để hệ thống:

  • Ổn định

  • An toàn

  • Có thể phát triển lâu dài


2. Các môi trường cơ bản trong triển khai Web Server

Trong loạt bài này, chúng ta sử dụng 4 môi trường cơ bản:

  • Dev (Development)

  • Test

  • Staging

  • Live (Production)

Mỗi môi trường có mục đích khác nhau, mức độ rủi ro khác nhau, và quy tắc can thiệp khác nhau.


3. Môi trường Dev – Phát triển và thử nghiệm ban đầu

3.1. Mục đích của môi trường Dev

Dev là nơi:

  • Viết code

  • Thử cấu hình

  • Cài đặt thử nghiệm

  • Sai cũng được, hỏng cũng được

Đây là môi trường chấp nhận rủi ro cao nhất.

Có thể dùng ngay thiết bị làm việc cá nhân. Hiện tại thiết bị cá nhân đều rất mạnh có thể thử các tác vụ nặng.

Triển khai máy chủ riêng để Dev có thể không cần thiết. Chúng ta cũng có thể dùng Docker trên máy cá nhân cho các việc này.

3.2. Đặc điểm của môi trường Dev

  • Có thể chạy trên:

    • Máy cá nhân

    • VM

    • Docker

  • Không yêu cầu:

    • Bảo mật cao

    • Tối ưu hiệu năng

  • Cho phép:

    • Debug

    • Log chi tiết

    • Thử nghiệm tự do

3.3. Nguyên tắc quan trọng

Không dùng Dev để đánh giá độ ổn định của hệ thống.

 


4. Môi trường Test – Kiểm thử chức năng

4.1. Vai trò của môi trường Test

Test dùng để:

  • Kiểm tra chức năng

  • Kiểm tra luồng nghiệp vụ

  • Kiểm tra lỗi logic

Môi trường này giúp trả lời câu hỏi:

Hệ thống có chạy đúng như mong đợi không?

4.2. Đặc điểm của môi trường Test

  • Có thể khác cấu hình so với Live

  • Dữ liệu:

    • Có thể là dữ liệu giả

    • Hoặc dữ liệu copy đã được làm sạch

  • Không phục vụ người dùng thật

4.3. Lưu ý

  • Không đánh giá hiệu năng trên môi trường Test

  • Không dùng Test làm “bản sao” chính xác của Live

Nếu Dev test luôn có thể dùng luôn môi trường Dev.

Nếu test là người khác, bên ngoài (nhưng vẫn là người tin cậy) có thể cài riêng trên Live nếu bạn đã rõ về mã nguồn. Hoặc cài trên máy chủ riêng nếu cần ổn định tối đa.

 


5. Môi trường Staging – Bản sao gần nhất của Live

5.1. Vì sao Staging rất quan trọng?

Staging là môi trường:

  • Kiểm tra trước khi đưa lên Live

  • Mô phỏng gần nhất điều kiện production

Nếu không có Staging:

  • Mọi thay đổi đều trở thành can thiệp trực tiếp vào Live

  • Rủi ro tăng theo cấp số nhân

5.2. Đặc điểm của môi trường Staging

  • Cấu hình:

    • Giống Live tối đa

    • Cùng Web Server, PHP, DB version

  • Có thể dùng:

    • Domain phụ (staging.domain.com)

  • Có thể sử dụng dữ liệu:

    • Sao chép từ Live (đã xử lý thông tin nhạy cảm)

5.3. Staging dùng để làm gì?

  • Test cập nhật hệ điều hành

  • Test cấu hình Nginx

  • Test nâng cấp PHP, CMS

  • Test backup và restore

Nguyên tắc:

Mọi thứ chưa chạy ổn trên Staging thì không được lên Live.

Có thể dùng chung với máy chủ dev/test miễn là tạo đúng môi trường của Live

 


6. Môi trường Live – Production

6.1. Vai trò của môi trường Live

Live là môi trường:

  • Phục vụ người dùng thật

  • Yêu cầu ổn định cao nhất

  • Không chấp nhận thử nghiệm

6.2. Quy tắc bắt buộc với môi trường Live

  • Không thử nghiệm

  • Không debug trực tiếp

  • Không chỉnh sửa khi chưa có kế hoạch

  • Mọi thay đổi phải:

    • Đã test ở Staging

    • Có phương án rollback

6.3. Nguyên tắc vàng

Live không phải nơi để học, mà là nơi để vận hành.

 


7. Áp dụng phân biệt môi trường trong điều kiện hạn chế

Trong thực tế, không phải đơn vị nào cũng có đủ:

  • Server

  • Nhân sự

  • Ngân sách

Giải pháp khả thi:

  • Dev: máy cá nhân / VM

  • Test + Staging: gộp trên một server phụ

  • Live: server chính

Quan trọng không phải là số lượng server, mà là:

Tư duy tách biệt môi trường.

Có thể gộp Test + Staging + Backup. Trong đó Backup cho Live đưa vào docker. Khi Live gặp sự cố tự động chạy trong Backup. Rất thích hợp cho các web ít tương tác với user (user chỉ đọc).

 


8. Liên hệ trực tiếp với loạt bài triển khai

Từ các bài tiếp theo:

  • Mọi cấu hình sẽ được phân biệt rõ:

    • Cấu hình thử nghiệm

    • Cấu hình production

  • Mọi thao tác trên Live sẽ được:

    • Giải thích rủi ro

    • Đề xuất phương án an toàn

Việc phân biệt môi trường giúp:

  • Triển khai có kiểm soát

  • Giảm rủi ro sự cố

  • Dễ mở rộng và bảo trì


9. Bài tiếp theo

Trong Bài 5, chúng ta sẽ bước sang phần chuẩn bị hạ tầng:

Chuẩn bị phần cứng và hạ tầng mạng cho Web Server

Đây là nền móng quyết định:

  • Độ ổn định

  • Khả năng mở rộng

  • Hiệu năng thực tế của toàn bộ hệ thống