가상 면접 사례로 배우는 대규모 시스템 설계 기초: 3장 시스템 설계 면접 공략법

sunny·2024년 4월 6일
0

시스템 설계 면접이 있는 이유

👉 두 명의 동료가 모호한 문제를 풀기 위해 협력하여 그 해결책을 찾아내는 과정에 대한 시뮬레이션

시스템 설계 면접의 평가 항목

  • 설계 능력의 기술적 측면
  • 협력에 적합한 사람인지
  • 압박이 심한 상황도 잘 헤쳐나갈 자질이 있는지
  • 모호한 문제를 건설적으로 해결할 능력이 있는지
  • 좋은 질문을 던질 능력이 있는지

시스템 설계 면접에서의 부정적 신호

  • 설계의 순수성에 집착한 나머지 트레이드 오프를 도외시하고 오버 엔지니어링을 하는지 👉 시스템 전반의 비용이 올라가게 됨
  • 완고함
  • 편협함

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

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

요구 사항을 완전히 이해하고 적절한 가정을 하는 것이 중요하며, 그러기 위해서는 요구사항을 정확히 이해하는 데 필요한 질문을 해야 한다. 이를 통해 시스템 구축에 필요한 정보를 모은다.

질문거리로는 아래와 같다.

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

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

개략적인 설계안을 제시하고 면접관의 동의를 얻는다.

  • 개략적인 설계안을 제시하고, 면접관을 마치 팀원인 것처럼 대하며 동의를 구한다.
  • 핵심 컴포넌트를 포함하는 다이어그램을 그려라.
    • 클라이언트(모바일/웹), API(엔드포인트), 웹 서버, 데이터 저장소(데이터베이스 스키마), 캐시, CDN, 메세지 큐
  • 설계안을 바탕으로 제약사항을 만족하는지 계산해 보라.
    • 소리내어 설명하면 Good

3단계: 상세 설계

설계 대상 컴포넌트 사이의 우선순위를 정하고, 우선순위가 높은 부분을 자세히 설명해라.

  • 채팅 시스템 관한 문제
    • ⇒ 어떻게 하면 지연시간을 줄이고 사용자의 온/오프랑니 상태를 표시할 것인지를 듣고자 할 것임
  • 단축 URL 생성기
    • ⇒ 해시 함수의 설계에 대해 구체적으로 듣고 싶어할 것

4단계: 마무리

  • 개선점
    • 개선한 점은 언제나 있다! ⇒ 당신의 비판적 사고 능력을 보여줘라
  • 요약하기
  • 오류가 발생하면 무슨 일이 생기는지
  • 운영 이슈
  • 미래에 닥칠 규모 확장 요구에 어떻게 대처할 것인지

시간 배분

1단계 - 문제 이해 및 설계 범위 확정: 3분~10분

2단계 - 개략적 설계안 제시 및 동의 구하기: 10분~15분

3단계 - 상세 설계: 10분~25분

4단계 - 마무리: 3분~5분

0개의 댓글

관련 채용 정보