Computer >> 컴퓨터 >  >> 프로그래밍 >> Ruby

AppSignal을 사용하여 Ruby on Rails에서 기능 플래그 영향 측정 - 실용 가이드

기능 플래그는 소프트웨어 개발의 강력한 도구로, 개발자가 새 코드를 배포하지 않고도 런타임에 애플리케이션의 동작을 제어할 수 있도록 해줍니다. 이를 통해 팀은 새로운 기능을 테스트하고, A/B 테스트를 수행하고, 점진적으로 변경 사항을 출시할 수 있습니다.

Ruby on Rails에서 기능 플래그는 다양한 도구를 사용하여 관리할 수 있으며 가장 인기 있는 도구는 Flipper gem입니다. 이 기사에서는 Flipper와 AppSignal의 사용자 정의 지표를 사용하여 Solidus 매장에서 기능 플래그의 영향을 구현하고 측정하는 방법을 살펴보겠습니다.

Rails의 기능 플래그란 무엇입니까?

주제에 대한 소개를 찾고 있다면 Flipper를 사용하여 Ruby on Rails에 기능 플래그 추가 게시물을 확인하세요.

간단히 말해서 기능 플래그는 애플리케이션이 런타임에 작동하는 방식에 영향을 미치는 방법입니다. , 새 코드를 배포할 필요 없이. 가장 간단한 유형의 기능 플래그는 환경 변수입니다. 모든 Ruby on Rails 애플리케이션은 기본적으로 이를 사용합니다. 한 가지 예는 ENV['WEB_CONCURRENCY']를 사용한 애플리케이션 서버 동시성 구성입니다. .

그러나 ActiveRecord 또는 Redis와 같은 지속성 계층을 사용하는 등 기능 플래그를 관리하는 다른 방법이 있습니다. 이를 수행하는 포괄적인 방법은 Flipper gem에서 제공됩니다.

다음 스니펫은 performance_improvement가 어떻게 되는지를 보여줍니다. 특정 사용자에 대해 기능 플래그가 평가됩니다:

 

다음으로 기능 플래그 실험을 시작하기 위해 Solidus 매장을 설정하겠습니다.

예제 앱:Solidus Storefront

다소 현실적인 시나리오에서 기능 플래그의 영향을 측정하기 위해 Solidus 저장소를 신속하게 부트스트랩해 보겠습니다.

 

이 생성기는 프로세스를 안내하고 몇 가지 설정 질문을 합니다.

  1. 시작 선택 프런트엔드 유형을 쿼리할 때 프런트엔드
  2. 결제 수단 설정을 건너뛰세요.
  3. /에 Solidus 애플리케이션을 마운트하도록 선택하세요. , 독립형 앱으로 사용하고 있기 때문입니다.

그런 다음 bin/dev을 실행하세요. 터미널에서 나가면 됩니다. http://localhost:3000로 가면 , 다음 화면이 표시됩니다:

AppSignal을 사용하여 Ruby on Rails에서 기능 플래그 영향 측정 - 실용 가이드

Flipper를 사용하여 기능 플래그 구현

이제 기능 플래그에 대한 두 가지 예시적인 사용 사례를 구현해 보겠습니다.

  • 성능이 향상되었습니다.
  • 전환율 최적화를 시도합니다.

하지만 우선 flipper를 추가해야 합니다. active_record와 함께 보석 저장 어댑터:

 

이렇게 하면 Flipper "게이트", 즉 기능 플래그를 확인할 때 평가할 구체적인 조건을 찾는 데 필요한 데이터베이스 테이블이 설정됩니다.

성능 개선 테스트

이 시나리오를 평가하기 위해 sleep 1를 추가하여 상점 첫화면에서 느린 요청을 시뮬레이션합니다. 최적화되지 않은 경우를 호출하세요:

 

이제 "시간 비율" 전략을 사용하여 임의의 요청 집합에 대해 최적화를 실행하겠습니다. Rails 콘솔을 열고 다음을 입력하세요:

 

oha 로드 테스트 도구를 사용하면 실제로 요청의 절반이 나머지 요청보다 1초 더 오래 걸리는 것을 확인할 수 있습니다.

 

전환율 최적화 테스트

예를 들어 UI 변경과 같은 사용자 관련 기능을 처리할 때 "액터 비율" 전략을 사용하여 플래그를 롤아웃하는 것이 좋습니다. 이런 방식으로 모든 사용자에게 지속적으로 동일한 경험이 제공됩니다.

먼저 전자 상거래 애플리케이션을 위한 두 명의 사용자를 생성하겠습니다. Rails 콘솔을 실행하고 다음 명령을 실행하세요:

 

그러면 두 명의 샘플 사용자가 생성되고 기능 플래그가 일관되게 유지됩니다. 그 중 하나에 대해 활성화되었습니다.

전환율을 높이는 기능을 시뮬레이션하기 위해 결제 버튼이 진동하도록 만들겠습니다.

 

두 사용자로 로그인하고 브라우저 창을 나란히 정렬하면 실제로 한 명의(왼쪽) 사용자에게 효과가 활성화되는 것을 확인할 수 있습니다.

AppSignal 사용자 정의 지표를 사용하여 기능 플래그의 영향 측정

최고의 기능 플래그 시스템이라도 그 영향을 평가할 방법이 없다면 쓸모가 없습니다. 예시 시나리오에서 우리가 알고 싶은 것은 다음과 같습니다:

  • 성능 개선으로 인해 지연 시간이 크게 줄어들었나요?
  • 깜빡이는 결제 버튼이 전환율을 크게 높였나요?

AppSignal의 사용자 정의 지표를 사용하여 이러한 최적화의 성과를 측정할 것입니다.

먼저 AppSignal 조직에서 새 애플리케이션을 생성하고 다음 지침에 따라 앱에 연결하세요.

 

측정 지표를 이용한 지연 시간 측정

oha를 통해 개선 효과가 얼마나 효과적인지 확인했습니다. 위의 CLI. 그러나 유효한 판단을 내리기 위해 AppSignal에 대기 시간을 보고하는 서버 측 원격 측정을 설치하겠습니다. 측정 측정항목을 사용하면 정확히 이러한 작업이 가능합니다. 응답 시간을 밀리초 단위로 전송하고 특정 요청에 대해 성능 최적화가 활성화되었는지 여부를 나타내는 측정항목 태그를 추가합니다.

여기에는 작은 문제가 있습니다. "시간 비율" 측정법을 사용하기 때문에 동일한 값이 실행 및 보고에 사용되도록 인스턴스 변수에서 플래그 상태를 캡처해야 합니다.

 

이제 위에서부터 로컬 부하 테스트를 반복해 보겠습니다.

 

이 측정항목을 차트로 작성하고 평가하는 방법을 잠시 살펴보겠습니다. 그 전에 두 번째 기능 플래그를 살펴보겠습니다.

개수 측정항목을 사용한 전환수 집계

카운터 측정항목을 사용하여 전환수를 계산하겠습니다. 단지 이벤트를 기록하는 것뿐이라면 이는 훌륭한 선택입니다.

이렇게 하려면 CartsController를 열어야 합니다. , 그리고 데모 목적으로 increment_counter을 추가하세요. 결제 버튼을 클릭하면 전화하세요:

 

이제 각 브라우저 창을 수동으로 열고 "체크아웃" 버튼을 3번 클릭하고 다른 경우에는 한 번만 클릭하여 이를 테스트해 보겠습니다. 이런 방식으로 최적화 플래그가 활성화되어 있는지 확인할 수 있습니다.

AppSignal에서 사용자 정의 대시보드 설정

우리의 마지막 단계는 데이터에 기반한 비즈니스 결정을 내릴 수 있는 유익한 그래픽을 만드는 것입니다. 이를 달성하기 위해 AppSignal의 대시보드를 사용하겠습니다. 이 단계를 단계별로 살펴보겠습니다.

  1. 왼쪽 사이드바에서 '대시보드 추가'를 클릭하고 이름을 '기능 플래그 평가'로 지정합니다.

AppSignal을 사용하여 Ruby on Rails에서 기능 플래그 영향 측정 - 실용 가이드

  1. '그래프 추가'를 클릭하면 products_response_time 미터법. 평균만 표시하고 performance_improvement_enabled을 적용하려면 "평균"을 선택하세요. 태그.

AppSignal을 사용하여 Ruby on Rails에서 기능 플래그 영향 측정 - 실용 가이드

  1. 결제 횟수에 대한 차트를 추가하려면 '새 그래프 추가'를 클릭하세요. 다시 optimization_active를 적용하세요. 태그.

AppSignal을 사용하여 Ruby on Rails에서 기능 플래그 영향 측정 - 실용 가이드

이제 사용자 정의 대시보드가 준비되었습니다. 왼쪽의 선 그래프에서는 성능 개선이 효과적이었다고 주장할 수 있습니다. 오른쪽에서는 최적화된 사례에서 더 높은 결제 수가 어떻게 기록되었는지 관찰하세요.

AppSignal을 사용하여 Ruby on Rails에서 기능 플래그 영향 측정 - 실용 가이드

그게 전부입니다!

마무리

우리는 기능 플래그가 Ruby on Rails 애플리케이션에서 새로운 기능을 관리하고 배포하는 유연하고 효율적인 방법을 제공하는 방법을 살펴보았습니다. Flipper gem 및 AppSignal의 사용자 정의 지표와 같은 도구를 사용하여 개발자는 기능 출시를 제어할 수 있을 뿐만 아니라 성능 및 사용자 행동에 미치는 영향을 측정할 수도 있습니다.

이 접근 방식을 통해 새로운 기능을 완전히 배포하기 전에 철저히 테스트하고 최적화하여 궁극적으로 더욱 안정적이고 사용자 친화적인 애플리케이션을 만들 수 있습니다. 마지막으로, 대체 접근 방식의 효율성을 측정할 때 더 많은 정보를 바탕으로 비즈니스 결정을 내릴 수 있습니다.

즐거운 코딩 되세요!

추신 Ruby Magic 게시물이 보도되는 즉시 읽으려면 Ruby Magic 뉴스레터를 구독하고 단 하나의 게시물도 놓치지 마세요!

AppSignal을 사용하여 Ruby on Rails에서 기능 플래그 영향 측정 - 실용 가이드

율리안 루비쉬

우리의 객원 저자인 Julian은 Reactive Rails를 전문으로 하는 비엔나에 거주하는 프리랜스 Ruby on Rails 컨설턴트입니다. StimulusReflex 핵심 팀의 일원인 그는 2020년부터 최첨단 HTML-over-the-wire 기술 개발의 최전선에 있었습니다.

Julian Rubisch의 모든 기사