Sử dụng công cụ chuyển đổi người chết của người Viking để quản lý mã nhạy cảm với thời gian


8

Trong môi trường phần mềm của chúng tôi, chúng tôi thường chạy các bài kiểm tra a / b, vì có lẽ đó là cách thực hành tốt. Tuy nhiên, môi trường của chúng ta được thiết lập sao cho, theo thứ tự rất ngắn, mã bắt đầu trở nên rất tồi tệ với các thử nghiệm chết. Sổ đăng ký thử nghiệm không chỉ là một tập hợp các trang wiki nội bộ.

Tôi nghĩ về phong cách quản lý mã không còn tồn tại của "người chết". Nếu bạn không quen thuộc với thuật ngữ này, thì nó đề cập đến một công tắc phải được đặt lại định kỳ để giữ cho một cái gì đó không kích hoạt - về bản chất, nếu bạn không phản hồi, công tắc kích hoạt và bất cứ điều gì bạn muốn chuyển đổi kích hoạt được thực hiện.

Ví dụ, tôi sẽ viết một số mã, đăng ký nó với hệ thống này theo một cách nào đó và khi một ngày mà tôi định trước đã chọn, tôi sẽ nhận được thông báo rằng mã này sẽ bị xóa (tự động xóa) trừ khi tôi can thiệp (thủ công dọn dẹp, hoặc báo lại).

Những ưu, nhược điểm và khả năng kết hợp của một hệ thống như vậy là gì? Là có thể hay khôn ngoan? Điều gì có thể là một số cách khác để quản lý mã chống thối rữa?


1
Tôi đã đổi "bàn tay của người chết" thành "công tắc của người chết", vì đó dường như là thuật ngữ mà bạn muốn nói: en.wikipedia.org/wiki/Dead_man's_switch
vaughandroid

Câu trả lời:


8

Tôi lo lắng về một hệ thống tự động loại bỏ mã. Trừ khi nhóm của bạn rất tinh vi, tôi chỉ có thể xem đây là một con đường dẫn đến nước mắt và nỗi đau. Mọi thứ xảy ra: mọi người đi nghỉ mát, bị ốm, rời khỏi công ty, quên đi những gì mã sắp hết hạn, ... và việc mã được tự động dọn dẹp nghe có vẻ như sẽ gây ra đủ thứ rắc rối. Bạn phải đảm bảo rằng không có sự phụ thuộc trình biên dịch giữa các mô-đun này, hoặc chúng có thể đột nhiên không thể biên dịch khi một cái gì đó mà chúng phụ thuộc đã hết hạn sử dụng. Và đừng quên điều gì sẽ xảy ra nếu ai đó trong bộ phận hỗ trợ sản xuất đang làm việc với một vé rắc rối cũ hơn và dấu vết ngăn xếp trong mã tham chiếu thông báo lỗi đã bị xóa. Và điều này cũng sẽ không khiến những người thực hiện kiểm toán xảy ra, tôi tưởng tượng ...

Một cái gì đó có thể an toàn hơn là một khung trong đó các mô-đun mã nhỏ của bạn có thể truy vấn ngày kích hoạt và ngày hủy kích hoạt. Khi đoạn mã sắp chạy, nó sẽ kiểm tra trong cơ sở dữ liệu xem ngày là ngày nào và nếu ngày hiện tại nằm giữa ngày kích hoạt và ngày hủy kích hoạt, khung của bạn cho phép mã chạy. Và nếu bạn lưu trữ những ngày này trong cơ sở dữ liệu, bạn có thể dễ dàng viết một tập lệnh sẽ tạo một báo cáo về tất cả các mô-đun hết hạn trong n ngày tiếp theo và gửi email cho bạn để đó là điều đầu tiên trong hộp thư đến của bạn vào sáng thứ Hai.


Điều này có thể là tuyệt vời nếu được tích hợp với một hệ thống bán vé. Cảm ơn!
dclowd9901

2
kích hoạt / hủy kích hoạt có thể được thể hiện bằng một hệ thống cấp phép có sẵn rất nhiều, do đó bạn thậm chí sẽ không phải tự viết. Các hội đồng riêng lẻ có thể áp dụng các hệ thống cấp phép như vậy để việc truy cập vào bất kỳ giao diện đã xuất nào của các hội đồng nói trên sẽ tự động xác minh bạn có giấy phép khả dụng (đã hết hạn) với máy chủ cấp phép nổi.
Jimmy Hoffa

6

Hệ thống này tạo ra một vấn đề về các thử nghiệm mồ côi: nếu ai đó đã viết một bộ thử nghiệm và một bộ mã sản xuất liên quan đến nó rời khỏi công ty, các thử nghiệm có nguy cơ bị loại bỏ sớm bởi thiếu sót của chủ sở hữu mới.

Tôi không nghĩ rằng "quá nhiều bài kiểm tra" là một vấn đề: miễn là các bài kiểm tra được tự động hóa, chất thải của bạn bị giới hạn chủ yếu vào giờ CPU, đó là một thay đổi nhỏ so với giờ của con người. Một thử nghiệm được loại bỏ tự động thông qua công tắc của người chết có thể bắt gặp các lỗi mà nếu không sẽ kết thúc sản xuất, gây ra sự cố bảo trì nghiêm trọng trên đường.

Tôi nghĩ rằng bạn có thể xây dựng một giải pháp thay thế dựa trên quy trình bằng cách tạo một sổ đăng ký ghép nối các bộ kiểm tra với các mô-đun mã của bạn. Mỗi lần bảo trì được thực hiện trên một mô-đun, quy trình sẽ yêu cầu đưa ra quyết định về việc giữ / xóa / cập nhật bộ kiểm tra tương ứng. Vì đây là một sổ sách thuần túy, không có nguy cơ mã bị xóa khỏi danh sách tự động.


1
Tôi cho rằng vấn đề mã mồ côi sẽ rất phù hợp, nhưng hy vọng tôi chỉ đủ ngu ngốc để không biết về một sự thay thế tự động hóa. Nhưng tôi rất vui vì bạn đã trình bày một lựa chọn khác, ngay cả khi nó không tự động (mà cả hai chúng ta có thể đồng ý gần như chắc chắn sẽ rơi nước mắt).
dclowd9901

@ dclowd9901 - Tại sao bạn không xóa các bài kiểm tra kiểm tra mã bạn đang xóa? Hơn nữa, các bài kiểm tra không nên được chứa trong cùng một tệp mà bài kiểm tra của nó hoặc ít nhất, một nhận xét trong mã mà các bài kiểm tra được chạy?
Ramhound

Lười biếng? Thành thật mà nói, tôi đã tham gia vào hệ thống này từ lâu khi thực hiện ban đầu. Các bài kiểm tra tự dây ra khỏi mã trong các trường hợp nhất định. Họ thực sự ngồi bên cạnh mã.
dclowd9901

3

Tôi đã sử dụng các cảnh báo lịch đơn giản từ lâu (bất kỳ phần mềm lịch nào mà công ty bạn sử dụng phải đủ), nơi tôi chỉ cần đặt nó để cảnh báo cho tôi bất cứ lúc nào và tôi đặt tất cả thông tin tôi sẽ giả sử tôi quên mọi thứ vào lúc cảnh báo tắt.

Cài đặt chứng chỉ ssl? Nhìn vào ngày hết hạn, đặt sự kiện lịch cho chính tôi (và một người quản lý và một kỹ sư khác trong trường hợp một hoặc 2 trong số 3 người chúng tôi không còn ở công ty, điều này đã xảy ra) 2 tháng trước đó để bắt đầu âm thanh báo động cho bất cứ ai cần phải thay thế, đưa vào trường hợp thông tin liên lạc cho những người chúng tôi nhận được chứng nhận từ đó, những địa điểm cụ thể mà chứng nhận được sử dụng và chi tiết về sự phân nhánh có hệ thống của việc để nó hết hạn (có thể đó là hệ thống chết và chứng chỉ nên hết hạn khi thời gian đó đến

Sửa đổi mã tự động là một ý tưởng hết sức khủng khiếp, nguy hiểm. Tất cả những gì bạn cần làm là thận trọng sử dụng lịch của mình để đảm bảo rằng bạn được thông báo về những điều nhạy cảm về thời gian khi thời gian của chúng có liên quan. Đây là cụ thể những gì lịch dành cho. Bây giờ nếu bạn gặp vấn đề không chú ý đến các sự kiện nhạy cảm về thời gian một cách có trách nhiệm, tôi nghĩ bạn có một vấn đề hoàn toàn khác mà bạn có thể muốn hỏi tại nơi làm việc .


2

Nghe có vẻ là một ý tưởng rất tồi, bởi vì mã sau này sẽ phụ thuộc vào những thay đổi đó. Tự động rollback sẽ gây thiệt hại trên diện rộng.

Thay vào đó, hãy viết bài kiểm tra của bạn dưới dạng bài kiểm tra (đơn vị) tự động và chạy chúng hàng đêm.


Kiểm tra đơn vị tự động? Làm thế nào mà làm việc với các bài kiểm tra tương tác?
dclowd9901

@ dclowd9901 - Nếu đó là trường hợp chỉ chạy chúng thường xuyên như tất cả các thử nghiệm tương tác khác được chạy. Không khó để tìm ra tương tác nào cần được chạy không được chạy tại bất kỳ điểm nào. Nếu nó khó khăn thì quá trình của bạn là vấn đề.
Ramhound

@ dclowd9901: Tôi hy vọng bạn không thực sự thay đổi giao diện người dùng hàng tuần, ngay cả khi mã đằng sau giao diện người dùng thay đổi thường xuyên. Người dùng không thích thay đổi giao diện người dùng, chỉ cần hỏi Microsoft. Vì vậy, những gì bạn sẽ được kiểm tra là UI vẫn đủ giống nhau.
MSalters

Trong các ứng dụng web, chúng tôi có cơ hội thử nghiệm các cách tiếp cận UI khác nhau (có thể là điều chỉnh vị trí hoặc màu sắc hoặc bất cứ thứ gì) theo cách lặp rất nhanh, vì vậy chúng tôi tận dụng lợi thế đó. Tuy nhiên, những thay đổi hàng tuần họ không có. Nói chung dữ liệu được thu thập qua nhiều tháng.
dclowd9901
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.