1. 시스템 설계 문제란?
1) 무엇을 원하는가?
- 기술 면접에서 구직자에게 주어진 문제를 어떻게 해결할 것인지 문제 해결 능력을 파악하기 위해 출제한다
- 정답은 없고 설계 기술을 면접관들에게 보여주면 된다
- 협력할 수 있는 지, 압박을 잘 견뎌낼 수 있는 지를 판단하기 위해
2) 피해야 하는 점 : 비용을 고려하지 않은 오버 엔지니어링
2. 효과적 면접을 위한 4단계 접근법
1) 문제 이해 및 설계 범위 확정
- 바로 답만 얘기하지 말자
- 깊이 생각하고 질문해 요구사항과 가정을 분명히 하기
- 올바른 질문하기, 적절한 가정하기, 시스템 구축에 필요한 정보 모으기
ex) 뉴스피드 시스템 설계
- 가장 중요한 기능이 무엇인가?
- 정렬 상태는 어떻게 되어야 하는가?
- 최대 사용자? 친구 상태?
- 트래픽 규모?
- 피드에 이미지 또는 영상의 유무?
2) 개략적인 설계안 제시 및 동의 구하기
- 1차 설계를 제안하고, 면접관의 동의 구하기
- 최초 설계안이 시스템 규모에 관계된 제약사항들을 만족하는 지 판단하기
- 시스템의 구체적 사용사례 살펴보기 : 엣지 케이스 발견에 도움이 된다
3) 상세 설계
- 대부분의 면접관은 특정 시스템 컴포넌트의 세부사항을 깊이 있게 설명하는 모습을 원한다
ex) 단축 URL 생성기 설계 : 해시 함수 설계를 어떻게 했는지?
ex) 채팅 시스템 : 어떻게 지연 시간을 줄였는지? 사용자의 온/오프라인 상태를 어떻게 확인하는지?
4) 마무리
- 시스템에서 개선할 점 찾기, 스스로의 시스템을 비판적 사고로 바라보기
- 설계를 다시 한번 요약
- 오류가 발생하면 어떻게 될 지 생각해보기
- 규모 확장 요구에 대응할 방법 생각하기
해야할 것
- 질문을 통해 확인하기
- 문제 요구사항 최대한 이해하기
- 면접관과의 소통, 소통을 통해 좋은 아이디어 도출하기
- 의견을 일찍, 자주 구하기
하지 말아야 할것
- 기본 면접 질문도 준비하지 않는 것
- 요구사항/ 가정이 분명하지 않은 상태에서 설계하기
- 아무 말도 하지 않고 설계만 하기 -> 적극적으로 힌트를 얻어낼 것
참고할 서적 : 가상 면접 사례로 배우는 대규모 시스템 설계 기초, 데이터 중심 애플리케이션 설계, 마이크로서비스 패턴
단어정리
- 가용성 : 모든 노드가 모든 요청에 대해 정상 응답을 한다
- 일관성 : 모든 노드가 동일한 데이터를 가지고 있을 것
- 부분 결함
'개발공부 > 원티드 챌린지 정리' 카테고리의 다른 글
8월 백엔드 챌린지 : 도커 프로 (2) (0) | 2023.10.02 |
---|---|
8월 백엔드 챌린지 : 도커 프로 (1) (0) | 2023.09.21 |
7월 백엔드 챌린지 4. 예제 적용 (0) | 2023.09.18 |
7월 백엔드 챌린지 3. 사용자 수에 따른 규모를 확장하는 방법 2 (0) | 2023.08.06 |
7월 백엔드 챌린지 2. 사용자 수에 따른 규모를 확장하는 방법 (0) | 2023.08.01 |