백엔드/아키텍처

[System Design Interview] 3장. 시스템 설계 면접 공략법

박지환 2022. 8. 20. 00:14
시스템 설계 면접은 지원자의 설계 기술, 결정에 대한 방어 능력, 피드백을 건설적으로 처리할 자질이 있음을 보이는 자리

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

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

시스템을 설계하기 전에는 먼저 요구사항을 완전히 이해해야 함

요구사항을 이해하는 데 필요한 질문

  • 구체적으로 어떤 기능들을 만들어야 하는가?
  • 제품 사용자 수는 얼마나 되는가?
  • 회사의 규모는 얼마나 빨리 커지리라 예상하는가?
  • 회사가 주로 사용하는 기술 스택은 무엇인가?
  • 설계를 단순화하기 위해 활용할 수 있는 기존 서비스로는 어떤 것들이 있는가?

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

개략적인 설계안을 제시하고 면접관에게 동의 구하기

진행 과정

  • 최초 설계안을 제시하고 면접관을 팀원으로 생각하고 의견을 구하기
  • 화이트보드나 종이에 핵심 컴포넌트를 포함하는 다이어그램 그리기
  • 최초 설계안이 시스템 규모에 관계된 제약사항들을 만족하는지 개략적으로 계산해 보기
  • 시스템의 구체적 사용 사례 살펴보기

3단계: 상세 설계

설계 대상 컴포넌트 사이의 우선순위를 정하기
  • 불필요한 세부사항에 시간을 쓰지 말기

4단계: 마무리

면접관이 설계 결과물에 대해 질문하거나, 스스로 추가 논의를 진행할 수 있음
  • 시스템의 병목구간, 개선 가능한 지점 등 찾기, 비판적인 사고 능력 보이기
  • 설계 요약해주기
  • 요류 발생 시의 상황 따져보기
  • 운영 이슈 논의하기, 메트릭, 로그, 배포 등
  • 미래에 닥칠 규모 확장 요구 고민하기
  • 시간이 남으면 세부적 개선사항들을 제안하기

면접 팁

  • 질문을 통해 확인하기, 스스로 내린 가정이 옳다고 믿고 진행하지 말기
  • 문제의 요구사항을 이해하기
  • 요구사항에 따라 설계안은 천차만별로 달라짐
  • 면접관이 본인의 사고 흐름을 이해할 수 있도록 하기
  • 가능하면 여러 해법 제시하기
  • 개략적 설계에 면접관이 동의하면, 가장 중요한 컴포넌트부더 세부사항 설명하기
  • 면접관을 팀원이라고 생각하고 아이디어를 이끌어내기
  • 포기하지 말기
  • 전형적인 면접 문제들을 준비해서 가기
  • 진행 중에 막혔다면, 힌트를 청하기
  • 침묵 속에 설계하지 말기, 소통을 주저하지 말기
  • 면접관이 끝났다고 할 때까지 계속 설계하기
  • 의견을 일찍, 그리고 자주 구하기

시간 배분

45분 기준
  • 1단계 - 문제 이해 및 설계 범위 확정: 3분에서 10분
  • 2단계 - 개략적 설계안 제시 및 동의 구하기: 10분에서 15분
  • 3단계 - 상세 설계: 10분에서 25분
  • 4단계 - 마무리: 3분에서 5분

 

Reference: http://www.yes24.com/Product/Goods/102819435

 

가상 면접 사례로 배우는 대규모 시스템 설계 기초 - YES24

“페이스북의 뉴스 피드나 메신저, 유튜브, 구글 드라이브 같은 대규모 시스템은 어떻게 설계할까?”IT 경력자라도 느닷없이 대규모 시스템을 설계하려고 하면 막막하다고 느낄 수 있다. 특히나

www.yes24.com