SystemDesign

[시스템디자인&인터뷰] 4. 설계 인터뷰 전략

플라즈밍 2023. 3. 23. 19:45
반응형

시스템 디자인 및 디자인

목적 : 기업의 비즈니스 모델에 효율적인 아키텍처를 고안하기 위한 능력 배양 

 

목차

1. 확장 가능한 시스템 설계

2. 알고리즘과 데이터 구조 

3. 빅데이터를 활용한 작업

4. 설계 인터뷰 전략 

5. 모의 설계 인터뷰 

7. 일반적인 기술 인터뷰 팁 

 

ref) 

http://media.sundog-soft.com/SystemDesign/SystemDesign.pdf 

 

 

1. 인터뷰 소프트 스킬 

1.1 요구사항 명확하게 하기

- 의도적으로 문제가 모호한 부분이 있다. 이를 캐치해서 명확하게 결정해야 한다.  

- 어렵게 내면, Youtube를 설계해라 등. 이때 세분화 단계가 필요하다 

- 질문으로 의사소통 하며 , 세부적인 요구사항을 도출 

 

Youtube =  추천 + 콘텐츠 편집 + 채널 + 광고 + 지불 관리 등으로 세부적으로 분리

- 동영상 데이터를 대규모로 저장하고, 스트리밍 문제로 국한 시키자. 

- 하루에 몇개의 동영상이 업로드? 

- 얼마나 큰 용량의 동영상 ? 

- 트래픽은 몇이나 ? 

- 예산을 얼마나 되는가 ? 

 

좋아하는 기술를 먼저 적용시키기보다는, 고객 경험으로 확장하자. 

- 인기 Youtube 영상을 빠르게 판매하려고 한다. 

- CDN 을 어떻게 사용하는지? 

- CDN 에 공급하는 데이터는 어디 있는지? 

- 고객은 전세계 어디에 몰려 있는지, 접속 시간대는 어떻게 되는지? 

- 시스템 설계는 기술적이 측면 뿐 아니라, 고객 경험과 비즈니스 임팩트도 유효해야 한다. 

2. 요구 조건 정의 

2.1 스케일 정의

시스템의 규모에 대한 정의를 내려야 한다. 

- 사용자가 수백명 ? 수천 명? 

- 명확하게 어느정도 규모가 되니, 수평스케일링을 사용해야 한다라고 말해야 한다. 

- 작은 서비스는 하둡 클러스터나, 엘라스틱 서치등이 필요 없다. 

 

2.2 레이턴시 정의

얼마나 빨라야 하는지 SLA 언어로 정의 하자. 

- 예를들어 , 해당 작업은 100ms 이내 99.9% 작동 

- 캐시의 대상을 정의 추천 동영상? 메타 데이터? 영상 설명? 댓글 목록? , 캐시 이후 레이턴시는? 

 

2.3 가용성 정의

 

- 캐시가 다운되었을때 사업에 미치는 임팩트는? , 그렇다면 가용성을 어떻게 줄지

- 가용성을 줄 때, 비용은 얼마나 들지 ? 

- 단일 장애점이 없는지 확인하고 관리하는 방법

- 마스터 노드가 다운 되었을때, 자동으로 바로 교체가 되는지? 

 

Youtube 초당 제공하는 동영상의 수는 ? 

- 합리적으로 추론 해보자. 

- 10억명의 사용자가, 하루 평균 3개의 영상을 본다.

- 그러면 초당 3개의 동영상이 서빙되어야 한다. 

 

3. 설계 전략

소리를 내며 의사소통 하자. 생각은 최대한 적게 

하이 레벨 컴포넌트 부터 시작하자. 

- 클라이언트 > 웹서버 > 추천 서버 > 구매서비스+캐시 & 유사아이템 서비스+캐시 > 구매 DB

- 각 컴포넌트의 크기/가용성

 

설계에 구멍을 내보려고 한다. 

- 구성 요소가 고장 나면 어떻게 되는가?

- 트래픽이 갑자기 증가 / 데이터가 갑자기 증가하면? 

- 크리스마스 시기에 어떻게 확장시킬 것인가? 

- 추가적인 유스케이스가 있을까? 혹은 더 개선시킬 방법은? 최적화 방법은 ? 

반응형