가상 면접 사례로 배우는 대규모 시스템 설계 기초
3장 시스템 설계 면접 공략법
시스템 디자인 인터뷰의 목적
- 시스템 디자인의 결과물 자체는 사실 쓸모없다.
- 시스템 디자인을 하면서 내린 합리적인 의사결정 과정을 보는 것이다.
- 의견을 수용하는 사람인지, 대립되는 의견에 적절한 근거로 대응하는 사람인지. 과도한 엔지니어링을 하지 않는지 등.
📌 전반적인 프로세스
1, 요구사항 파악 단계
요구사항을 최대한 이해하지 않고 내놓는답은 Red Flag 이다.
- 속으로 솔루션이 바로 떠올라도 우선 참아야 한다. 요구사항을 파악하기 위한 질문들을 먼저 해야한다.
- 질문에 예시
- 어떤 기능을 만들어야 하는가?
- 제품 사용자수는 ? 앞으로 얼마나 성장하는것을 기대하는가? 10배정도 성장가능한 시스템을 구축하면 되는가?
2, 개략적인 설계안 제시 및 동의 구하기
- 최초 청사진을 제시하면서 커뮤니케이션으로 동의를 구하기
- 핵심 컴포넌트들을 나열하고, 시스템 규모에 대한 제약사항들을 계산하기.
3, 상세 설계
- 모든 컴포넌트들을 디테일하게 설계할 수 없다. 핵심이 되는 컴포넌트을 설계해야 한다.
- 가령 URL 단축서비스에서는 해시함수설계, 챗팅서비스에서는 레이턴시를 줄이는 방법, 온오프라인 표기 방법 등
4, 마무리 단계
- 설계를 요약하기, follow up question 받기
- 설계에 대한 장단점 논의
- 미래의 규모 확장 이슈 논의 (유저수가 현재보다 10배 증가한다면?)
- 운영 이슈에 대해서 논의하기 (로깅, 배포 방식), 오류가 발생하는 경우 어떻게 되는지 ?