Là nó xấu để phát triển chống lại dữ liệu sản xuất?


10

Tôi luôn nghe nói rằng việc phát triển dựa trên dữ liệu sản xuất là một thực tế tồi tệ và hiện đang trong quá trình chuyển sang mô hình Dev> Giai đoạn> Sản xuất , chủ yếu vì tôi có một nhân viên mới với các kỹ năng tối thiểu và tôi không muốn có anh ta làm việc trực tiếp với dữ liệu sản xuất chưa.

Nhưng trong một thời gian dài, tôi đã làm việc trực tiếp với dữ liệu sản xuất với những cơn đau đầu tối thiểu, ngoại trừ có thể một vài lỗi xuất hiện ở đây hoặc ở đó, những vấn đề như chính tả, văn bản thay thế xấu, liên kết chỉ đến vị trí sai. Điều này dường như là do thiếu đánh giá ngang hàng về phía tôi chứ không phải vì làm việc với dữ liệu trực tiếp.

Vậy tại sao phát triển trên trang web trực tiếp thực hành xấu như vậy?


Bạn chỉ có thể sao chép dữ liệu bạn có trên máy chủ sản xuất của mình trên máy chủ phát triển.
HoLyVieR

1
mmmm ... làm thế nào để tôi nêu lên câu hỏi này mà không xuất hiện dưới dạng hỗ trợ theo cách của bạn để làm mọi thứ trực tiếp với dữ liệu sản xuất? : S
vmarquez

2
@vmarquez Một câu hỏi về một thực hành xấu nhất thiết phải là một câu hỏi xấu?
plntxt

Không có nó không phải là. Tôi chuẩn bị bỏ phiếu vì tôi có cảm giác rằng loại câu hỏi này là một hình thức tuyệt vời để giáo dục về thực tiễn tốt nhất, và sau đó, bằng cách nào đó, tôi đã có ý tưởng rằng bỏ phiếu có thể được coi là sự chấp thuận ngầm trên thực tế xấu, do đó, gây ra chính xác tác dụng ngược lại. Bây giờ tôi nghĩ rằng bỏ phiếu có thể gây hiểu nhầm ... ít nhất là trong một số trường hợp.
vmarquez

1
Mọi người bỏ phiếu cho mọi thứ cho tất cả các loại lý do khác nhau. Tôi không bỏ phiếu vì bất cứ điều gì khác ngoài "người này đã nhận được điều gì đó từ câu hỏi này."
artlung

Câu trả lời:


17

Nếu trong quá trình phát triển, bạn đang chạy các lệnh SQL bao gồm INSERThoặc UPDATEtrên các bảng cơ sở dữ liệu hiện có, thì bạn đang gặp rủi ro đến mức các bảng cơ sở dữ liệu đó là nhiệm vụ quan trọng.

Một số nơi đồng bộ hóa dữ liệu sản xuất vào cơ sở dữ liệu phát triển tại một số khoảng thời gian, giả sử, mỗi tuần một lần hoặc theo yêu cầu của nhà phát triển để bạn có dữ liệu mới để phát triển.

Nhưng nếu dữ liệu sản xuất của bạn không gặp rủi ro từ những gì bạn đang làm, ví dụ, nếu bạn chỉ đơn giản là phát triển một cái nhìn về một số dữ liệu, thường thì đó không phải là vấn đề lớn. Bây giờ, nếu bạn đang chạy các báo cáo thực hiện quét bảng, thì bạn có khả năng khóa bảng, sau đó người dùng hiện tại của bạn sẽ bị ảnh hưởng.

Tôi sẽ trì hoãn Quản trị viên Cơ sở dữ liệu của mình trong các trường hợp như thế này, nếu không có DBA "chính thức", tôi sẽ cảnh giác. Nó đủ đơn giản để tạo ra một cơ sở dữ liệu phát triển, ngay cả đối với bản thân tôi. Trong một đội, nó rất quan trọng. Không, nếu bạn khăng khăng chỉ thuê một cơ sở dữ liệu, bạn có thể tiền tố các bảng cơ sở dữ liệu phát triển của mình DEV_và cảm thấy tốt hơn một chút. Vâng, điều đó đòi hỏi một số thay đổi mã, nhưng trong phát triển thêm một số biến trong quá trình phát triển $debug = true, v.v., thường đáng để nỗ lực.

Rất nhiều cách để tiếp cận điều này. Nó rất phụ thuộc vào tình huống của bạn.


+1 về quy trình đồng bộ. Chúng tôi làm điều đó theo yêu cầu ở đây cho sự phát triển của chúng tôi. Chúng tôi cũng có một QA là khu vực được đồng bộ hóa thường xuyên hơn để xem xét lại các thay đổi trước khi chúng được đưa vào sản xuất. Nhưng đôi khi chúng tôi chạy các truy vấn đối với dữ liệu sản xuất, chỉ vì vấn đề liên quan đến dữ liệu và rất khó lặp lại.
Milner

+1 và đồng bộ hóa có thể khó khăn. Trong nhiều trường hợp, bạn sẽ muốn thực hiện mọi thứ như một phần của Prod-> Kiểm tra đẩy như xóa địa chỉ email và tên, v.v để tránh vô tình gửi email "Dear Rich Bastard"
JasonBirch

11

Bạn KHÔNG muốn phát triển dựa trên dữ liệu sản xuất trên máy chủ sản xuất của mình. Có một vài lý do rất lớn.

  1. Phát triển làm chậm hộp sản xuất của bạn và tạo lỗ hổng. Điều gì xảy ra nếu bạn để máy tính của bạn mở khóa và bỏ đi?
  2. Nếu bạn mắc lỗi mọi người ghé thăm trang web của bạn có thể thấy nó.
  3. Nếu bạn thực hiện bất kỳ loại cập nhật dữ liệu nào bên trong Giao dịch trong cơ sở dữ liệu của mình và bạn không cam kết ngay lập tức hoặc giao dịch mất một lúc để hoàn tất, bạn sẽ khóa trên tất cả các bảng có liên quan và bạn có thể khiến thời gian chờ xảy ra .
  4. Một số hệ thống cơ sở dữ liệu, cụ thể là SQL Server sẽ thực hiện khóa bảng vào các câu lệnh CHỌN! Điều đó có nghĩa là bạn có thể vô tình cung cấp cho mọi người thời gian chờ hoặc trang lỗi trên trang web của bạn.

Tôi sẽ không bao giờ làm công việc phát triển trên một hộp sống nếu có thể. Đặt cược tốt nhất của bạn là tạo một bản sao lưu của Cơ sở dữ liệu và các trang và làm việc với bản sao và sau đó đẩy các bản cập nhật của bạn. Một công cụ đã giúp tôi rất nhiều là SyncToy của Msft.


7

Vâng, bạn thực sự có thể làm hỏng nó dữ liệu. Hãy tưởng tượng rời khỏi một mệnh đề where. Ngay cả khi bạn có bản sao lưu hàng giờ, đó sẽ là một nỗi đau để khắc phục.


3

Nếu bạn không lái xe mà không thắt dây an toàn, đừng phát triển dữ liệu sản xuất. Chỉ là một vấn đề an toàn.


3

Nếu bạn có sẵn dữ liệu sản xuất, việc sử dụng chúng để kiểm tra là hợp lý, nhưng sử dụng cơ sở dữ liệu kiểm tra riêng với bản sao của dữ liệu đó. Nếu không, nhiều thứ sẽ hoạt động cho một vài hồ sơ thử nghiệm "blabla" của bạn nhưng không phải cho một kịch bản thực sự.

Và để phát triển dữ liệu sản xuất trực tiếp - hãy nhớ luật của Murphy "Bất cứ điều gì có thể sai sẽ trở thành sai.", Và thật dễ dàng để phạm một lỗi nhỏ với hậu quả xấu lớn.

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.