Môi trường staging (stage) là một bản sao gần chính xác của môi trường sản xuất để kiểm thử phần mềm. Môi trường staging được tạo ra để kiểm tra code, các bản build và cập nhật, nhằm đảm bảo chất lượng trong môi trường giống như sản xuất trước khi triển khai ứng dụng.
Môi trường staging yêu cầu một bản sao của cùng cấu hình phần cứng, máy chủ, cơ sở dữ liệu và bộ nhớ cache. Mọi thứ trong môi trường staging phải càng giống với bản sao trong môi trường sản xuất càng tốt, để đảm bảo phần mềm hoạt động chính xác.
Tìm hiểu về môi trường staging
Tầm quan trọng của môi trường staging
Các bước để triển khai phần mềm bao gồm phát triển, tích hợp, thử nghiệm và QA (đảm bảo chất lượng), staging (kiểm thử), sản xuất. Việc tìm ra lỗi phần mềm đóng vai trò rất quan trọng đối với hiệu suất. Môi trường staging thử nghiệm ở mức độ gần giống như quy trình sản xuất thực, trong môi trường phi sản xuất và có thể khiến người dùng tự tin hơn nữa về việc sử dụng phần mềm khi sản xuất.
Môi trường staging tiến hành các thử nghiệm ngăn chặn nhiều vấn đề trong sản xuất, gây ra hiệu suất kém cho người dùng cuối. Một khi ứng dụng được triển khai vào môi trường sản xuất, càng có ít thứ phải sửa chữa càng tốt.
Các thử nghiệm trong staging
Smoke Testing (phân tích phần mềm chưa hoàn chỉnh, xác định rằng các chức năng quan trọng nhất của chương trình hoạt động nhưng không đi sâu vào chi tiết) và User Acceptance Testing (UAT - một giai đoạn phát triển phần mềm, trong đó phần mềm được thử nghiệm trong "thế giới thực" bởi đối tượng dự định) có thể được thực hiện trong môi trường staging. Smoke Testing kiểm tra các chức năng dịch vụ thiết yếu và UAT được thực hiện từ góc độ của người dùng cuối.
Ví dụ, nếu bản build mới trải qua quá trình phát triển và tích hợp, smoke testing có thể xác nhận các chức năng chính vẫn hoạt động bình thường và thử nghiệm UAT có thể đảm bảo chất lượng từ quan điểm của người dùng. Các thử nghiệm được thực hiện trong môi trường staging vì nếu có một lỗ hổng lớn và hệ thống bị hỏng, môi trường sản xuất sẽ không phải ngừng hoạt động.
Ngoài ra, các thử nghiệm chaos engineering (quá trình kiểm tra một hệ thống máy tính phân tán để đảm bảo rằng hệ thống có thể chịu được sự gián đoạn bất ngờ trong chức năng) cũng có thể được thực hiện trong môi trường staging. Chaos engineering củng cố niềm tin vào hệ thống, bằng cách liên tục cố gắng tấn công code. Chaos engineering thường được thực hiện trong sản xuất. Tuy nhiên, có thể bắt đầu chaos engineering trong môi trường staging, trước khi thử nghiệm trong sản xuất. Chaos engineering có thể giúp xác định sớm hơn các vấn đề tiềm năng, có khả năng xảy ra đối với phần mềm trong một hệ thống sản xuất.
Môi trường staging có thể dễ dàng tạo ra trong điện toán đám mây, được triển khai vào môi trường sản xuất. Điều này có thể giúp tự động quy trình Continuous Delivery (một cách tiếp cận để phát hành phần mềm, trong đó các nhóm phát triển tạo và kiểm tra code trong các chu kỳ ngắn).
Những hạn chế của môi trường staging
Mặc dù môi trường staging cung cấp thêm sự đảm bảo về chất lượng trong một hệ thống, nhưng nó vẫn có những hạn chế. Cho dù môi trường staging tái tạo môi trường sản xuất tốt đến đâu, vẫn có những kịch bản nó không thể bắt chước. Ví dụ, có thể cực kỳ khó khăn hoặc không thực tế nếu muốn sao chép lưu lượng truy cập cao để kiểm tra ứng dụng trong một điều kiện nhất định.
Nếu môi trường staging được xây dựng không chính xác hoặc được tận dụng kém, thì có thể gây ra nhiều vấn đề hơn. Nếu cấu hình của cả hai môi trường staging và sản xuất không khớp nhau, dữ liệu thu thập từ các thử nghiệm được nhân rộng sẽ không chính xác. Những khiếm khuyết chưa phát hiện có khả năng được đưa vào môi trường sản xuất. Ví dụ, code phải được lưu trữ theo cùng một cách trong cả môi trường staging cũng như trong môi trường sản xuất. Nếu điều đó không được đảm bảo, kết quả kiểm tra độ trễ (latency) có thể khác nhau.
Thử nghiệm ở môi trường staging trong một thời gian hạn chế có thể tạo ra các vấn đề khác. Những sự cố như data corruption hoặc rò rỉ bộ nhớ cần nhiều thời gian hơn để hiển thị.
Lựa chọn thay thế cho staging
Một số công ty chọn bỏ qua hoàn toàn giai đoạn staging. Một lượng lớn dữ liệu có thể được lấy từ môi trường sản xuất, bao gồm cả những thông tin không thể có được thông qua việc staging, chẳng hạn như lượng lưu lượng. Nếu sử dụng dữ liệu từ môi trường sản xuất để tạo và duy trì các thay đổi, bạn có thể tiết kiệm thời gian so với sao chép, quản lý và thu thập dữ liệu từ môi trường staging.
Làm việc trong môi trường sản xuất luôn nhanh chóng hơn. Môi trường staging có nhiều yêu cầu bảo trì hơn, vì các bản build và sửa lỗi mới được tạo thường xuyên và chúng sẽ phải được thực hiện trong staging trước, sau đó mới áp dụng trong sản xuất. Tuy nhiên, lựa chọn bỏ qua giai đoạn staging đồng nghĩa với việc độ tin cậy của hệ thống ít được đảm bảo hơn và có khả năng đưa các vấn đề lớn vào môi trường sản xuất.