Post

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 3. 시스템 설계 면접 공략법

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

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

요구사항을 받았다면 깊이 생각하여 요구사항을 정확히 이해하는 데 필요한 질문을 하자.

  • 구체적으로 어떤 기능을 만들어야 할지
  • 사용자 및 트래픽 규모는?
  • 회사가 주로 사용하는 기술 스택은?
  • etc..

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

개략적인 설계안을 제시하고 면접관의 동의를 얻자.
이 과정에서 면접관과 협력하며 진행하면 좋다.

  • 설계안에 대한 최초 청사진을 제시하고 의견을 구하라.
  • 화이트보드나 종이에 핵심 컴포넌트를 포함하는 다이어그램을 그려라.
  • 최초 설계안이 시스템 규모에 관계된 제약사항들을 만족하는지를 개략적으로 계산해 보라. (개략적 추정이 필요한지는 면접관에게 미리 물어보기)

3단계 상세 설계

아래 목표는 달성한 상태일 것이다.

  • 시스템에서 전반적으로 달성해야 할 목표와 기능 범위 확인
  • 전체 설계의 개략적 청사진 마련
  • 해당 청사진에 대한 면접관의 의견 청취
  • 상세 설계에서 집중해야 할 영역들 확인

이제 면접관과 해야 할 일은 설계 대상 컴포넌트 사이의 우선순위를 정하는 것이다.

개략적 설계를 마쳤다면, 중요한 기능에 대해 상세하게 설계하자.’

4단계 마무리

면접관은 설계 결과물에 관련된 몇 가지 후속 질문을 던질 수도 있고, 스스로 추가 논의를 진행하도록 할 수도 있다.

  • 면접관이 시스템 병목구간, 혹은 좀 더 개선 가능한 지점을 찾아내라 주문할 수 있다. (완벽한 시스템은 없다)
  • 면접자가 만든 설계를 한번 다시 요약해주는 것도 도움이 될 수 있다. (면접관의 기억을 환기시켜주기)
  • 오류가 발생하면 무슨 일이 생기는지(서버 오류, 네트워크 장애 등) 따져보자.
  • 운영 이슈 논의 (메트릭은 어떻게 수집하고 모니터링할지, 로그는?, 시스템은 어떻게 배포할지)
  • 미래에 규모 확장 요구에 어떻게 대처할 것인지
  • 시간이 남았다면, 필요하지만 다루지 못했던 세부적 개선사항들을 제안
This post is licensed under CC BY 4.0 by the author.

© Yn3. Some rights reserved.