-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 3장) 시스템 설계 면접 공략법DESIGN PATTERN & ARCHITECTURE 2024. 10. 21. 23:45
시스템 설계 면접 공략법
- 설계의 순수성에 집착한 나머지 타협적 결정을 도외시하고 과도한 엔지니어링을 하게 되는 것에 유의해야 함
효과적 면접을 위한 4단계 접근법
1단계 문제 이해 및 설계 범위 확정
- 부정적 신호 (Red Flag)
- 요구 사항을 완전히 이해하지 않고 답을 내놓는 행위
- 바로 답부터 들이밀기
- 속도를 늦춰 깊이 생각하고 질문하여 요구사항과 가정들을 분명히 할 것
- 올바른 질문을 할 것
- 적절한 가정을 할 것
- 시스템 구축에 필요한 정보를 모을 것
- 속도를 늦춰 깊이 생각하고 질문하여 요구사항과 가정들을 분명히 할 것
- 질문 예시
- 구현해야 하는 기능
- 제품의 사용자 수
- 회사의 규모 확장성
- 기간벌 규모 예상치
- 회사가 사용하는 기술 스택
- 설계 단순화를 위한 기존 서비스
2단계 개략적인 설계안 제시 및 동의 구하기
- 면접관에게 개략적인 설계안을 제시하고 동의를 얻을 것
- 면접관을 마치 팀원처럼 대할 것
- 화이트 보드나 종이에 핵심 컴포넌트를 포함하는 다이어그램을 그릴 것
- 클라이언트(모바일 / 웹), API, 웹 서버, 데이터 저장소, 캐시, CDN, 메세지 큐 등
- 최초 설계안이 시스템 규모와 관계된 제약사항을 만족하는지 개략적 수치 계산
- 계산 과정은 소리내어 설명할 것
- 이러한 개략적 추정이 필요한지는 면접관에게 미리 물어볼 것
- 시스템의 구체적인 사용 사례를 몇가지 살펴보고 개략적인 설계안을 잡아갈 것
- 미처 고려하지 못한 엣지 케이스를 발견할 수도 있음
- API 등의 설계가 필요한지는 면접관에게 질문할 것
- 예시
- 뉴스 피드 시스템
- 피드 발행
- 사용자가 포스트를 올리면 관련 데이터가 캐시 / 데이터베이스에 기록 및 친구 뉴스 피드에 뜸
- 피드 생성
- 사용자의 뉴스 피드는 해당 사용자 친구들의 포스트를 시간 역순으로 정렬하여 만듬
- 피드 발행
- 뉴스 피드 시스템
3단계 상세 설계
- 시스템 전반적으로 달성해야 할 목표와 기능 범위 확인
- 전체 설계의 개략적 청사진 마련
- 해당 청사진에 대한 면접관의 의견 청취
- 상세 설계에서 집중해야 할 영역 확인
- 면접관과 함께 컴포넌트 사이의 우선순위를 정할 것
- 면접관이 집중하고 있는 영역에 초점을 둘 것
- 시간관리에 유의
- 불필요한 세부사항에 시간을 쓰지 말기
4단계 마무리
- 개선할 점은 언제나 있음에 유의
- 만든 설계를 한번 요약하는 것도 좋음
- 여러 해결책을 제시한 경우에는 특히 중요
- 오류 발생 케이스를 따져보기 (서버 오류, 네트워크 장애 등)
- 운영 이슈
- 메트릭, 모니터링, 로그, 시스템 배포 등
- 규모 확장 요구
- 측정량 이상의 트래픽을 감당해야 한다면 등
- 세부적 개선사항을 제안해보기
정리
- 해야할 것
- 질문을 통한 확인
- 문제의 요구사항 파악
- 정답이나 최선의 답안은 없음에 유의
- 요구사항 이해도를 다시 확인할 것
- 면접관의 사고 흐름을 이해할 수 있도록 할 것
- 가능하다면 여러 해법을 함께 제시할 것
- 개략적 설계에 면접관이 동의하는 경우 각 컴포넌트의 세부사항을 설명할 것
- 가장 중요한 컴포넌트부터 진행
- 면접관의 아이디어를 이끌어 내기
- 포기하지 말것
- 하지 말아야 할 것
- 전형적인 면접 질문에도 대비되지 않은 상태에서 면접장에 가지 말 것
- 요구 사항이나 가정들을 분명히 하지 않은 상태에서 설계 제시하지 말 것
- 처음부터 특정 컴포넌트의 세부사항을 너무 깊이 설명하지 말 것
- 진행중에 막혔다면, 힌트를 청하기를 주저하지 말 것
- 소통을 주저하지 말 것
- 의견을 일찍, 그리고 자주 구할 것
- 시간 배분
- 시간 관리를 잘하는 것이 매우 중요
- 만약 45분의 시간이 주어진다면
- 1단계 - 문제 이해 및 설계 범위 확정 : 3분 ~ 10분
- 2단계 - 개략적 설계안 제시 및 동의 구하기 : 10분 ~ 15분
- 3단계 - 상세 설계 : 10분 ~ 25분
- 4단계 - 마무리 : 3분 ~ 5분
'DESIGN PATTERN & ARCHITECTURE' 카테고리의 다른 글
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 5장 ) 안정 해시 설계 (1) 2024.10.23 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 4장) 처리율 제한 장치의 설계 (0) 2024.10.22 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 2장) 개략적인 규모 추정 (0) 2024.10.21 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 1장) 사용자 수에 따른 규모 확장성 (2) 2024.10.21 도메인 주도 개발 시작하기 CH.8 ~ CH.9 (1) 2024.07.03