[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 3. 시스템 설계 면접 공략법
효과적 면접을 위한 4단계 접근법
1단계 문제 이해 및 설계 범위 확정
요구사항을 받았다면 깊이 생각하여 요구사항을 정확히 이해하는 데 필요한 질문을 하자.
- 구체적으로 어떤 기능을 만들어야 할지
- 사용자 및 트래픽 규모는?
- 회사가 주로 사용하는 기술 스택은?
- etc..
2단계 개략적인 설계안 제시 및 동의 구하기
개략적인 설계안을 제시하고 면접관의 동의를 얻자.
이 과정에서 면접관과 협력하며 진행하면 좋다.
- 설계안에 대한 최초 청사진을 제시하고 의견을 구하라.
- 화이트보드나 종이에 핵심 컴포넌트를 포함하는 다이어그램을 그려라.
- 최초 설계안이 시스템 규모에 관계된 제약사항들을 만족하는지를 개략적으로 계산해 보라. (개략적 추정이 필요한지는 면접관에게 미리 물어보기)
3단계 상세 설계
아래 목표는 달성한 상태일 것이다.
- 시스템에서 전반적으로 달성해야 할 목표와 기능 범위 확인
- 전체 설계의 개략적 청사진 마련
- 해당 청사진에 대한 면접관의 의견 청취
- 상세 설계에서 집중해야 할 영역들 확인
이제 면접관과 해야 할 일은 설계 대상 컴포넌트 사이의 우선순위를 정하는 것이다.
개략적 설계를 마쳤다면, 중요한 기능에 대해 상세하게 설계하자.’
4단계 마무리
면접관은 설계 결과물에 관련된 몇 가지 후속 질문을 던질 수도 있고, 스스로 추가 논의를 진행하도록 할 수도 있다.
- 면접관이 시스템 병목구간, 혹은 좀 더 개선 가능한 지점을 찾아내라 주문할 수 있다. (완벽한 시스템은 없다)
- 면접자가 만든 설계를 한번 다시 요약해주는 것도 도움이 될 수 있다. (면접관의 기억을 환기시켜주기)
- 오류가 발생하면 무슨 일이 생기는지(서버 오류, 네트워크 장애 등) 따져보자.
- 운영 이슈 논의 (메트릭은 어떻게 수집하고 모니터링할지, 로그는?, 시스템은 어떻게 배포할지)
- 미래에 규모 확장 요구에 어떻게 대처할 것인지
- 시간이 남았다면, 필요하지만 다루지 못했던 세부적 개선사항들을 제안
This post is licensed under CC BY 4.0 by the author.