시스템 설계 한 번에 인터뷰 합격하기 - 3주차
탑 셀러 조회기능
1단계: 요구사항분석
- 항목별로 하위 품목이 있고, 이 또한 탑셀러가 적용되야 합니다.
- 가장 많이 팔린 책
- 가장 많이 팔린 공상과학 소설
- 가장 많이 팔린 가전제품
- 가장 많이 팔린 노트북
- 탑 셀러 목록에 대한 기준을 설정합니다.
- 얼마나 최신 데이터를 사용자들에게 보여줘야 할까
- 보통 하루의 한번으로, 굳이 실시간 일 필요는 없다.
- 매출증가를 유발하는 큰 유행이나, 주요 제품의 출시가 있을 경우 더 자주 반영
- 어느 기간동안의 판매량을 탑셀러로 정의할까
- 2주나 1달이나 적당한 기간을 주면 좋을거 같다.
- 카테고리를 추가로 넣어 ex)코로나 시대, 바로크시대, 대항해시대 등 기간별 탑셀러를 추가로 넣으면 더 흥미롭게 다가갈 수 있을 것 같다.
- 여러 식당이 있습니다.
2단계: 설계
설계 포인트
- 요구사항을 명확하게 만들기
- 데이터
- 확장 가능한 시스템을 설계
- 캐싱
시스템 설계 사례
- 데이터 웨어하우스나 데이터 레이크같은 구매정보 DB가 있을것이다. 하지만 여기에 쿼리를 진행하면 마비가 될 수 있다. 그래서 이 DB의 사본을 가져옵니다.
- 대규모 SQL쿼리를 위해 Amazon Athena 또는 고유의 레드시프트 클러스터가 있는게 좋게습니다.
- 매일 수차례 탑셀러를 재 계산하는 오프라인 배치프로세스를 생각합니다.
- 이를 위해 아파치 스파크같이 다중설계가 구축되어 있고, 데이터분석이 가능한것을 이용합니다. 좀 더 단순화를 위해 일레스틱 맵리듀스도 생각해 볼 수 있습니다.
- 웹서버에서 데이터베이스에 접근할 때 초당 수천건의 요청이 이루어 질 수있습니다. 이를 위해서 데이터 베이스 호스트1개를 전담시키고 이 데이터베이스와 웹 서버간 캐시가 필요합니다. 이건 멤캐시드나 레디스같은걸 생각할 수 있습니다.
- 상위 품목 ID의 목록인 키값 데이터뿐이므로 NOSQL유형의 데이터 저장을 사용할수 있을 것입니다.

3단계: 스터디 후 필요한 내용
인터뷰에서 추가로 고려한 내용들
- 캐시 초기 시작 문제
- 아파치 스파크
- 빅데이터 관련 지식
본 스터디는 Udemy의 <【글로벌 Best】 시스템 설계 (System Design) : 한번에 인터뷰 합격하기 (한글자막)> 강의를 활용해 진행됐습니다. 강의에 대한 자세한 정보는 아래에서 확인하실 수 있습니다.
프밍 스터디는 Udemy Korea와 함께 합니다.