Foundry
뉴스 피드 시스템 설계
심화
핵심

좋은 순서인지 어떻게 아나

정답이 없는 문제를 다루는 방법

앞의 일곱 절은 어떻게 만드는지에 관한 것이었습니다. 마지막은 잘 만들었는지 어떻게 아는지입니다. 순서에는 정답이 없어서 이 절이 없으면 나머지가 다 추측이 됩니다.

규칙 변경은 되돌릴 수 있게 넣는다

점수 규칙을 바꿀 때는 일부 사용자에게만 적용해 비교하고 되돌릴 수 있게 한다 규칙을 바꿀 때 기존 규칙 새 규칙 5퍼센트 두 집단의 지표를 비교한다. 나쁘면 되돌린다 무엇을 비교하나 더 오래 보나 쉽게 오른다. 낚는 글에도 오른다 다시 오나 늦게 나타나지만 속이기 어렵다 쉽게 오르는 지표만 보면 낚는 글을 상위로 올리게 된다

점수 규칙을 바꾸면 전체 사용자의 피드가 바뀝니다. 나빠졌는지 좋아졌는지는 바꿔 보기 전에는 알 수 없습니다.

그래서 일부에게만 새 규칙을 적용하고 두 집단을 비교합니다. 나쁘면 되돌립니다.

이것이 가능하려면 점수 규칙이 코드에 박혀 있지 않아야 합니다. 규칙을 데이터로 두고 사용자마다 어느 규칙을 쓸지 정할 수 있어야 합니다. 이 구조를 처음에 만들어 두지 않으면 나중에는 비교 없이 배포하게 됩니다.

어떤 지표를 보나

지표성질
더 오래 보나쉽게 오른다. 낚는 글에도 오른다
더 많이 누르나쉽게 오른다. 자극적인 것에 오른다
다시 오나늦게 나타나지만 속이기 어렵다
스스로 올리나늦게 나타나고 속이기 어렵다

쉽게 오르는 지표만 보면 낚는 글을 상위로 올리게 됩니다. 자극적인 제목은 머문 시간과 누름을 즉시 올리고, 그것을 성공으로 읽으면 규칙이 그 방향으로 계속 갑니다.

그래서 오르기 쉬운 지표와 어려운 지표를 함께 봅니다. 둘이 같은 방향이면 진짜 개선이고, 앞의 것만 오르면 의심합니다.

점수가 그다음 데이터를 만든다

랭킹 피드에는 되먹임이 있습니다. 우리가 위에 올린 글이 더 많이 보이고, 그래서 반응을 더 받고, 그 반응 때문에 다음에도 위에 옵니다.

상위에 올린 것이 상위에 오를 근거를 만든다

이것을 그대로 두면 처음에 운 좋게 뽑힌 글만 계속 노출됩니다. 새 글과 조용한 계정의 글은 근거를 쌓을 기회를 못 얻습니다.

그래서 후보 목록 하나를 아직 보여준 적 없는 글에 씁니다. 앞 절에서 후보 기준을 여러 개 두기로 한 것이 여기서 다시 쓰입니다.

하지 않기로 한 것

뺀 것이유
학습 모델로 점수 정하기지금은 비교할 기준선이 없다. 규칙으로 기준선을 먼저 만든다
사용자에게 순서 선택권 주기대부분은 고르지 않는다. 기본 순서를 잘 만드는 것이 먼저다
완전한 순서 일관성여러 기기에서 같은 순서를 보장하려면 사전 계산을 포기해야 한다
실시간 반영요구사항이 5분을 허용한다. 그 여유가 설계의 대부분을 가능하게 했다

마지막 항목이 이 아키타입의 요점입니다. 5분이라는 한 줄이 사전 계산, 주기 갱신, 근사 집계를 모두 허용했습니다. 실시간을 요구하면 여덟 절의 결론이 거의 다 바뀝니다.

면접에서 이렇게 나옵니다

Q.점수 규칙을 바꿀 때 무엇을 먼저 준비해야 합니까

규칙을 데이터로 두고 일부 사용자에게만 적용할 수 있는 구조입니다.

순서에는 정답이 없어서 나빠졌는지 좋아졌는지는 바꿔 보기 전에 알 수 없습니다. 그래서 일부에게만 새 규칙을 주고 두 집단을 비교하고, 나쁘면 되돌립니다.

이것이 가능하려면 점수 규칙이 코드에 박혀 있지 않아야 합니다.

흔한 실수: 이 구조를 나중에 만들려는 것. 처음에 없으면 비교 없이 배포하는 습관이 굳고, 그 뒤에는 어떤 변경이 좋았는지 아무도 모릅니다. 첫 규칙부터 데이터로 둬야 합니다.

Q.피드 개선을 무슨 지표로 판단하시겠습니까

오르기 쉬운 지표와 어려운 지표를 함께 봅니다.

지표성질
더 오래 보나쉽게 오른다. 낚는 글에도 오른다
더 많이 누르나쉽게 오른다
다시 오나늦게 나타나지만 속이기 어렵다

둘이 같은 방향이면 진짜 개선이고, 쉬운 것만 오르면 의심합니다.

흔한 실수: 머문 시간 하나로 판단하는 것. 자극적인 제목은 머문 시간을 즉시 올립니다. 그것을 성공으로 읽으면 규칙이 낚는 글을 올리는 방향으로 계속 갑니다. 지표가 방향을 정합니다.

Q.랭킹 피드의 되먹임이 무엇이고 왜 문제입니까

위에 올린 글이 반응을 더 받아 다음에도 위에 오는 순환입니다.

상위에 올린 것이 상위에 오를 근거를 만든다

그대로 두면 처음에 운 좋게 뽑힌 글만 계속 노출됩니다. 새 글과 조용한 계정의 글은 근거를 쌓을 기회를 못 얻습니다.

그래서 후보 목록 하나를 아직 보여준 적 없는 글에 씁니다. 후보 기준을 여러 개 두기로 한 것이 여기서 다시 쓰입니다.

흔한 실수: 이것을 점수 규칙으로 고치려는 것. 새 글에 가산점을 주면 조작 유인이 생깁니다. 후보 단계에서 자리를 떼어 두는 편이 규칙을 왜곡하지 않습니다.

Q.새 글 반영이 5분까지 늦어도 된다는 조건이 없었다면 무엇이 달라집니까

여덟 절의 결론이 거의 다 바뀝니다.

미리 만들어 두기: 만들 시간이 없다
주기적 갱신: 주기가 곧 위반이 된다
근사 집계: 합칠 시간이 없다
붙들어 둔 목록: 이미 낡은 것이 된다

읽기가 쓰기의 60배라는 비율은 사전 계산이 유리하다고 말하지만, 사전 계산이 가능한지를 정하는 것은 허용 지연입니다.

흔한 실수: 비율만 보고 사전 계산을 결정하는 것. 비율이 아무리 커도 실시간 반영을 요구하면 미리 만들 수 없습니다. 요구사항에서 이 한 줄을 먼저 확인해야 합니다.

먼저 스스로 답해보고 아래 답변과 견줘보세요. 막히는 부분은 문제로 확인할 수 있어요.

읽었으면 문제로 확인해보세요

뉴스 피드 시스템 설계 문제를 풀면 틀린 문제가 자동으로 노트에 쌓입니다. 가입 없이 5문제를 먼저 풀어볼 수도 있어요.