Môi trường của PreProd và Prod tương tự như thế nào?


10

Gần đây tôi đã tham gia một dự án và trong quá trình phát hành, chúng tôi nhận ra rằng nó không hoạt động trong Sản xuất. Nó hoạt động trong tất cả các môi trường khác nhưng vì chúng tôi có một nhóm phát hành riêng biệt và chúng tôi không thể tự thiết lập máy chủ và môi trường, chúng tôi không thể nhìn thấy cấu hình trên chúng.

Chúng tôi nghi ngờ rằng Prod có một số quyền của người dùng trong cài đặt tài khoản hoặc IIS khác nhau, vì vậy chúng tôi đang làm việc mặc dù hiện tại.

Vì vậy, tôi nghĩ rằng toàn bộ điều này đã là một kinh nghiệm học tập cho tôi và tôi không muốn điều tương tự lặp lại một lần nữa. Tôi muốn hỏi, những môi trường này nên khác nhau như thế nào? Tôi luôn nghĩ rằng PreProd phải là một bản sao giống hệt với môi trường Prod bằng cách sử dụng một bản sao của cùng một cơ sở dữ liệu, sử dụng một bản sao của cùng một tài khoản người dùng, nên được cài đặt trên cùng một máy chủ, v.v.

Nhưng tôi nên đi bao xa? Nếu trang web phải đối mặt với bên ngoài, PreProd có nên đối mặt với bên ngoài không? Điều gì xảy ra nếu trang web có các thành phần không yêu cầu tài khoản người dùng hoặc mật khẩu để điều hướng đến? Nó vẫn ổn để tiếp xúc với thế giới bên ngoài?


Ở mọi nơi tôi đã làm việc Pre-Prod là một bản sao trực tiếp của Sản xuất, ngoại trừ cơ sở dữ liệu sẽ là một tuần tuổi.
Nickz

@Nick: Tôi không có nghĩa chỉ là cơ sở mã, ý tôi là giống như toàn bộ thiết lập của toàn bộ môi trường.
RoboShop

Câu trả lời:


6

Bạn chắc chắn nên thử nghiệm trên một môi trường giống hệt với máy chủ sản xuất của bạn càng xa càng tốt. Nếu bạn không thì bạn sẽ không kiểm tra những gì khách hàng của bạn sẽ sử dụng. Nếu không có gì khác bạn cần một môi trường như vậy để kiểm tra bất kỳ báo cáo lỗi.

Rõ ràng sẽ có những điều bạn sẽ không muốn giống hệt nhau - các liên kết đến hệ thống thanh toán xuất hiện trong đầu, nhưng những điều này nên bị chế giễu như thể chúng là thực tế . Cũng có những thứ bạn không thể sao chép - quy mô của hệ thống.

Bạn có thể muốn kiểm tra thông qua một URL bên ngoài - một lần nữa bạn đang kiểm tra những gì người dùng của bạn sẽ thấy. Ngoài ra kiểm tra thông qua một URL bên ngoài sẽ sử dụng mạng theo cách khác với việc sử dụng nội bộ của hệ thống. Quyền (ví dụ) sẽ đóng vai trò như băng thông, tường lửa, v.v. Tất cả những người dùng sẽ phải đối mặt nhưng bạn sẽ bỏ qua nếu bạn truy cập trực tiếp vào hệ thống.

Tôi không thấy vấn đề với các thành phần không yêu cầu tài khoản và mật khẩu. Nếu nó không cần mật khẩu thì nó không quan trọng / nhạy cảm, nếu nó nhạy cảm thì tại sao nó không có mật khẩu?


Wow, đó là một câu trả lời ngớ ngẩn. Vậy trong môi trường thử nghiệm của bạn, nếu bạn mua hàng, có nên tính phí thẻ tín dụng và vận chuyển những gì bạn đã mua? Nếu môi trường prod bao gồm 150 máy chủ, env thử nghiệm cũng vậy? Tôi đã có thể nói "rõ ràng" phải có sự khác biệt giữa prod và test, nhưng điều đó không rõ ràng với ChrisF.
Malvolio

@Malvolio - không. Tôi không có ý đó. Tôi đã suy nghĩ nhiều hơn về những điểm được nêu trong câu hỏi với quyền, kết nối, v.v.
ChrisF

11

Tôi nghĩ rằng cách thực hành tốt nhất cho việc này là cách tiếp cận Triển khai Xanh Xanh, do Jez Humble và David Farley đưa ra trong cuốn sách Giao hàng liên tục của họ và được Martin Fowler mô tả trong bài đăng trên blog của ông Blue Green Deployment .

Tiền đề rất đơn giản. Từ bài của Martin Fowler:

Triển khai xanh xanh

Cách tiếp cận triển khai màu xanh lam ... [đảm bảo] bạn có hai môi trường sản xuất, giống hệt nhau nhất có thể. Bất cứ lúc nào một trong số họ, hãy nói màu xanh chẳng hạn, là trực tiếp. Khi bạn chuẩn bị phát hành phần mềm mới, bạn sẽ thực hiện giai đoạn thử nghiệm cuối cùng trong môi trường xanh. Khi phần mềm đang hoạt động trong môi trường xanh, bạn chuyển đổi bộ định tuyến để tất cả các yêu cầu đến chuyển sang môi trường xanh - hiện tại màu xanh không hoạt động.

Việc triển khai màu xanh lam cũng cung cấp cho bạn một cách nhanh chóng để khôi phục - nếu có sự cố xảy ra, bạn chuyển bộ định tuyến trở lại môi trường màu xanh của mình.

Cách tiếp cận này sẽ giải quyết vấn đề của bạn về việc không có môi trường tiền sản xuất và sản xuất giống hệt nhau, cũng như tối ưu hóa chiến lược triển khai của bạn.


1+ cho sơ đồ thú vị
Nickz

mmm không chắc chắn về việc giữ cơ sở dữ liệu đồng bộ. Điều đó thật khó khăn. Điều gì xảy ra nếu giao dịch đến qua máy chủ preprod của bạn? Điều đó sẽ được phản ánh trong db sản xuất?
RoboShop

Được viết, đó là rất tốn kém. Bạn phải sao chép tất cả các phần cứng cần thiết cho sản xuất trực tiếp chỉ để thử nghiệm. Nhưng có, sơ đồ mát mẻ.
Malvolio

1
KỸ THUẬT, n. Tại một tòa án ở Anh, một người đàn ông tên Home đã bị xét xử vì tội vu khống khi buộc tội người hàng xóm giết người. Câu nói chính xác của ông là: "Ngài Thomas Holt đã lấy một con dao và vung đầu bếp lên đầu, để một bên đầu rơi xuống một bên vai và bên kia trên vai kia." Bị cáo được tha bổng theo chỉ thị của tòa án, các thẩm phán uyên bác cho rằng những lời đó không buộc tội giết người, vì họ không khẳng định cái chết của đầu bếp, đó chỉ là một suy luận. - Ambrose Bierce
Malvolio

1
Đúng, về mặt kỹ thuật, tôi không cần sao chép phần cứng nhưng ngay cả khi bạn né tránh yêu cầu đó bằng cách đánh lừa ảo hóa và như vậy, bạn (a) sẽ phân bổ tài nguyên cứng, như băng thông và CPU, cho từng môi trường, sẽ có cùng chi phí như sao chép phần cứng hoặc (b) chia sẻ tài nguyên, điều đó có nghĩa là các sự cố kiểm tra của bạn có thể làm giảm hệ thống sản xuất của bạn.
Malvolio

3

Môi trường tiền sản xuất cuối cùng của chúng tôi chỉ đơn giản là một trong những máy chủ trực tiếp được lấy ra khỏi bộ cân bằng tải. Chúng tôi triển khai bản dựng tiền sản xuất (về cơ bản giống với bản dựng trực tiếp ngoài chuỗi kết nối cơ sở dữ liệu và một vài thay đổi cấu hình khác) và kiểm tra điều đó. Nếu mọi thứ ổn, chúng tôi triển khai mã trực tiếp và cuối cùng nếu điều đó chứng tỏ là ổn, chúng tôi trả lại máy chủ cho bộ cân bằng tải và triển khai xây dựng sản xuất cho từng máy chủ còn lại.


1

Chúng phải giống nhau nhất có thể, để bạn có thể xác định các vấn đề tại bất kỳ điểm nào trong hệ thống, ngoại trừ khả năng không thể mở rộng quy mô. Nếu có thể, sự khác biệt duy nhất giữa môi trường sản xuất của bạn và môi trường tiền sản xuất / dàn dựng / thử nghiệm sẽ là kích thước - tôi hy vọng môi trường sản xuất sẽ bao gồm nhiều máy móc hơn trong môi trường quy mô lớn. Bạn thậm chí nên phản ánh những cống hiến của máy móc bạn có, chẳng hạn như máy chủ cơ sở dữ liệu, máy chủ web, v.v.

Tuy nhiên, một bản sao chính xác có thể không thực hiện được theo ngân sách hiện tại của bạn. Càng gần, thử nghiệm sẽ hiệu quả hơn và các vấn đề ít có khả năng sẽ xuất hiện trong quá trình đẩy sản xuất.

Tôi có lập trường khác với ChrisF nếu môi trường này phải đối mặt với công chúng. Tôi nói nó không nên Tôi sẽ chọn chạy trên một bản sao của cơ sở dữ liệu thực tế, hoặc ít nhất là một bản sao của một tập hợp con của cơ sở dữ liệu trực tiếp thực tế và môi trường hướng vào trong. Bằng cách này, bạn có thể kiểm tra dữ liệu thực tế và thực tế và không lo lắng về các lỗ hổng bảo mật dẫn đến rò rỉ. Tất nhiên, bạn có thể vệ sinh dữ liệu, nhưng điều đó có thể loại bỏ một số "dữ liệu bẩn" khỏi môi trường có thể dẫn đến việc phát hiện ra lỗi trong hệ thống sống.


1
Nếu bạn đang thực hiện kiểm tra bảo mật thì tôi đồng ý rằng nó không nên đối mặt công khai, nhưng bạn có thể muốn nó được thử nghiệm chấp nhận cuối cùng (ví dụ).
ChrisF

Đó là một điểm hợp lệ, là tốt. Tôi thường tập trung vào bảo mật hơn tập trung vào khả năng sử dụng, nhưng nếu bạn muốn đưa ra một phiên bản mới của hệ thống của mình để thử nghiệm chấp nhận (có thể bởi khách hàng hoặc là một phần của phiên bản beta công khai), thì có, phải đối mặt với công chúng môi trường sẽ được yêu cầu.
Thomas Owens

Vâng, chúng tôi đã từng có một đối thủ cạnh tranh sẽ kiểm tra tất cả nội dung của họ trên máy tính công khai trong một tuần hoặc lâu hơn trước khi phát hành trực tuyến. Họ không bao giờ tìm ra cách chúng tôi luôn có các tính năng ngay trước khi họ làm ...
Malvolio

1

Ở mọi nơi tôi đã làm việc cho các ngân hàng, viễn thông và vv tiền sản xuất là một bản sao trực tiếp của sản xuất ngoại trừ cơ sở dữ liệu sẽ là một tuần hoặc lâu hơn. Đó là một quá trình lớn duy trì dữ liệu trên toàn tiền sản xuất nhưng nó được coi là thiết yếu đối với các công ty tôi làm việc đã triển khai tiền sản xuất.

Trong phần ngân hàng AU, chính phủ phạt các ngân hàng vì sự thất bại của dịch vụ, ví dụ như ATM của trang web, v.v. Không có gì lạ khi nghe về một nhóm phát triển / thử nghiệm bị sa thải vì một sự cố. Pre-prod không dành cho mọi công ty hoặc quá trình phát triển nhưng cần thiết cho một số người.


3
"Không có gì lạ khi nghe về một nhóm phát triển / thử nghiệm bị sa thải vì một sự cố" - vâng, điều đó sẽ giúp ích. Vụ đánh đập sẽ tiếp tục cho đến khi tinh thần được cải thiện.
Malvolio
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.