Feature flags là gì
Đó, bây giờ Azure có cho phép chúng ta làm chiện này luôn nè…
Triển khai nó cũng đơn giản lắm… Bây giờ các bạn thực hiện theo mình nha… Bước 1: Tạo Azure App Configuration Chúng ta vào Create a resource -> gõ App Configuration -> chọn Create Rồi sau đó lần lượt nhập vào các thông tin -> chọn Review + Create -> chọn Create Bước 2: Tạo feature flags Sau khi tạo xong, chúng ta vào resource đã tạo, ở cột bên trái, chúng ta vào phần Feature manager nằm trong mục Operations. Nhấn nút Add để bắt đầu tạo một cờ tính năng mới (feature flag) rồi nhập tên, label và description cho nó. Sau đó nhấn nút Apply để tạo. Bước 3: Tích hợp vào app Trong bài này mình sẽ ví dụ bằng việc gắn vào ứng dụng angular. Giả sử web của mình đang có tính năng “Counter” đang được hiện ra ở menu như hình bên dưới. Giờ mình bắt đầu tích hợp Azure App Configuration vào app của mình. Mình sẽ cài 2 thư viện: @azure/app-configuration và @azure/identity Sau đó mình vào file ts của component nav-menu, bỏ đoạn code này vào. counterFeature = this.ShowCounter(); async ShowCounter() { const connectionString = 'Endpoint=https://thaotest.azconfig.io;Id=SapI-la-s0:VnC8TUNG22AlpF+a3a79;Secret=68VylgjpCb8o9eJIWe9e1OtjF8LpqG6YvyVswO2vBYA='; const client = new AppConfigurationClient(connectionString); const setting = await client.getConfigurationSetting({ key: ".appconfig.featureflag/ShowCounter" }); return JSON.parse(setting.value).enabled; }Với Connection String được lấy từ Access keys trong phần Settings Sau đó chúng ta sẽ qua file html, ở tag menu của Counter, mình sẽ thêm thiết lập sự ẩn hiện của nó thông qua attribute style.visibility. [style.visibility]="(counterFeature | async) ? 'visible' : 'hidden'"Hồi nãy lúc tạo feature flag ShowCounter, mình ko có enable nó lên nên expect lúc này khi chạy web lên mình sẽ ko thấy tính năng đó ở trên menu nữa. Để xem thế nào nha…. Vầng… và kết quả đã như ý, mình đã không thấy tính năng đó ở trên menu nữa rồi. Giả sử mình muốn bật tính năng đó lên thì mình chỉ việc vào Azure App Configuration rồi enable nó lên là xong. Hỏng cần phải deploy lại web gì hết. Quá khoẻ…. Còn về mặt backend trong .NET, chúng ta sẽ dùng FeatureGate attribute Cụ thể các bạn có thể tham khảo thêm tại đây
.NET | Javascript | Typescript | Azure Xem tất cả bài viết bởi Thao Tran Có rất nhiều câu trả lời tuyệt vời ở đây, tất cả đều lái xe theo định nghĩa cơ bản, quan trọng 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 hệ thống mà không thay đổi mã." Vì vậy, trong 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ờ tính nă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 hỏi câu hỏi ban đầu. Tôi làm việc cho Rollout.io , một nền tảng cờ tính năng, vì vậy tôi đã có một hàng ghế đầ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 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 tiền tệ." Đúng, nhưng nó không lái xe ở điểm rộng hơn của chính hóa đơn. Cờ tính năng là các bit chiến thuật của một giải pháp chiến lược bao quát trong phần mềm hiện đại. Chúng là phương tiện để bạn trì hoãn logic quyết định quan trọng trong mã của mình cho đến khi thực thi khi bạn có thêm thông tin. Và, có lẽ quan trọng nhất, chúng không còn xảy ra trong sự cô lập nữa, với một kiểm tra duy nhất để xem 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 cách tiếp cận toàn diện, toàn hệ thống sản phẩm. Như những người khác đã đề cập, Facebook và LinkedIn đã tiên phong trong việc này, nhưng năm 2018, toàn bộ rất nhiều tổ chức đang làm điều đó. Họ đang trì 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à ví dụ về những câu hỏi như vậy.
Để có một ứng dụng trì hoãn một số lượng đáng kể các quyết định như vậy cho đến khi chạy, bạn không thể ném cờ tính năng vào ứng dụng của mình theo cách đặc biệt hoặc bạn sẽ vùi mình vào 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.
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 trong chiến lược rộng lớn hơn để có một ứng dụng phù hợp với cả nhu cầu kỹ thuật và thị trường. |