Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Ruby

Đo lường tác động của cờ tính năng trong Ruby on Rails bằng AppSignal – Hướng dẫn thực hành

Cờ tính năng là một công cụ mạnh mẽ trong phát triển phần mềm, cho phép nhà phát triển kiểm soát hành vi của ứng dụng trong thời gian chạy mà không cần triển khai mã mới. Chúng cho phép các nhóm thử nghiệm các tính năng mới, thực hiện thử nghiệm A/B và dần dần triển khai các thay đổi.

Trong Ruby on Rails, các cờ tính năng có thể được quản lý bằng nhiều công cụ khác nhau, phổ biến nhất là đá quý Flipper. Bài viết này sẽ khám phá việc triển khai và đo lường tác động của cờ tính năng trong cửa hàng Solidus bằng cách sử dụng các chỉ số tùy chỉnh của Flipper và AppSignal.

Cờ tính năng trong Rails là gì?

Nếu bạn đang tìm phần giới thiệu về chủ đề này, hãy xem bài đăng Thêm cờ tính năng trong Ruby on Rails bằng Flipper.

Tuy nhiên, tóm lại, cờ tính năng là một cách để tác động đến cách ứng dụng của bạn hoạt động trong thời gian chạy , mà không cần phải triển khai mã mới. Loại cờ tính năng đơn giản nhất là các biến môi trường. Mọi ứng dụng Ruby on Rails đều sử dụng chúng ngay lập tức. Một ví dụ là cấu hình đồng thời của máy chủ ứng dụng bằng ENV['WEB_CONCURRENCY'] .

Tuy nhiên, có nhiều cách khác để quản lý cờ tính năng, chẳng hạn như sử dụng lớp lưu giữ lâu dài như ActiveRecord hoặc Redis. Đá quý Flipper cung cấp một cách toàn diện để thực hiện việc này.

Đoạn mã sau minh họa cách performance_improvement cờ tính năng được đánh giá cho một người dùng nhất định:

 

Tiếp theo, chúng tôi sẽ thiết lập mặt tiền cửa hàng Solidus để bắt đầu thử nghiệm các cờ tính năng.

Ứng dụng mẫu của chúng tôi:Mặt tiền cửa hàng Solidus

Để đo lường tác động của cờ tính năng trong một tình huống thực tế, hãy nhanh chóng khởi động cửa hàng Solidus:

 

Trình tạo này sẽ hướng dẫn bạn thực hiện quy trình và hỏi bạn một số câu hỏi về thiết lập.

  1. Chọn bắt đầu giao diện người dùng khi được truy vấn về loại giao diện người dùng.
  2. Bỏ qua việc thiết lập phương thức thanh toán.
  3. Chọn gắn kết ứng dụng Solidus của bạn tại / , vì chúng tôi đang sử dụng nó như một ứng dụng độc lập.

Sau đó, chạy bin/dev từ thiết bị đầu cuối của bạn và bạn có thể sẵn sàng để đi. Khi bạn truy cập http://localhost:3000 , bạn sẽ thấy màn hình này:

Đo lường tác động của cờ tính năng trong Ruby on Rails bằng AppSignal – Hướng dẫn thực hành

Triển khai cờ tính năng bằng Flipper

Bây giờ hãy triển khai hai trường hợp sử dụng mẫu cho cờ tính năng:

  • Cải thiện hiệu suất.
  • Nỗ lực tối ưu hóa tỷ lệ chuyển đổi.

Tuy nhiên, trước hết chúng ta phải thêm flipper đá quý cùng với active_record của nó bộ điều hợp lưu trữ:

 

Thao tác này sẽ thiết lập các bảng cơ sở dữ liệu cần thiết để tra cứu các "cổng" Flipper, tức là các điều kiện cụ thể để đánh giá khi kiểm tra cờ tính năng.

Thử nghiệm cải tiến hiệu suất

Để đánh giá tình huống này, chúng tôi sẽ mô phỏng yêu cầu chậm trong cửa hàng bằng cách thêm sleep 1 gọi cho trường hợp chưa được tối ưu hóa:

 

Bây giờ, chúng tôi sẽ sử dụng chiến lược "phần trăm thời gian" để triển khai tối ưu hóa trên một nhóm yêu cầu ngẫu nhiên. Mở bảng điều khiển Rails và nhập thông tin sau:

 

Bằng cách sử dụng công cụ kiểm tra tải oha, chúng tôi có thể xác nhận rằng thực sự một nửa số yêu cầu mất nhiều thời gian hơn những yêu cầu khác một giây:

 

Thử nghiệm tối ưu hóa tỷ lệ chuyển đổi

Khi xử lý các tính năng hướng tới người dùng, chẳng hạn như những thay đổi trong giao diện người dùng, bạn nên sử dụng chiến lược "tỷ lệ phần trăm tác nhân" để đưa ra cờ. Bằng cách này, mọi người dùng đều được cung cấp trải nghiệm giống nhau một cách nhất quán.

Vì vậy, để bắt đầu, chúng tôi sẽ tạo hai người dùng cho ứng dụng thương mại điện tử của mình. Mở bảng điều khiển Rails và đưa ra các lệnh sau:

 

Điều này tạo ra hai người dùng mẫu và đảm bảo rằng cờ tính năng nhất quán được kích hoạt cho một trong số chúng.

Để mô phỏng một tính năng đang cố gắng tăng tỷ lệ chuyển đổi, chúng tôi sẽ làm cho nút thanh toán rung lên:

 

Nếu chúng tôi đăng nhập bằng cả hai người dùng và sắp xếp các cửa sổ trình duyệt cạnh nhau, chúng tôi có thể nhận thấy rằng hiệu ứng thực sự đang hoạt động đối với một người dùng (bên trái):

Sử dụng số liệu tùy chỉnh AppSignal để đo lường tác động của cờ tính năng

Hệ thống cờ tính năng tốt nhất sẽ vô dụng nếu không có cách nào để đánh giá tác động của nó. Trong trường hợp ví dụ của chúng tôi, chúng tôi chỉ muốn biết:

  • Việc cải thiện hiệu suất có giúp giảm độ trễ đáng kể không?
  • Nút thanh toán rung của chúng tôi có dẫn đến tỷ lệ chuyển đổi cao hơn đáng kể không?

Chúng tôi sẽ sử dụng số liệu tùy chỉnh của AppSignal để đo lường hiệu quả của những tối ưu hóa này.

Trước hết, hãy tạo một ứng dụng mới trong tổ chức AppSignal của bạn và kết nối nó với ứng dụng của bạn bằng cách làm theo hướng dẫn:

 

Đo độ trễ bằng thước đo

Chúng tôi đã xác minh mức độ hiệu quả của việc cải tiến với oha CLI ở trên, nhưng để đưa ra đánh giá hợp lệ, chúng tôi sẽ cài đặt phương pháp đo từ xa phía máy chủ để báo cáo độ trễ cho AppSignal. Chỉ số đo lường cho phép thực hiện chính xác điều đó:chúng tôi sẽ gửi thời gian phản hồi tính bằng mili giây và thêm thẻ chỉ số cho biết liệu tính năng tối ưu hóa hiệu suất của chúng tôi có hoạt động cho một yêu cầu cụ thể hay không.

Có một vấn đề nhỏ ở đây:vì chúng tôi đang sử dụng chỉ số "Phần trăm thời gian", nên chúng tôi phải nắm bắt trạng thái của cờ trong một biến phiên bản để sử dụng cùng một giá trị cho việc thực thi và báo cáo:

 

Bây giờ hãy lặp lại quá trình kiểm tra tải cục bộ ở trên:

 

Chúng ta sẽ xem xét biểu đồ và đánh giá số liệu này một chút. Trước đó, hãy chuyển sang tính năng cờ thứ hai của chúng ta.

Tính số lượt chuyển đổi bằng số liệu đếm

Chúng tôi sẽ sử dụng số liệu truy cập để tính số lượt chuyển đổi. Đây là một lựa chọn tuyệt vời nếu tất cả những gì bạn muốn làm chỉ là ghi lại một sự kiện.

Để làm điều này, chúng ta sẽ phải mở CartsController và để minh họa, hãy thêm increment_counter gọi nếu nút thanh toán được nhấp:

 

Bây giờ, hãy kiểm tra điều này bằng cách mở thủ công các cửa sổ trình duyệt tương ứng và nhấp vào nút "Thanh toán" 3 lần và trong trường hợp khác chỉ một lần. Bằng cách này, chúng tôi có thể biết liệu cờ tối ưu hóa có hoạt động hay không.

Thiết lập trang tổng quan tùy chỉnh trong AppSignal

Bước cuối cùng của chúng tôi là tạo đồ họa thông tin để đưa ra quyết định kinh doanh dựa trên dữ liệu. Chúng tôi sẽ sử dụng bảng điều khiển của AppSignal để đạt được điều này. Chúng ta hãy thực hiện từng bước này:

  1. Ở thanh bên trái, nhấp vào "Thêm trang tổng quan" và đặt tên là "Đánh giá cờ tính năng".

Đo lường tác động của cờ tính năng trong Ruby on Rails bằng AppSignal – Hướng dẫn thực hành

  1. Nhấp vào "Thêm biểu đồ" và products_response_time số liệu. Chọn "trung bình" để chỉ hiển thị giá trị trung bình và áp dụng performance_improvement_enabled gắn thẻ.

Đo lường tác động của cờ tính năng trong Ruby on Rails bằng AppSignal – Hướng dẫn thực hành

  1. Nhấp vào "Thêm biểu đồ mới" để thêm biểu đồ về số lượng thanh toán. Một lần nữa, áp dụng optimization_active gắn thẻ.

Đo lường tác động của cờ tính năng trong Ruby on Rails bằng AppSignal – Hướng dẫn thực hành

Bây giờ bảng điều khiển tùy chỉnh của bạn đã sẵn sàng. Trong biểu đồ đường bên trái, bạn có thể khẳng định rằng việc cải thiện hiệu suất của bạn đã có hiệu quả. Ở bên phải, hãy quan sát cách ghi lại số lần thanh toán cao hơn trong trường hợp được tối ưu hóa.

Đo lường tác động của cờ tính năng trong Ruby on Rails bằng AppSignal – Hướng dẫn thực hành

Và thế là xong!

Kết thúc

Chúng ta đã thấy các cờ tính năng cung cấp một cách linh hoạt và hiệu quả để quản lý và triển khai các tính năng mới trong ứng dụng Ruby on Rails. Bằng cách sử dụng các công cụ như ngọc Flipper và số liệu tùy chỉnh của AppSignal, nhà phát triển không chỉ có thể kiểm soát việc triển khai tính năng mà còn đo lường tác động của chúng đối với hiệu suất và hành vi của người dùng.

Cách tiếp cận này đảm bảo rằng các tính năng mới được kiểm tra và tối ưu hóa kỹ lưỡng trước khi được triển khai đầy đủ, cuối cùng mang đến một ứng dụng ổn định hơn và thân thiện với người dùng hơn. Cuối cùng, nó có thể đưa đến những quyết định kinh doanh sáng suốt hơn khi đánh giá tính hiệu quả của các phương pháp tiếp cận thay thế.

Chúc bạn viết mã vui vẻ!

Tái bút. Nếu bạn muốn đọc các bài đăng của Ruby Magic ngay khi chúng được đăng tải, hãy đăng ký nhận bản tin Ruby Magic của chúng tôi và không bao giờ bỏ lỡ một bài đăng nào!

Đo lường tác động của cờ tính năng trong Ruby on Rails bằng AppSignal – Hướng dẫn thực hành

Julian Rubisch

Tác giả khách mời Julian của chúng tôi là nhà tư vấn Ruby on Rails tự do có trụ sở tại Vienna, chuyên về Rails phản ứng. Là thành viên của nhóm cốt lõi StimulusReflex, anh ấy đã đi đầu trong việc phát triển công nghệ HTML qua dây tiên tiến kể từ năm 2020.

Tất cả bài viết của Julian Rubisch