2011-04-06 3 views
4

일부 사용자가 다른 버전보다 먼저 웹 응용 프로그램의 새 버전을 사용해 볼 수있는 방법에 대한 제안을 찾고 있습니다.Google 및 Facebook은 다른 사용자보다 먼저 어떤 기능을 제공합니까?

나는 이것을 사용자에게 투명하게하고 싶습니다. 베타 버전을 사용하고 있다는 것을 알지 못합니다.

하나의 생각은 beta.domain.int와 prod.domain.int를 만든 다음로드 밸런서가 요청을 하나 또는 다른 요청에 보내도록하려는 것입니다. 어떤 (있는 경우)로드 밸런서를 사용하면 응용 프로그램에서 "베타 = 1"쿠키를 설정하고 쿠키를 기반으로 요청을 처리 할 수 ​​있습니까? 베타가 없으면 prod.domain.int는 쿠키와 상관없이 제공됩니다. 쿠키는 베타 출시를 "옵트 인"하는 사용자가 설정합니다.

Google과 Facebook은 일반적으로 사용할 수있는 것을 만들기 전에 소규모 사용자 그룹의 새로운 기능을 테스트 할 수 있습니다. 그들이 어떻게하고 있니?

답변

2

부하 분산 장치는 일반적으로 부하 분산에 사용되며 실제 구현과 관련이 없으므로 부하 분산 장치를 찾고 있지 않습니다. 당신이해야 할 일은 애플리케이션에이 기능을 구현하는 것입니다.

당신은 그것이 PHP로 작성되어 있기 때문에 나는 그들이이 구현하는 방법에 당신에게 대한 간략한 예 (의사 코드)를 줄 것이다, 예를 들어 페이스 북을 :

if(isUserBetaTester()){ 
    include("beta_functions.php"); 
} 
else{ 
    include("normal_functions.php"); 
} 

.NET에서 동일한 기능을 시뮬레이션하기 사용자 정의 속성을 사용하여 실제로 실행될 작업과 실제로 렌더링 할 뷰를 결정할 수 있습니다. 왜냐하면 사용자가 베타 사용자이거나 기타 사용자 일 경우 반복적으로 작업/컨트롤러를 체크인하고 싶지 않기 때문입니다.

은 다음 (또한 의사) 액션 필터링에있는 것으로 고려 :

if(string.IsNullOrEmpty(Cookies["beta"])) 
{ 
    var betaModel = DataLayer.GetModelForThisAction(); 
    Render("BetaView", betaModel); 
} 
else 
{ 
    var normalModel = DataLayer.GetModelForThisAction(); 
    Render("NormalView", normalModel); 
} 

이 구현하지만, 아마 "IsBetaUser를 추가하는 것이 훨씬 쉬울 것이라는 점을 염두에 두어야 할 여러 가지 방법이 있습니다 "를 데이터베이스의 사용자 테이블에 추가하고 베타 사용자를위한 특별한 도메인을 가지고"이것이 베타 사용자입니까? "를 선택하십시오. 그렇게하면 사용자가 허용되는지 여부를 확인하는 필터를 전체 도메인에 추가 할 수 있습니다.

첫 번째 대답에는 "redirect"라는 vaughe 문이 포함되어 있습니다. URL을 유지하는 서버 전환을 사용하려고했으나 포스트 백에서 변경되므로 나쁜 생각 일 수 있습니다.

+0

사용자에게 투명하게 전달하고자합니다 (리디렉션 없음, 주소 표시 줄에 베타 없음). – Jason

+0

부하 분산 장치 풀이 .int tld로 공개적으로 액세스 할 수 없다는 것을 설명하려고했습니다. – Jason

+1

@ Jason, 리디렉션에는 클라이언트와 서버의 두 가지 유형이 있습니다. 서버 쪽 리다이렉션은 여전히 ​​클라이언트에 올바른 URL을 표시합니다. 베타 주소를 표시 할 필요가 없습니다. –

1

나는 이 아닌 것으로 생각합니다. 부하 분산 질문입니다. 질문에 대한 제안을 묻습니다 제품의 베타 버전이나 업데이트 된 버전을 사용자에게 무작위로 선택하는 방법은 무엇입니까?

제한을 비롯하여 여러 가지 방법으로,하지만이있을 수 : 무작위

  • 사용자 또는 처음 사용자 100; 동의없이 리디렉션해야합니다. 좋은 생각은 아닙니다. 응용 프로그램 개체를 사용할 수 있습니다. Application["MyKey"] = "BetaUserCounter++";
  • 방문 페이지에 옵션 링크 (화면 상단에?)를 만들어 사용자에게 업데이트 된 베타 버전을 사용할지 묻습니다. 이 기능을 제한 할 수 있습니다. 예를 들어 첫 번째 시도에서 100 명의 사용자를 테스트하려는 경우 100 명의 사용자 풀이 소모 된 후 선택적 링크를 숨길 수 있습니다.,

    --EDIT--

    규칙에 따라 트래픽이 여러 가지 옵션의 몇 가지가있을 수 리디렉션 그러나 이것은 IIS7을위한 것입니다.

응용 프로그램 요청 라우팅 (ARR)은 웹 서버 관리자 및 호스팅 제공 업체 및 규칙 기반 라우팅 및 HTTP 서버 요청의로드 밸런싱을 통해 웹 응용 프로그램의 안정성과 확장 성을 높일 수 있습니다. 관리자는 ARR을 사용하여 응용 프로그램 서버의 리소스 사용을 최적화하여 웹 팜 및 공유 호스팅 환경의 관리 비용을 줄일 수 있습니다.

  • 는이 custom HttpHandler (see also), 즉, 트래픽을 분석 리디렉션 및 리디렉션의 기록을 유지 것이다 작성합니다.
+0

응용 프로그램이 제어 할 수있는 것을 기반으로 들어오는 요청을 두 개의 서버 풀 중 하나로 라우팅하는 메커니즘을 찾고 있습니다. 로드 밸런서가 방정식의 일부입니다. – Jason

+2

@ Jason로드 균형 조정기는 코드와 아무 관련이 없으므로이 기능을 응용 프로그램에 구현해야합니다. –

+0

그 점을 이해합니다. 나는 제안을 요구하고있다. 내 아이디어 중 하나는 코드에 쿠키를 설정하고로드 밸런서에서 쿠키를 확인하는 것이 었습니다. 나는 "우리가해라"또는 "그렇게하지 않을 것이기 때문에"바라고 있었다. – Jason

0

octagate switch과 같은 제품을 사용하여 http 트래픽을 분산시킬 수 있습니다. octagate를 사용하면 capacity 설정을 사용하여 지정된 백분율의 사용자 세션을 특정 백엔드 시스템에 배포 할 수 있습니다. 따라서 응용 프로그램을 조정할 필요가 없습니다.

enter image description here

1

확인이 하나 - https://github.com/reddit/reddit-plugin-betamode - 그것은 당신에게 쿠키를 설정하는 방법에 대한 아이디어를 제공, 베타 서버 대신 일반 응용 프로그램 서버 풀에 사용자를 직접 HAProxy를 사용하는 방법에 대해 설명합니다.

+0

이것은 실제로 OP가 무엇인지에 관한 라인을 따라있는 것처럼 보입니다. 하나의 활성 응용 프로그램에서 프로덕션과 베타 코드를 함께 섞어 사용하는 것이 아닙니다. 링크 만 대답하는 것이 이상적이지는 않습니다. 플러그인 작동 방식에 대한 자세한 정보를 추가하여 최종 죽은 링크가 주어진다면 유용합니다. –

0

우리는 다른 클라이언트의 기능을 활성화/비활성화하는 것과 비슷한 방식으로이 기능을 구현했습니다. 이것은 원자 적 특징에 정말 유용합니다.

각 유형의 사용자는 기능 팩 (토큰 모음)을 가지고 있습니다. 그래서 웹 앱을 렌더링 할 때 특정 기능에 대한 토큰이 사용자에게 있는지 확인합니다 (다른 계획의 기능을 표시/숨기기 위해 사용됩니다).

새로 출시되거나 개발 된 기능의 경우 특수 토큰을 추가합니다 (예 : "ShowBetaFeatures"및 "ShowAlphaFeatures"토큰). 따라서 기능이 베타 버전이고 사용자 집합에 사용할 수 있도록하려는 경우 해당 사용자에게 해당 토큰을 추가합니다. Apha 단계를 위해 특정 사용자로부터 조기 피드백을받는 것도 마찬가지입니다.

이 방법은 특정 기능을 한 사용자 (사용자 정의 개발)에만 사용하려는 경우에 유용합니다.

차이점의 크기에 따라보기 자체 또는 컨트롤러에서 문제를 해결할 수 있습니다. 단순히 표시/숨기기가 아닌 표시 방법을 변경하려는 경우입니다. 사용자가 토큰 ShowBetaFeatures을 가지고 있는지 확인하고 하나의보기 또는 다른 것을 표시하십시오. 또는보기 내에 있으면 필요한 HTML 덩어리가 표시됩니다.

베타 기능을 표시할지 여부를 결정하려면 컨트롤러 수준에서 조치 필터을 추가하면됩니다. 액션 필터의 코드는 if/else를 수행하고 사용자가 베타 기능을 볼 수 있는지 확인합니다. 베타 기능이 주요 인구에게 공개되면 ...당신은 그 장식들을 제거 할 수 있습니다.

관련 문제