박종훈 기술블로그

시스템 설계 면접 팁

가상 면접 사례로 배우는 대규모 시스템 설계 기초 - System Design Interview

3장 시스템 설계 면접 공략법


시스템 설계 면접이 있는 이유

두 명의 동료가 모호한 문제를 풀기 위해 협력하여 그 해결책을 찾아내는 과정에 대한 시뮬레이션.

시스템 설계 면접을 통해 볼 수 있는 것

효과적 면접을 위한 4가지 접근법

1단계: 문제 이해 및 설계 범위 확정

요구사항을 완전히 이해하지 않고 답을 말하는건 좋은 점수를 받기 어렵다.

속도를 늦춰라. 깊이 생각하고 질문하여 요구사항과 가정들을 분명히 하라.

엔지니어가 가져야 할 가장 중요한 기술 중 하나는 올바른 질문은 하는 것, 적절한 가정을 하는 것, 그리고 시스템 구축에 필요한 정보를 모으는 것이다.

요구사항을 정확히 이해하는 데 필요한 질문의 예

예제 (news feed 를 만든다 가정)

2단계: 개략적인 설계안 제시 및 동의 구하기

설계안을 제시하고 면접관의 동의를 얻기. (면접관과 협력하며 진행하면 좋음)

예제 (news feed 를 만든다 가정)

대략적으로 두 가지 처리 플로우로 나눠 생각 해볼 수 있다 : 피드 발행과 피드 생성

피드 발행: 사용자가 포스트를 올리면 관련된 데이터가 캐시/데이터베이스에 기록되고, 해당 사용자의 친구(friend) 뉴스 피드에 뜨게 된다.

피드 생성: 어떤 사용자의 뉴스 피드는 해당 사용자 친구들의 포스트를 시간 역순으로(최신 포스트부터 오래된 포스트 순으로) 정렬하여 만든다.

이를 개략적으로 그려본다면 다음과 같다.

feed publishing design

피드 발행(feed publishing)

feed publishing design

피드 생성(feed building)

3단계: 상세 설계

이 단계로 왔다면 아래의 것을 달성한 것이다.

이제 면접관과 해야 할 일은 설계 대상 컴포넌트 사이의 우선순위를 정하는 것이다.

대부분의 경우 면접관은 여러분이 특정 시스템 컴포넌트들의 세부사항을 깊이 있게 설명하는 것을 보길 원한다.

시간 관리에도 주의해야 한다. 불필요한 세부사항에 시간을 쓰지 말라.

규모 확장 가능한 시스템을 설계할 능력이 있다는 것을 입증하는데 집중해라.

예제 (news feed 를 만든다 가정)

news feed의 상세 설계에 대한 부분은 11장에서 자세히 설명해준다 한다.

feed publishing detail design

feed publishing detail design

그래프 데이터베이스?

그래프 데이터베이스란 그래프 생성 및 조작이라는 단일 용도로 특별히 설계된 플랫폼을 말합니다. 그래프는 노드, 간선, 속성으로 구성되어 있으며, 이 모든 요소를 활용하여 관계형 데이터베이스에서는 불가능한 방식으로 데이터를 표현하고 저장할 수 있습니다. - oracle -

https://db-engines.com/en/ranking/graph+dbms
neo4j 가 가장 인지도가 있는 것을 보인다. (23.05.10 기준)

4단계: 마무리

마무리 단계에서 면접관은 설계 결과물에 관련된 몇 가지 후속 질문을 던질 수도 있고(follow-up questions) 스스로 추가 논의를 진행하도록 할 수도 있다.

면접 세션에서 해야할 것

면접 세션에서 하지 말아야 할 것

시간 배분

1단계 : 문제 이해 및 설계 범위 확정: 3분~10분
2단계 : 개략적 설계안 제시 및 동의 구하기: 10분에서 15분
3단계 : 상세 설계: 10분에서 25분
4단계 : 마무리: 3분에서 5분