Post

시스템 디자인 설계 인터뷰 준비

오타, 지적 환영입니다.

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.