소수의 사용자에게만 기능을 제공하는 방법


11

제가 묻고 자하는 좋은 예는 Facebook의 새로운 타임 라인 기능입니다. 처음에는 선택된 소수만이 타임 라인에 액세스 할 수있었습니다. 기능이 작동하는 방식이 더욱 강화되고 버그가 수정됨에 따라 추가 사용자가 기능에 액세스 할 수있었습니다. 나중에 많은 사용자 그룹이이 기능에 액세스 할 수있게되었으며 이제는 모든 사용자에게 일반 기능이 제공되었습니다. 개발 팀은 이러한 유형의 기능 롤아웃을 어떻게 관리합니까?

구성 설정을 사용하여 테스트 중이거나 구성 파일을 통해 프로덕션 환경에서 코드에 조건부 if 문을 사용하여 액세스를 선택적으로 제어하는 ​​아이디어를 가지고 놀았습니다. 이제는 간단한 기능에 대해서는 괜찮지 만 더 큰 기능 세트 로이 기능을 구현하려고하면 관리 할 수 ​​없을 것이라고 생각합니다.

이런 방식으로 기능 롤아웃을 관리하는 가장 좋은 방법은 무엇입니까?


3
ACL & RBAC 는 원하는 것을 수행하는 두 가지 (매우 유사한) 방법입니다.
yannis

@YannisRizos : 물론, 작고 짧은 대답이지만 합법적으로 유용하다고 생각합니다. 답변으로 게시해야합니다.
Steven Evers

이것은 새로운 기능뿐만 아니라 모든 기능에 대해 기본적으로 동일하지 않습니까? 자격 증명에 따라 사용자는 x 옵션 옵션에 액세스 할 수 있습니까? 예를 들어 관리자 수준에서 설정을 변경할 수 있고 그런트 수준에서 데이터 만 입력 할 수 있습니까?
Pieter B

답변:


2

개발 팀은 이러한 유형의 기능 롤아웃을 어떻게 관리합니까?

Facebook과 같은 시스템은 주로 데이터베이스에 의해 구동된다는 것을 쉽게 추측 할 수 있습니다. 모든 사용자 데이터는 분명히 데이터베이스에 저장되며 사용자 데이터를 렌더링하는 방법에 대한 정보를 포함합니다. Facebook의 데이터베이스가 어떻게 설정되어 있는지 정확히 알 수는 없지만 일정 기준에 따라 데이터베이스에서 사용자를 주기적으로 선택하고 값을 변경하여 타임 라인과 같은 기능이 점진적으로 사용자에게 롤아웃되는 경우 여야합니다 ( s) 일부 필드.

마찬가지로 예를 들어, 아마도 그들은 사용자 테이블의 필드가 timeline_status그와 같은 값을 가지고 not offered, offered, preview, 및 public. 이를 바탕으로 Facebook 시스템은 사용자 정보 페이지를 렌더링하는 방법을 결정할 수 있습니다. 그런 다음 FB 팀은 일부 사용자 그룹을 선택하고 해당 필드의 값을 변경하여 타임 라인 기능을 시험해 볼 수있었습니다.

실제로는 그보다 조금 더 복잡하다고 확신하지만 핵심 아이디어는 사용자 계정이 단지 데이터이며 일부 데이터는 사용 가능한 기능을 결정할 수 있다는 것입니다. 새로운 기능을 출시하는 것은 데이터베이스에서 사용자 레코드를 업데이트하기 만하면됩니다.


9

... 및 조건부 if 문이 코드에 있습니다.

그래, 그건 잘못된 길이야 기능 X가 구성 가능하다면 무엇이든 확장하거나 대체해야합니다. 코드에서 그렇게하십시오. 예를 들어 FB에는 다음과 같은 것이있을 수 있습니다.

class UserPageView;
class HatedTimelineView : UserPageView;
class OldViewEveryoneLikes : UserPageView;

그런 다음 구성을 기반으로 사용자 페이지를 방문 할 때 UserPageView 객체를 만드는 팩토리를 빌드합니다. 해당보기를 활성화하십시오. 바보 가지가 없습니다.

누군가가 한 번 변경하도록 요청하면 다시 요청하기 때문에이 방법을 원합니다. 또한 그들은 다른 것을 바꾸라고 요구할 것입니다. 특별한 경우로 건축을 수수께끼로 여기 저기 놓으십시오. 기능이 풍부하고 성숙한 제품이 아니라 유지하기 어려운 거대한 스파게티 한 그릇이 있습니다.


조건부 if 문을 사용해야합니다. 그렇지 않으면 공장은 어떤 UserPageView를 반환할지 어떻게 알 수 있습니까? 즉, 모든 문장을 코드 전체에 넣는 것이 좋지 않다는 것에 동의합니다.
briddums

1

기능은 웹 사이트의 관리 기능과 동일한 방식으로 생각하십시오.

페이지를로드 할 때 사용자에게 기능에 대한 올바른 권한이 있는지 확인하십시오 (로드 된 경우).

Facebook은 새로운 기능을 출시 할 때 위치 기반 접근 방식을 사용하는 것 같습니다. 사용자의 IP 주소를보고 위치를 찾는 것만 큼 간단 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.