대규모 시스템 설계 기초

Ch03. 시스템 설계 면접 공략

webmaster 2025. 10. 7. 00:50
728x90

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

  1. 문제 이해 및 설계 범위 확정
  2. 개략적인 설계안 제시 및 동의 구하기
  3. 상세 설계
  4. 마무리

문제 이해 및 설계 범위 확정

  • 시스템 설계 면접을 볼 때는 생각 없이 바로 답을 내서는 좋은 점수를 받기 힘들다. 요구사항을 완전히 이해하고 답을 내놓자
  • 깊이 생각하고 질문하여 요구사항 가정들을 분명하게 하라
  • 엔지니어가 가져야 할 가장 중요한 기술은 올바른 질문을 하는 것, 적절한 가정을 하는 것, 시스템 구축에 필요한 정보를 모으는 것이다.
  • 예시 질문
    • 구체적으로 어떤 기능들을 만들어야 할까요?
    • 제품 사용자 수는 얼마나 될까요?
    • 회사의 규모는 얼마나 빨리 성장할 것이냐? 규모가 얼마로 예상되느냐?
    • 회사가 주로 사용하는 기술 스택은 무엇이며, 설계를 단순화하기 위해 활용할 수 있는 기존 서비스로는 어떤 것들이 있느냐?

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

  • 설계안에 대한 최초 청사진을 제시하고 의견을 구하라(면접관은 훌륭한 팀원이다.)
  • 화이트보드나 종이에 핵심 컴포넌트를 포함하는 다이어그램을 그려라
    • 클라이언트, API, 웹 서버, 데이터베이스, 캐시, CDN, 메시지 큐 등..
  • 최초 설계안이 시스템 규모에 관계된 제약사항들을 만족하는지를 개략적으로 계산해 봐라
    • 계산 과정은 소리 내어 설명하라.
    • 개략적 추정이 필요한지는 면접관에게 미리 물어보자
  • 시스템의 구체적 사용 사례도 몇 가지 살펴보자
    • 미처 고려하지 못한 에지 케이스를 발견할 수 있고, 개략적 설계안을 잡아 나가는데 도움이 될 것이다.

상세 설계

  • 해당 과정까지 왔을 경우 아래 내용들 확인이 되어야 한다.
    • 시스템에서 달성해야 하는 목표와 기능 범위 확인
    • 전체 설계의 개략적 청사진
    • 해당 청사진에 대한 면접관의 의견 청취
    • 상세 설계에서 집중해야 할 영역들 확인
  • 설계 대상 컴포넌트 사이의 우선순위를 정해야 한다.
    • 면접마다 다르며, 시스템 성능에 대한 질문/ 특정 시스템 컴포넌트들의 세부사항에 대한 질문 을 할 수 있다.
  • 면접 시에는 시관 관리에도 주의를 기울여야 한다.
    • 면접관에게 긍정적 신호를 전달하는데 집중하자! 불필요한 세부사항에 시간을 쓰지 말자

마무리

  • 마무리 단계에서는 설계 결과물에 관련된 후속 질문이 들어올 수 있고, 추가 논의를 진행하도록 할 수도 있다.
  • 면접 지침
    • 면접관이 시스템 병목 구간 또는, 좀 더 개선 가능한 지점을 찾아내라 할 수 있다. 
      • 여기에 개선할 부분이 없다는 답은 하지 말자
      • 개선점은 언제나 있으며, 면접자의 비판적 사고 능력을 보이고 좋은 인상을 남길 기회이다.
    • 만든 설계를 다시 한번 요약해 주는 것도 도움이 된다.
      • 여러 해결책을 제시한 경우에는 특히 중요하며, 면접관의 기억을 환기시켜 주는 효과도 있다.
    • 오류가 발생하면 논의할 가치가 충분하다.
      • 메트릭 수집은 어떻게 하고 어떻게 모니터링할 것인가 등.. 
    • 미래에 닥칠 규모 확장 요구에 어떻게 대처할 것인지도 흥미로운 주제다.
    • 시간이 남았다면 필요하지만 다루지 못했던 세부적 개선사항들을 제안해 보자

시간 배분

45분의 시간이 주어진다면 어떻게 배분하는 것이 좋을까?? 참고만 하자

  • 문제 이해 및 설계 범위 확정(3~10분)
  • 개략적 설계안 제시 및 동의 구하기(10 ~ 15분)
  • 상세 설계(10 ~ 25분)
  • 마무리(3~5분)
728x90