시스템 설계 인터뷰: Twitter 설계하기

'Twitter를 설계하라'는 전형적인 피드 생성 문제입니다. 트윗을 올리고 타임라인을 읽는다는, 겉보기에는 단순한 문제지만, 흥미로운 부분은 각 사용자의 홈 타임라인을 규모 있게 생성하는 것이며, 정답은 하이브리드 팬아웃 전략입니다. 면접관은 두 가지 단순한 접근 방식이 모두 실패한다는 것을 당신이 발견하고, 그 혼합안에 도달하는 추론 과정을 보고 싶어 합니다.

의도적으로 진행하세요: 요구사항을 명확히 하고, 읽기/쓰기 비율을 추정하고, 트윗 저장을 설계한 다음 타임라인을 설계하세요 — 팬아웃-온-라이트와 팬아웃-온-리드를 비교하고 셀럽 문제를 다루는 하이브리드에 도달하세요. 아래 워크스루는 이 흐름을 따릅니다.

1. 요구사항 명확히 하기

핵심 피드 문제로 범위를 좁히세요. 사용자는 트윗을 올리고, 다른 사람을 팔로우하며, 팔로우하는 모든 사람의 트윗을 최신순으로 합친 홈 타임라인을 읽습니다.

  • 기능 요구사항: 트윗 올리기, 팔로우/언팔로우, 홈 타임라인(팔로우하는 사람들), 사용자 타임라인(한 작성자); 기본 검색은 요청이 없으면 범위 밖.
  • 비기능 요구사항: 읽기 비중이 매우 높음, 저지연 타임라인 읽기, 높은 가용성; 타임라인의 최종 일관성은 허용됨.
  • 명확히 할 점: 미디어, 답글/스레드, 랭킹 — 이를 인정하고, 이번 라운드에서는 시간순 피드로 범위를 정하세요.

2. 규모와 읽기/쓰기 비율 추정하기

이 비율이 전체 설계를 이끕니다. 읽기는 쓰기를 크게 앞지릅니다 — 사용자는 올리는 것보다 타임라인을 훨씬 더 자주 스크롤합니다. 수억 명의 사용자가 있을 때, 시스템은 쓰기가 더 비싸지더라도 타임라인 읽기를 저렴하게 만들어야 합니다. 이 하나의 관찰이 타임라인을 미리 계산하는 방향을 가리킵니다.

3. 트윗 저장

트윗 자체는 단순하고 추가(append)가 많은 데이터입니다. 트윗 ID를 키로 하는 수평 분할 저장소에 저장하세요(Snowflake ID처럼 시간순으로 정렬 가능한 ID를 사용하여 순서가 내재되도록). 별도의 소셜 그래프 저장소가 팔로워/팔로잉 관계를 보관합니다.

  • 트윗: 분산 저장소, 트윗 ID로 샤딩; 시간순으로 정렬 가능한 ID가 저렴한 시간순 정렬을 제공한다.
  • 소셜 그래프: 누가 누구를 팔로우하는지. 'X의 모든 팔로워 가져오기'와 'X가 팔로우하는 모든 사람 가져오기'에 최적화되어 있다.
  • 캐시(Redis)가 핫 데이터 — 최근 트윗과 미리 계산된 타임라인 — 를 보관한다.

4. 타임라인 생성: 쓰기 시점 팬아웃 대 읽기 시점 팬아웃

이것이 문제의 핵심입니다. 팬아웃-온-라이트(푸시)는 게시 시점에 새 트윗을 각 팔로워의 미리 계산된 타임라인 목록에 삽입합니다 — 타임라인 읽기는 저렴한 캐시 조회가 되지만, 수백만 팔로워를 가진 사람의 게시물은 수백만 번의 쓰기를 유발합니다. 팬아웃-온-리드(풀)는 읽기 시점에 당신이 팔로우하는 모든 사람의 최근 트윗을 합쳐 타임라인을 구성합니다 — 쓰기는 저렴하지만, 많은 계정을 팔로우하는 사용자에게는 읽기가 느리고 비쌉니다.

  • 팬아웃-온-라이트: 읽기는 빠르고, 쓰기는 비쌈; 일반 사용자에게 적합하다.
  • 팬아웃-온-리드: 쓰기는 저렴하고, 읽기는 비쌈; 팔로워 수가 매우 많은 계정에 필요하다.

5. 셀럽 문제와 하이브리드

어느 순수한 접근 방식도 승리하지 못하므로 둘을 결합하세요. 대다수 사용자에게는 팬아웃-온-라이트를 사용하지만, 팔로워 수가 매우 많은 '셀럽' 계정에 대해서는 쓰기 시점에 트윗을 팬아웃하지 마세요. 대신 읽기 시점에, 팔로워의 미리 계산된 타임라인과 그가 팔로우하는 몇몇 셀럽에 대한 실시간 조회를 병합하세요. 이는 쓰기 증폭을 제한하면서도 읽기를 빠르게 유지합니다 — 면접관이 듣고 싶어 하는 답입니다.

6. 언급해야 할 트레이드오프

긴장 관계를 짚으며 마무리하세요: 쓰기 증폭 대 읽기 지연(팬아웃 결정 전체), 미리 계산된 타임라인의 저장 비용 대 재계산 비용, 그리고 일관성 — 트윗이 팔로워의 타임라인에 나타나기까지 몇 초의 지연은 허용되므로 최종 일관성으로 확장할 수 있습니다. 하이브리드의 기준('셀럽'을 어떻게 분류하는지)을 명시적으로 말하는 것이 시니어급 판단력을 보여줍니다.

실시간 도움으로 Twitter 시스템 설계 연습하기

Natively의 시스템 설계 인터뷰 어시스턴트는 실시간 라운드 중에도 당신이 구조를 잃지 않도록 다음에 다뤄야 할 차원을 제안하고 트레이드오프를 실시간으로 보여줍니다. 모든 것이 당신의 기기에서만 이루어집니다.

Put it on your own machine.

A live-conversation assistant that runs locally. Nothing leaves your machine.

macOS 12+ · Windows 10/11

© 2026 Natively AI Private Limited

Source-available under the Natively Personal Use Source License v1.0 · IP geolocation by DB-IP