3. 시스템 설계 접근법
시스템 설계 4단계 접근법
1️⃣ 문제 이해 및 설계 범위 확정
요구사항과 가정에 모호함을 없애고 분명히 해야 기반이 흔들리지 않는다.
요구사항 이해에 필요한 질문들을 충분히 거쳐야 한다.
구체적으로 어떤 기능들을 만들어야 하는지?
제품 사용자 수, 일간 능동 사용자(Daily Active User)는 얼마나 되는지?
회사의 규모는 얼마나 빨리 커지고 그 규모는 어떨것인지 예상하는지?
회사가 주로 사용하는 기술 스택은 무엇인지?
설계를 단순화하기 위해 활용할 수 있는 기존 서비스로는 어떤 것들이 있는지?
2️⃣ 개략적인 설계안 제시 및 동의 구하기
설계안의 청사진을 제시하고, 주위에 의견을 구한다.
핵심 컴포넌트를 포함하는 다이어그램을 작성한다.
시스템 규모에 관계된 제약 사항 만족하는지 개략적으로 계산한다.
시스템의 구체적 사용 사례를 파악하여 설계안을 구체화하고 엣지 케이스를 고려한다.
설계해야 하는 시스템의 규모에 따라 얼마나 세세하게 집중해서 설계해야 하는지가 달라진다. 설계해야 할 시스템이 소규모라면 API 엔드포인트나 데이터베이스 스키마를 함께 제시해야 한다.
3️⃣ 상세 설계
시스템에서 전반적으로 달성해야 할 목표와 기능 범위를 확인한다.
시스템 병목 구간, 자원 요구량 추정치, 시스템 성능에 대해서도 고민해보아야 한다.
전체 설계에 대한 draft 마련
해당 draft에 대한 면접관의 의견 청취
상세 설계에서 집중해야 할 영역(우선 순위)들 확인
불필요한 세부 사항에 시간쓰는 것보다는 전체 시스템에 초점을 맞출 것
4️⃣ 마무리
만들어낸 설계 요약하기
시스템 병목 구간, 시스템 성능에 대해 더 개선시킬 부분이 있는 지 확인하기
특정 부분에서 오류 발생 시 어떤 영향을 미치는지 확인하기
운영 관점에서 메트릭 수집, 모니터링, 로깅, 배포 등에 대해 고려하기
미래의 규모 확장 요구에 어떻게 대처할지 고민하기
면접 시 시간 분배
1단계 : 3~10분
2단계 : 10~15분
3단계 : 10~25분
4단계 : 3~5분
Last updated