“Cờ tính năng” là gì?


115

Các cờ tính năng có khả năng mở rộng cao đề cập ở đây:

5 điều độc hại đối với khả năng mở rộng , "5. Thiếu cờ tính năng"

Chính xác thì cờ tính năng là gì?


1
Như Maxim Vexler đã chỉ ra, bài đăng trên Flickr này là một trong những bài viết kinh điển, ban đầu về cờ đặc trưng và giải thích việc sử dụng và triển khai chúng trong một số đoạn mã chi tiết .flickr.com/blog/2009/12/02/flipping
Noah Sussman

Câu trả lời:


104

Một 'cờ tính năng' (hoặc Chuyển đổi tính năng ) là khả năng bật / tắt các tính năng (phần phụ) của ứng dụng một cách dễ dàng:

  • có thể thông qua triển khai lại hoặc
  • một số trang nội bộ nơi các trang / tính năng có thể được bật trực tiếp.

Tôi đoán ví dụ ở đó là rất tiện lợi khi có quyền kiểm soát để giảm phần nào bộ tính năng nếu bạn cần, chẳng hạn như giảm các truy vấn db nếu tải quá cao.

Tuy nhiên, có rất nhiều lý do khác mà bạn muốn sử dụng - một trong những lý do chính là bật Phân phối liên tục : đẩy mọi thứ vào sản xuất / trực tiếp nhưng tính năng bị vô hiệu hóa / bật tắt cho đến khi hoàn tất. Chúng tôi thường sử dụng cái mà chúng tôi gọi là 'cookie nhà phát triển' để chỉ hiển thị các tính năng chưa hoàn thiện cho nhóm nhà phát triển. Bằng cách này, chúng tôi có thể kiểm tra công việc đã hoàn thành một phần trong quá trình sản xuất (oh yeh! Có tích hợp tốt hơn không?) Qua nhiều bản phát hành / triển khai trước khi chúng tôi 'gỡ bỏ' (hoàn thành) nó và nó hiển thị với công chúng.

Đây là một gói đơn giản giúp bạn thực hiện việc này trong ASP.NET MVC land: https://github.com/cottsak/DevCookie (tiết lộ đầy đủ: Tôi là tác giả)

Fowler cũng có một bài báo dài hơn nhiều so với bài viết được liên kết ở trên với nhiều chi tiết hơn .

Bài đăng này (trên trang của Fowler cũng có) giải thích các loại chiến lược chuyển đổi khác nhau . DevCookie hỗ trợ chiến lược dựa trên dòng chính / đường trục và được gọi là " Chuyển đổi phát hành " trong bài viết.

Câu trả lời của Adil nhấn mạnh rằng có nhiều điều khoản và lý do tại sao bạn có thể muốn một số cơ sở hạ tầng này. Hãy nhớ rằng bạn có thể chỉ cần một số thứ này. Ví dụ: tôi có thể chỉ muốn kích hoạt một quy trình triển khai / phân phối đơn giản và nhanh nhẹn và do đó, một cơ sở hạ tầng đơn giản là đủ. Sau đó, nếu bạn chọn bạn muốn chuyển sang thử nghiệm #leanstartup đầy đủ với A / B, thử nghiệm theo nhóm và những thứ như triển khai có kiểm soát, bạn nên xem xét một công cụ phân tích (ví dụ: Heap ) tạo điều kiện cho các phương pháp phát triển theo hướng dữ liệu đó như một giải pháp riêng biệt . Một cơ sở hạ tầng chuyển đổi thực hiện tất cả những điều trên sẽ dẫn đến sự cồng kềnh và phức tạp không cần thiết.

Nếu bạn đã làm được điều này đến mức này, thì bạn có thể muốn xem một số suy nghĩ khác của tôi về Phát triển tuyến chính, chuyển đổi tính năng và những ý tưởng ngớ ngẩn khác như TEST, QA, SIT, STAND, CROUCH .


1
Thật thú vị, tôi đã luôn tưởng tượng điều tương tự trong bất cứ thứ gì tôi xây dựng. Đó có thể là một tính năng hiệu quả như vậy.
GurdeepS

7
Thường thì bạn sẽ thấy những thứ như thế này có vẻ hiển nhiên. Hóa ra ai đó đã luôn nghĩ ra một cái tên cho nó.
Matt Kocaj

27

Cờ tính năng là một kỹ thuật để tắt một số chức năng của ứng dụng của bạn, thông qua cấu hình, mà không cần triển khai mã mới.

Cờ tính năng đóng một vai trò quan trọng trong lược đồ CI nơi các tính năng liên tục được triển khai nhưng không nhất thiết phải được "phát hành" vào sản xuất.

Thông tin thêm tại đây:

-- BIÊN TẬP:

Tính năng Flags triển khai java .


3
Điều này được mô tả kỹ trong 'Triển khai liên tục' và là một yêu cầu khá lớn đối với sự phát triển của 'dòng chính'. Thay vì phân nhánh trong SCM cho các tính năng, các tính năng được bật hoặc tắt, cho phép bạn phát hành mã với các tính năng chưa được bật.
Chip McCormick

Chỉ cần lưu ý về "thông qua cấu hình, không cần triển khai mã mới": có vẻ như câu lệnh có nghĩa là thay đổi cấu hình và sau đó triển khai lại ứng dụng (thậm chí có lẽ không có mã nào thay đổi). Quá trình này vẫn có thể mất vài giây đến vài phút tùy thuộc vào quy trình triển khai của bạn. Cờ tính năng hoặc Chuyển đổi tính năng có thể không được duy trì trong cấu hình. Nó có thể ở trong một cửa hàng / db ở đâu đó và hoạt động theo kiểu "sống" - tức là, điều hướng đến một số trang quản trị nơi bạn nhấn vào một nút để bật một số hành vi trên toàn trang ngay lập tức (không triển khai, không thay đổi cấu hình).
Matt Kocaj

1
Tôi làm việc cho ConfigCat.com và cách tôi thấy nó "thay đổi cấu hình, không triển khai mã mới" có nghĩa là cấu hình được cung cấp bởi dịch vụ cờ tính năng và ứng dụng của bạn truy cập các giá trị bằng cách kéo tệp cấu hình đó. Bằng cách này, bạn có thể chắc chắn rằng việc thay đổi giá trị không cần bất kỳ loại triển khai lại ứng dụng nào. Trên hết, nó cho phép bạn tạo các quy tắc để bạn phân phối giá trị cho một người dùng và một giá trị khác cho người dùng khác. tuyệt vời là tất cả đánh giá cờ tính năng đều ở phía máy khách và tất cả logic này hoạt động mà không cần phải đẩy bất kỳ dữ liệu nào trở lại dịch vụ cờ tính năng.
sige

techblog.outbrain.com/tag/feature-flags - Url không hoạt động
bảy

19

Cờ tính năng, chuyển đổi tính năng, thử nghiệm và triển khai có kiểm soát là những từ đồng nghĩa với một ý tưởng đơn giản nhưng mạnh mẽ: triển khai mã riêng biệt từ triển khai tính năng. Nói một cách dễ hiểu, đó là khả năng đẩy các cam kết của tính năng của bạn vào sản xuất trong khi chọn ai trong số các khách hàng của bạn - nếu có ai đó - được xem tính năng đó.

Chúng đã được phổ biến một phần bởi Gatekeeper của Facebook . LiX của LinkedIn là một ví dụ điển hình khác.

Thực hiện ý tưởng đơn giản này đặt nền tảng cho nhiều phương pháp hay nhất, bao gồm:

Triển khai / Giao hàng liên tục - nhiều lần đẩy mã để sản xuất trong một ngày.

Trunk / Mainline Development - các nhánh tính năng chỉ nên được tạo cho các yêu cầu kéo, không phải để phát triển tính năng tồn tại lâu dài.

Không cần thả thêm tàu để sa lầy mọi thứ.

Kiểm tra QA / Perf trong Sản xuất - QA thực và kiểm tra hiệu suất là trên cơ sở hạ tầng sản xuất với lưu lượng sản xuất. Đừng lãng phí thời gian xây dựng các phòng thí nghiệm hiệu suất và môi trường dàn dựng rộng lớn.

Thử nghiệm - biết cách tính năng mới di chuyển kim chỉ nam trên KPI của bạn.

Tránh các bản sửa lỗi nóng hoặc bản khôi phục mã khi sự cố xảy ra - cả bản sửa lỗi nóng và bản khôi phục mã đều căng thẳng, mất nhiều thời gian và dẫn đến nhiều vấn đề hơn mức cần thiết. Thay vào đó, hãy tắt hoặc hạ thấp tính năng này.

Những người khác đã đề cập đến các thư viện mã nguồn mở. Một ví dụ điển hình về một giải pháp đầy đủ - như Gatekeeper và LiX - là Split . Tôi làm việc cho Split.


Tôi nghĩ rằng điều quan trọng là không kết hợp các cờ tính năng chỉ để hỗ trợ các câu CI AB / nhóm thuần tập / thử nghiệm tinh gọn - các mục tiêu là khác nhau. Ví dụ: sử dụng một tính năng chuyển đổi để đưa một cái gì đó vào Sản phẩm cho QA / chấp nhận có thể là một công cụ đơn giản để hỗ trợ CI / CD và trong trường hợp như vậy, Chia tách có thể quá mức cần thiết. Sau đó, một lần nữa, nếu bạn muốn thực hiện thử nghiệm tinh gọn hoặc thử nghiệm A / B thì bạn có thể cần một công cụ phân tích tốt như Heap với công cụ bổ sung và báo cáo đo từ xa được tích hợp sẵn. Tôi không thích ý tưởng hợp nhất hai mục tiêu này - có vẻ như bạn có thể phình ra rất dễ dàng.
Matt Kocaj

14

Có rất nhiều câu trả lời tuyệt vời ở đây, tất cả đều hướng đến định nghĩa cơ bản, quan trọng được phổ biến trong bài đăng của Martin Fowler :

Chúng là các đoạn mã "[cho phép] các nhóm sửa đổi hành vi của hệ thống mà không cần thay đổi mã."

Vì vậy, lịch sử chúng tôi đã nghĩ về chúng như được đại diện bởi mã giả:

if(app_settings["beta-mode"] == "true")
  showAwesomeNewGui();
else
  sameOldSnoozeFeset();

Đó là một cách hoàn toàn chính xác để nghĩ về nó, và cả Matt và Adil đều mở rộng nó một cách độc đáo với nhiều trường hợp sử dụng chiến thuật cho cờ đặc trưng.

Nhưng tôi muốn đưa ra một định nghĩa sửa đổi phản ánh thực tế đã phát triển như thế nào trong sáu năm và thay đổi kể từ khi dotnetdev đặt câu hỏi ban đầu. Tôi làm việc cho Rollout.io , một nền tảng cờ nổi bật, vì vậy tôi đã có một ghế hàng đầu cho sự phát triển này.

Nói một cách đơn giản, cờ tính năng không còn chỉ là một cách để bật và tắt các chức năng trong ứng dụng của bạn. Điều đó giống như trả lời "mục hàng hóa đơn là gì" bằng cách nói "đó là mô tả và số lượng đơn vị tiền tệ." Đúng, nhưng nó không hướng đến điểm rộng hơn của chính hóa đơn.

Các cờ đặc trưng là các bit chiến thuật của một giải pháp chiến lược tổng thể trong phần mềm hiện đại. Chúng là phương tiện mà bạn trì hoãn logic quyết định quan trọng trong mã của mình cho đến thời gian chạy khi bạn có thêm thông tin. Và, có lẽ quan trọng nhất, chúng không chỉ xảy ra cô lập nữa, chỉ với một lần kiểm tra để xem liệu số phiên bản có lớn hơn 2,7 hay không; các tổ chức sử dụng chúng thường bao gồm chúng như một phần của phương pháp tiếp cận sản phẩm toàn hệ thống, toàn diện.

Như những người khác đã đề cập, Facebook và LinkedIn đã đi tiên phong trong việc này, nhưng vào năm 2018, rất nhiều tổ chức đang làm điều đó. Họ đang hoãn các câu hỏi logic quyết định cho thời gian chạy như một phần của chiến lược phát triển, chiến lược hoạt động (hoặc chiến lược DevOps, nếu bạn muốn) và chiến lược sản phẩm. Dưới đây là những ví dụ về những câu hỏi như vậy.

  • Ai sẽ thấy màn hình quản trị mới mà chúng tôi sẽ ra mắt và khi nào?
  • Yêu cầu cấp độ thành viên nào để mở khóa quả trứng Phục sinh này?
  • Khi nào chúng ta nên chuyển sang cơ sở dữ liệu mới?
  • Chúng ta có nên đặt hình ảnh của một con báo hay một con đại bàng trên nút thanh toán để tăng cường chuyển đổi không?

Để có một ứng dụng chống lại một số lượng lớn các quyết định như vậy cho đến thời gian chạy, bạn không thể ném cờ tính năng vào ứng dụng của mình theo kiểu đặc biệt hoặc bạn sẽ chôn mình trong nợ kỹ thuật. Ngày nay, bạn cần có một chiến lược quản lý cờ tính năng toàn diện, bao gồm một vài thành phần khác nhau.

  • Các điểm chuyển đổi được sử dụng để chuyển đổi hành vi cho các tính năng mới.
  • Nhiều điểm chuyển đổi kết hợp với nhau để tạo thành bộ định tuyến bật tắt . Bộ định tuyến bật tắt xác định trạng thái của một đối tượng địa lý.
  • Chuyển đổi ngữ cảnh cung cấp cho bộ định tuyến chuyển đổi thông tin ngữ cảnh cần thiết (ví dụ: người dùng cụ thể).
  • Cấu hình chuyển đổi cung cấp thông tin bộ định tuyến chuyển đổi về môi trường.

Vì vậy, cuối cùng, cờ tính năng là gì?

Chà, chúng là một phần quan trọng của chiến lược rộng lớn hơn để có một ứng dụng có thể thích ứng với cả nhu cầu kỹ thuật và thị trường.


9

Cờ tính năng (còn được gọi là chuyển đổi tính năng hoặc chuyển đổi tính năng ) là một công tắc để bật hoặc tắt một tính năng có thể đắt tiền nếu cần (chẳng hạn như khi một trang web đang bị tấn công bởi lưu lượng truy cập không mong muốn). Điều này sẽ giúp bạn có một ít thời gian cho đến khi bạn mở rộng quy mô hoặc cho đến khi lượng tải tăng đột biến biến mất.

Đây là một ví dụ từ tài liệu SWIG .


6
Đó là một cách sử dụng cờ tính năng, vâng, nhưng khái niệm lớn cần hiểu là chúng tách biệt việc phát hành tính năng và triển khai mã, để bạn có thể phát hành các tính năng bất cứ khi nào bạn muốn, thay vì bất cứ khi nào mã xảy ra. Đó là nền tảng của sự tích hợp liên tục.
Eric Elliott

6

Tại công ty của tôi, chúng tôi đã từng có một giải pháp riêng cho điều đó. Chúng tôi đã tạo một dịch vụ cung cấp tệp config ( .json) có thể tải xuống cho mọi ứng dụng. Trong cấu hình đó, chúng tôi đã lưu trữ các cờ cho các tính năng. Dựa trên cấu hình đó, ứng dụng có thể hiển thị hoặc ẩn tính năng hiện tại. (Ví dụ: hiển thị hoặc ẩn một mục menu trên thanh bên).

Chúng tôi cũng đã tạo một trang quản trị nội bộ nơi chúng tôi có thể định cấu hình các cờ tính năng. Nó hoạt động khá tốt trong một thời gian nhưng sau đó, chúng tôi muốn thực hiện nhắm mục tiêu người dùng và thử nghiệm A / B. Để tự phát triển Có vẻ như quá nhiều nỗ lực, vì vậy chúng tôi đã chọn giải pháp của bên thứ ba. Như đã đề cập ở đây, có nhiều giải pháp cho điều đó.

Chúng tôi chọn ConfigCat vì nó hỗ trợ các nhóm mục tiêu tùy chỉnh và triển khai dựa trên phần trăm cùng một lúc. Bạn có thể kiểm tra sdks mã nguồn mở được hỗ trợ trên github .


4

Cờ tính năng (hoặc nút chuyển đổi tính năng) cho phép bạn bật các tính năng từ xa trên ứng dụng mà không cần phải xây dựng lại / triển khai lại ứng dụng. Điều này cho phép bạn triển khai mã cho sản xuất nhưng không phát hành tính năng cho đến khi bạn sẵn sàng. Bạn có thể nhắm mục tiêu những người dùng cụ thể, vì vậy bạn có thể bật một tính năng mới để người dùng beta của bạn thử nghiệm.

Tại công ty của chúng tôi, trước đây chúng tôi đã sử dụng LaunchDarkly và các đề xuất khác từ FeatureFlags.io . Chúng tôi cũng đã cố gắng sử dụng cấu hình Từ xa của Firebase để thử và làm cho điều này hoạt động, tuy nhiên chúng tôi thấy nó không thực sự phù hợp cho mục đích này.

Chúng tôi đã kết thúc việc phát triển phiên bản của riêng mình có tên Bullet Train , mà chúng tôi đã mở nguồn. Nó kết hợp cả Cờ / Chuyển đổi tính năng và Cấu hình từ xa.


4

Cờ tính năng được sử dụng cho một số mục đích. Ý tưởng chung là ủy quyền kiểm soát việc người dùng nhìn thấy tính năng nào đối với một số bảng điều khiển từ xa hoặc văn phòng phụ thuộc một số loại.

Sau khi một tính năng được gắn cờ trong mã, giờ đây, bạn có thể sử dụng một số phương pháp để xác định người dùng nào nhìn thấy nó trong ứng dụng của bạn: 1. Bật / Tắt - hiển thị tính năng cho tất cả hoặc không người dùng nào của bạn. 2. Phát hành dần dần - chỉ hiển thị tính năng cho một phần trăm người dùng của bạn, sau đó dần dần hiển thị cho tất cả người dùng. 3. Nhắm mục tiêu - hiển thị tính năng cho người dùng cụ thể dựa trên thuộc tính hoặc đặc điểm của người dùng đó.

Các công cụ giúp kiểm soát Cờ tính năng (boolean) và Cấu hình tính năng (chuỗi, số, v.v.) thường được gọi là Nền tảng quản lý tính năng Có một dịch vụ tuyệt vời cho Quản lý tính năng được gọi là Configz.io


3

Từ quan điểm mã hóa, cờ tính năng có thể đơn giản như một ifcâu lệnh bao quanh một đoạn mã mới mà bạn đang viết. Khi màif câu lệnh đánh giá là true (cờ tính năng đang bật) thì mã mới sẽ được thực thi.

Trong một ví dụ thực tế về việc cung cấp phần mềm, if câu lệnh được mô tả ở trên sẽ đánh giá khác nhau tùy thuộc vào môi trường mà phần mềm đang chạy. Ví dụ: nếu ứng dụng đang được thực thi trên máy chủ QA của bạn, cờ tính năng sẽ trả về true và tính năng mới sẽ đã xem. Nếu nó đang được thực thi trên máy chủ sản xuất của bạn, cờ tính năng sẽ trả về false và tính năng sẽ bị ẩn.

Từ kinh nghiệm cá nhân của tôi trong suốt sự nghiệp của mình, tôi đã sử dụng cờ đặc trưng theo những cách sau:

  1. Tách việc triển khai mã khỏi việc phát hành các tính năng cho khách hàng. Đây là lần đầu tiên tôi sử dụng cờ tính năng trong quá trình phát triển của chúng tôi. Chúng tôi đã sử dụng nó để loại bỏ sự phụ thuộc giữa nhóm tiếp thị và sản phẩm của chúng tôi và nhóm kỹ thuật đang thực hiện việc phát triển và phát hành. Cờ tính năng cho phép chúng tôi triển khai mã hàng tuần trước khi ra mắt trong khi trước đó chúng tôi đã triển khai mã vào đêm trước khi phát hành!

  2. Thử nghiệm trong sản xuất. Trước khi chúng tôi sử dụng cờ tính năng khi chúng tôi phát hành mã của mình, đó là sự kiện tất cả hoặc không có gì cả, tất cả khách hàng của chúng tôi đều có tính năng hoặc không ai trong số họ làm được. Chúng tôi đã sử dụng cờ tính năng để cho phép chúng tôi triển khai một tính năng mới cho một tỷ lệ nhỏ người dùng tại một thời điểm. Điều này cho phép chúng tôi thu thập phản hồi và dữ liệu có giá trị về một tính năng mới mà không gặp rủi ro bất kỳ vấn đề tiềm ẩn nào đối với toàn bộ cơ sở khách hàng.

  3. Bật / tắt một tính năng cho mỗi môi trường trong vòng đời phát triển. Chúng tôi đã sử dụng điều này một cách rộng rãi trong quá trình phát triển để cho phép quá trình triển khai trơn tru hơn nhiều - chúng tôi có một đường ống CI / CD trong đó việc sử dụng cờ tính năng là rất quan trọng.

  4. Tạo công tắc tiêu diệt. Chúng tôi đã bao bọc một số tính năng nhất định của ứng dụng bằng một cờ tính năng cho phép chúng tôi 'loại bỏ' tính năng đó trong trường hợp có bất kỳ sự cố nào mà chúng tôi đang gặp phải với ứng dụng vào thời điểm đó. Ví dụ: nếu chúng tôi thấy mình đang bị tải nặng, chúng tôi có thể tắt một số tính năng không cần thiết của trang web để giúp khắc phục sự cố.

Bạn có thể đọc thêm về cờ tính năng tại đây.

Bạn có thể thêm cờ tính năng vào mã của mình theo nhiều cách.

  1. Bạn có thể tạo riêng của mình hoặc sử dụng thư viện cờ tính năng của bên thứ ba và thêm dữ liệu cờ tính năng của bạn vào tệp cấu hình có thể được bao gồm trong gói triển khai của bạn.
  2. Bạn có thể tạo của riêng mình hoặc sử dụng thư viện cờ tính năng của bên thứ ba và thêm dữ liệu cờ tính năng của bạn vào tệp cấu hình có thể được tải trong thời gian chạy.
  3. Bạn có thể sử dụng dịch vụ quản lý cờ tính năng dựa trên đám mây để quản lý tất cả các nhu cầu về cờ tính năng cho bạn.

Viết thư viện của riêng bạn thoạt đầu có vẻ là một ý tưởng hay và thường thì nó có thể bắt đầu theo cách đó. Tuy nhiên, bạn có thể sớm gặp phải sự cố khi bạn muốn triển khai các trường hợp sử dụng nâng cao hơn của cờ tính năng như triển khai cho một phần trăm người dùng hoặc nhắm mục tiêu các nhóm người dùng cụ thể. Một vấn đề khác với việc tạo triển khai cờ tính năng của riêng bạn là nếu bạn đang sử dụng nhiều ngôn ngữ, bạn sẽ cần triển khai mã của mình nhiều lần.

Cách tốt nhất và dễ nhất để sử dụng cờ tính năng là sử dụng dịch vụ quản lý cờ tính năng trực tuyến chẳng hạn như Floodgate . Bằng cách này, bạn có thể tận dụng nền tảng để thực hiện tất cả các công việc nặng nhọc, sau đó cho phép bạn tập trung vào việc tạo tính năng cho ứng dụng của mình.

Dưới đây là ví dụ về cách thêm cờ tính năng Floodgate vào ứng dụng bằng .NET SDK.

using FloodGate.SDK;

var floodgateClient = new FloodGateClient("API-KEY");

var flag = floodgateClient.GetValue("a-new-feature", false);

if (flag)
{
  // Execute the code for my new feature here...
}

Nếu bạn đang làm việc trong một nhóm phát triển và bạn không sử dụng cờ tính năng và bạn đang gặp sự cố trong việc triển khai và quản lý mã trong nhóm. Sử dụng cờ tính năng có thể là một cách tuyệt vời để giải quyết những vấn đề này. Ngoài ra còn có một tác dụng phụ tuyệt vời của cờ tính năng là tăng tốc độ phát triển nhóm của bạn.

Martin Fowler cung cấp một bản viết rất sâu về các cờ tính năng ở đây mà tôi khuyên bạn nên đọc.


2

Sự hiểu biết của tôi là cờ tính năng giúp bạn chuyển đổi chức năng bằng cách quyết định người dùng nào nhận được một số tính năng nhất định.

Ví dụ: giả sử bạn chỉ muốn người dùng beta của mình thấy một tính năng mới. Bạn sẽ "bật" tính năng đó cho người dùng beta và những người dùng còn lại của bạn sẽ không thấy nó.

LDUser user = new LDUser("user@test.com");

boolean showFeature = ldClient.toggle("your.feature.key", user, false);

if (showFeature) {
     // application code to show the feature 
 }
else {
     // the code to run if the feature is off
 }

Tôi đang thử nghiệm các cờ tính năng của LaunchDarkly cho một số thử nghiệm JS A / B front-end - có vẻ như đang hoạt động tốt. Bạn cũng có thể xem trang web này để biết các chuyển đổi tính năng và thư viện cờ tính năng .


1

Feature Flags về cơ bản cung cấp cho bạn khả năng bật và tắt một tính năng mà không cần thực hiện bất kỳ thay đổi nào trên mã hoặc phát hành phiên bản mới. Đây là một giải pháp quan trọng đặc biệt đối với các nhà phát triển ứng dụng di động vì họ không có quyền kiểm soát người dùng cập nhật ứng dụng của họ lên phiên bản mới.

Có một số công ty cung cấp dịch vụ này cho các nhà phát triển ứng dụng di động.


Be wary of these. You don't need to integrate one of these services to create a simple switch which can be used to hide multiple features from PROD visibility/integration. You also don't necessarily need to do this live - as in, waiting for a deployment isn't a big deal when a PROD deployment is only minutes (which you should be optimising for for many many other reasons).
Matt Kocaj

2
As an addition here is a comparison of the best current feature flag services: featureflagservices.io
sige

1

At my company we use feature flags for every new feature we introduce in our SaaS app. Apart from the benefits to performance it also allows us to roll out new features gradually - introducing new features to power users first, getting feedback from them and improvising it before we can roll it out to all users.

It also allows us to customize offering to individual users - power users want all features; simple users may just want the basic stuff and may get confused by all the powerful complex features. It also allows our sales team to up-sell.

And of course as others have pointed out, if we find a feature is causing a performance degradation, we can simply turn off that one feature (either for all clients or for the one client who is causing an issue).

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.