Skip to content

[3장] 시스템 설계 면접 공략법 #5

@janeljs

Description

@janeljs

효과적 면접을 위한 4단계 접근법

1단계 문제 이해 및 설계 범위 확정

  • 퀴즈쇼가 아니므로 바로 답을 밀지 말고 올바른 질문과 가정을 해야 한다.
  • 올바른 질문
    • 구체적으로 어떤 기능 만들어야?
    • 제품 사용자 수는 얼마나?
    • 회사 규모는 어느 속도로 커지리라 예상?
    • 기술스택?
  • 예시
    • 포스트별 가중치?
    • 사이트로 오는 트래픽 규모?
    • 이미지, 비디오 등 파일 형식?

2단계 개략적인 설계안 제시 및 동의 구하기

  • 면접관도 설계 참여시키기
  • CDN, 메시지 큐, 캐시 등등 핵심 컴포넌트 포함하는 다이어그램 그리기
  • 시스템 구체적 사용 사례 살펴보기 - edge case 발견

3단계 상세 설계

뉴스 피드 시스템 설계

도메인 입력 → DNS 쿼리가 브라우저 캐시 확인 → OS캐시, 라우터 캐시 확인
→ 못 찾으면 ISP(Internet Service Provider)에서 DNS Recursor가 Root Name Server에 연결
→ 하위 DNS 서버로 redirection → IP주소 찾은걸 Recursor가 받아서 브라우저로 보냄
→ 로드밸런서
→ 웹서버
→ 포스팅 전송 서비스 → 사용자 정보 캐시 → 사용자 정보 DB (or → 메시지 큐 → 포스팅 전송 작업 서버 → 뉴스 피드 캐시)

  • 우선순위 파악 중요
    • url shrotener → 해시 함수
    • chatting system → latency

4단계 마무리

  • 개선점 제시
  • 요약
  • 매트릭, 모니터링 등 운영 이슈
  • 스케일링

Q. 백만 사용자를 현재 수용할 수 있을 때, 천만 사용자를 감당하려면 어떻게 해야 하는가?

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions