'Chuyển đổi cờ tính năng' là gì và khi nào nên sử dụng chúng (hoặc không)?


17

Có một số câu hỏi về feature flag toggles, chẳng hạn như:

Câu hỏi của tôi :

  • Cái gì thực sự là "chuyển đổi cờ tính năng" (trong ngữ cảnh của DevOps)?
  • Tại sao chúng được sử dụng?

3
Thông tin tham khảo, không phải là câu trả lời trực tiếp - martinfowler.com/articles/feature-tlass.html
Ken Mugrage

1
Tôi biết "hỏi" về giải thích downvote thường không được chấp nhận. Nhưng bất cứ ai hạ thấp câu hỏi này một cách ẩn danh, chỉ cần biết rằng với tôi những lượt downvote như vậy là vô giá trị, vì những downvote này rất rẻ (downvoter không mất -1 khi làm như vậy). Các câu trả lời ẩn danh của các câu trả lời là khác nhau tuy nhiên ... những người downvoter như vậy không để lại dấu vết ...
Pierre.Vriens

2
Và tôi thực sự rất muốn biết lý do tại sao một người nào đó cảm thấy câu hỏi này nên được đóng lại vì "quá rộng", trong khi thực tế đây là một câu hỏi tuyệt vời xứng đáng có câu trả lời tốt.
Evgeny

Merci @Evgeny, có vẻ như chúng ta đang ở trên cùng một trang ... nhưng bạn có nhận thấy rằng 1 phiếu bầu gần đã bị rút không? Có thể là do bản chỉnh sửa gần đây nhất của tôi.
Pierre.Vriens

Câu trả lời:


13

Không lặp lại nội dung của https://martinfowler.com/articles/feature-tlass.html , vì đây là một lời giải thích sâu sắc tuyệt vời về tính năng bật cờ của tính năng. Tôi sẽ chỉ tập trung vào các khía cạnh DevOps.

Theo Báo cáo DevOps năm 2014 do PuppetLabs lập, có bốn số liệu chính để đo lường hiệu suất CNTT:

  • Thời gian thay đổi
  • Tần số phát hành
  • Thời gian để khôi phục dịch vụ
  • Thay đổi tỷ lệ thất bại

Những điều này cũng đóng góp vào hiệu suất tổ chức tổng thể. Vì vậy, điều đó có nghĩa là nếu CNTT của bạn hoạt động tốt trên các số liệu này, điểm mấu chốt của bạn sẽ có nhiều $$$ hơn.

Phân phối liên tục được kích hoạt bởi các số liệu này và đã được mô tả sâu trong cuốn sách Phân phối liên tục: Phần mềm đáng tin cậy phát hành thông qua xây dựng, kiểm tra và tự động triển khai bởi Jez Humble.

Trong bối cảnh Giao hàng liên tục , có một sự khác biệt quan trọng giúp phân biệt với Triển khai liên tục . Và đó là quyết định khi nào thực hiện phát hành các tính năng (cho khách hàng).

Giữ các thay đổi về kích thước nhỏ hơn và triển khai (sao chép mã) các tính năng nửa nướng cho các hệ thống sản xuất với cờ tính năng được bật tắt cho phép rút ngắn thời gian thay đổi .

Khi các tính năng cuối cùng đã hoàn thành, thực hiện một bản phát hành là một quyết định còn lại cho doanh nghiệp. Có thể một bản phát hành của một tính năng mới cần được liên kết với một số tiếp thị hoặc một bản phát hành trong một phần khác của doanh nghiệp như một tính năng trong ứng dụng di động.

Các tính năng có thể được phát hành bằng cách sử dụng các thử nghiệm A / B cho một phần của cơ sở khách hàng hoặc cho những người cụ thể hoặc thậm chí trực tiếp đến tính khả dụng chung (GA). Mặc dù việc phát hành GA thường chỉ được thực hiện sau khi có đủ sự chắc chắn rằng tính năng này hoạt động như mong đợi. Người ta có thể lập luận rằng điều này có hiệu lực ảnh hưởng đến tần số phát hành cao hơn.

Việc tách rời phát hànhtriển khai này gần như không thể đạt được nếu không có các tính năng bật cờ.

Đương nhiên khi không triển khai là cần thiết để chuyển đổi một tính năng tắt , thì thời gian để khôi phục dịch vụ được hạ xuống đáng kể.

Và bằng cách sử dụng các cờ tính năng phát hành các tính năng cho một lát nhỏ của cơ sở khách hàng, số liệu tỷ lệ thất bại thay đổi cũng có thể được cải thiện đáng kể.


Vì vậy, một cơ chế đơn giản được gọi là cờ tính năng bật cho phép hiệu suất CNTT tốt hơn nhiều, và đến lượt nó cải thiện hiệu suất tổ chức nói chung.

Ví dụ tuyệt vời về cách thực hiện điều này trong các công ty thực tế có thể được tìm thấy tại Flickr (trên các bài đăng công khai sớm nhất về chủ đề này) và tại Etsy . Nhưng nhiều người khác đã áp dụng thực tiễn và nói về nó từ lâu, ví dụ văn hóa kỹ thuật nổi tiếng tại các video Spotify .

Etsy đang thể hiện công cụ nội bộ của mình để quản lý các cờ tính năng , được gọi là Catapult, trong nhiều bài thuyết trình được tìm thấy trên web. Và Intuit phát hành một công cụ nguồn mở có tên Wasabi giúp quản lý các cờ tính năng.


Merci cho câu trả lời thú vị / công phu này ... Tuy nhiên, chỉ có 2 điều: bài viết được liên kết là về "Tính năng bật tắt", chứ không phải "Kính râm cờ đặc trưng" (như bạn đã viết trong đoạn đầu tiên). Bạn có đồng ý rằng chúng là từ đồng nghĩa? Nếu không có gì khác biệt? Ngoài ra: "thí nghiệm A / B" là gì (A = After và B = Before? Có lẽ là không ...).
Pierre.Vriens

1
Tôi đồng ý đây là những từ đồng nghĩa. Tôi chỉ thích thử và rõ ràng về tên, vì vậy không có sự mơ hồ. Tôi nghĩ rằng "thí nghiệm a / b" là câu hỏi của riêng mình ... nhưng câu trả lời ngắn gọn là hai biến thể được đo với nhau, như trong liên kết "Etsy hiển thị". Hoặc giải thích tại en.wikipedia.org/wiki/A/B_testing
Evgeny

OK, đó là cảm ứng hoàn thiện mà tôi đang chờ đợi / hy vọng, vì vậy hãy "chấp nhận".
Pierre.Vriens

@ Pierre.Vriens "Ngoài ra:" Thử nghiệm A / B "là gì (A = After và B = Before?" - bạn có thể hỏi điều đó trên trang web DevOps SE siêu tuyệt vời này;)
Dan Cornilescu

1

Ken Mugrage đã đăng một bình luận thú vị bên dưới câu hỏi của tôi, với một liên kết đến một lời giải thích rõ ràng về " tính năng toggles ", với một bản tóm tắt của nó như vậy:

Các tính năng bật tắt là một kỹ thuật mạnh mẽ, cho phép các nhóm sửa đổi hành vi hệ thống mà không thay đổi mã. Chúng thuộc nhiều loại sử dụng khác nhau và điều quan trọng là phải tính đến phân loại đó khi triển khai và quản lý các toggles. Kính râm giới thiệu sự phức tạp. Chúng ta có thể kiểm tra mức độ phức tạp đó bằng cách sử dụng các thực tiễn thực hiện chuyển đổi thông minh và các công cụ thích hợp để quản lý cấu hình chuyển đổi của mình, nhưng chúng ta cũng nên đặt mục tiêu hạn chế số lượng bật tắt trong hệ thống của mình.

Tóm tắt ở trên không chỉ giúp hiểu điều này là gì, mà còn chứa một số ví dụ giải thích lý do tại sao chúng được sử dụng . Và sau khi tiêu hóa thêm một chút, có vẻ như "Kính râm đặc trưng" và "Kính râm cờ đặc trưng" gần như là một từ đồng nghĩa với nhau.

Nhưng, giải pháp (trả lời) cho vấn đề (câu hỏi), thay đổi vấn đề ... người ta có thể hỏi những câu hỏi liên quan như:

  • Những ưu / nhược điểm của việc sử dụng chúng là gì? Đó là một khái niệm mạnh mẽ, nhưng cũng là một khái niệm đáng sợ nếu không được sử dụng một cách khôn ngoan (và được bảo đảm một cách thích hợp) ...
  • Điều gì có thể là một số ví dụ (cái tốt và cái xấu) nơi chúng được sử dụng? Tôi có thể nghĩ về khá nhiều người trong số họ, một vài người trong số họ tôi đã sử dụng bản thân mình cách đây khá lâu (từ trước khi DevOps thậm chí còn là một thứ).
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.