-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
59 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
# Ch3 시스템 설계 면접 공략법 | ||
|
||
시스템 설계 면접은 두 명의 동료가 모호한 문제를 풀기 위해 협력하여 그 해결책을 찾아내는 과정에 대한 시뮬레이션이다. | ||
|
||
### 효과적 면접을 위한 4단계 접근법 | ||
|
||
**1단계 : 문제 이해 및 설계 범위 확정** | ||
|
||
요구사항을 완전히 이해하지 않고 답을 내놓는 행위 - 부정적 신호 (red flag) | ||
|
||
깊이 생각하고 질문하여 요구사항과 가정들을 분명히 해야 함 | ||
|
||
→ 요구사항을 정확히 이해하는 데에 필요한 질문들 | ||
|
||
- 구체적으로 어떤 기능들을 만들어야 하는가? | ||
- 제품 사용자 수는 얼마나 되나? | ||
- 회사의 규모는 얼마나 빨리 커지리라 예상하나? - 석 달, 여섯 달, 일년 뒤의 규모는 얼마가 되리라 예상하는가? | ||
- 회사가 주로 사용하는 기술 스택은 무엇인가? - 설계를 단순화하기 위해 활용할 수 있는 기존 서비스로는 어떤 것들이 있는가? | ||
|
||
**2단계 : 개략적인 설계안 제시 및 동의 구하기** | ||
|
||
- 설계안에 대한 최초 청사진을 제시하고 의견을 구한다. 면접관을 마치 팀원인 것처럼 대한다. | ||
- 화이트보드나 종이에 핵심 컴포넌트를 포함하는 다이어그램을 그린다. | ||
(클라이언트(모바일/웹), API, 웹 서버, 데이터 저장소, 캐시, CDN, 메시지 큐 포함) | ||
- 최초 설계안이 시스템 규모에 관계된 제약사항들을 만족하는지를 개략적으로 계산하고, 그 과정을 소리내어 설명한다. | ||
- 시스템의 구체적 사용 사례도 살펴본다. 미처 고려하지 못한 에지 케이스를 발견하는 데에 도움이 될 것. | ||
|
||
**3단계 : 상세 설계** | ||
|
||
- 설계 대상 컴포넌트 사이의 우선순위를 정해야 한다. | ||
- 시스템의 성능 특성에 대한 질문 (시스템의 병목 구간, 자원 요구량 추정치 등)에서 컴포넌트들의 깊이 있는 설명이 필요하다. | ||
- 시간 관리에 주의를 기울여, 긍정적 신호를 전달하는 데에 집중해야 한다. | ||
|
||
**4단계 : 마무리** | ||
|
||
- 시스템 설계가 완벽하다거나, 개선할 부분이 없다는 답은 하지 않는다. | ||
- 만든 설계를 다시 한 번 요약한다. | ||
- 오류가 발생하면 무슨 일이 생기는지 따져본다. | ||
- 운영 이슈(메트릭 수집, 모니터링 , 로그 배포 등)에 대해 논의한다. | ||
- 미래의 규모 확장 요구에 대처할 방안을 논의한다. | ||
- 필요하지만 다루지 못했던 세부적 개선사항들을 제안한다. | ||
|
||
### 해야할 것 | ||
|
||
- 질문을 통해 확인하라(clarification). 스스로 내린 가정이 옮다 믿고 진행하지 않는다 | ||
- 문제의 요구사항을 이해하라 | ||
- 정답/최선의 답안 같은 건 없다 | ||
- 면접관이 사고 흐름을 이해할 수 있도록 하라 | ||
- 가능하다면 여러 해법을 제시하라 | ||
- 개략적 설계에 면접관이 동의하면, 각 컴포넌트의 세부사항을 설명하기 시작하라 (가장 중요한 컴포넌트부터) | ||
|
||
### 하지 말아야 할 것 | ||
|
||
- 전형적인 면접 문제에도 대비하지 않은 상태로 면접장에 가지 마라 | ||
- 요구사항이나 가정들을 분명히 하지 않은 상테에서 설계를 제시하지 말라 | ||
- 처음부터 특정 컴포넌트의 세부사항을 너무 깊게 설명하지 말라 | ||
- 진행 중 막혔다면, 힌트 청하기를 주저하지 말라 | ||
- 소통을 주저하지 말라, 침묵 속에 설계를 진행하지 말라 | ||
- 설계안을 내놓는 순간 면접이 끝난다고 생각하지 말라 |