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
- Đăng nhập để gửi ý kiến