시스템 디자인 설계 인터뷰 준비
오타, 지적 환영입니다.
B사에서 면접을 볼 때 시스템 설계 인터뷰를 본다.
주변 인사이트를 통해 조언을 구해보니, 준비한 것과 준비 안 한것의 차이가 큰 편이고 유튜브에도 공부하는 방법같은게 나와있으니 검색하고 공부하라했다.
https://www.youtube.com/watch?v=NtMvNh0WFVM 유튜브 주소
1. 요구사항 질문하기.
보통 처음에는 모호하게 알려주는 경우가 많다고 한다. 예를 들어 “주차장 시스템을 만들어보세요.” 와 같은 것이다.
요구사항을 명확히 할 필요가 있다. 그렇기에 요구사항에 대해 질문하고 내가 이해한것이 맞는지 확인해야한다.
2. 화이트보드같은곳에 요구사항을 적기.
- 주차장 시스템을 만들기 위해서는 주차공간과 사용자가 이를 예약했을때 티켓같은 어떤것을 받아야한다.
- 주차공간에 대해 사용자는 지불해야한다.
- 같은 공간에 2명의 사람이 예약할 수 없다.
- 주차공간의 크기가 다를 수 있다 -> 질문 필요 -> 주창공간에 따른 페이가 다른가?
3. API 명세
엔드포인트를 정의하고 어떠한 기능을 하는지 설계하자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Public
/reserve
Params : garage_id
start_time, end_time
Return : (spot_id, reservation_id)
//Internal
/calculate_payment
Params: reservation_id
와 같은것을 말한다.
해당 영상에서는 Public EndPoint 와 Internal Endpoint로 나누었다.
Public EndPoint는 기업 외부에서 보안적으로 안전한 연결 및 컨텐츠를 공유를 가능하게 하여 고객에게 경험을 선사해주는 EndPoint이고
Internal EndPoint는 팀 간에 데이터를 공유하고 기존의 데이터 사일로를 해제하여 구성한 Endpoint이다.
4. 데이터타입을 정하기 + 테이블 만들기
1
2
3
4
5
6
7
8
// Table : Reservations
ID : primary Key, serial
garage_id : foregin_key, int
spot_id : foregin_key, int
start : timestamp
end : tiemstamp
paid : boolean
처럼 말이다.
로드밸런싱을 위한 테이블을 설계를 한 것도 기억을 해두면 좋을것 같다.
5. 디자인 하기
읽기 전용 데이터베이스를 놓았다.!!
그리고 사용자 거주지 기준으로 로드 밸런서를 놓았다.
6. Trade-off
절충안에 대해서 설명한다.
영상에서는 위의 디자인에 대한 절충안을 물어보았다.
자신이 생각하는것을 논리정연하게 말해야한다.
This post is licensed under CC BY 4.0 by the author.