Design Dropbox - Meta Mock interview 기출
글로벌 파일 클라우드 서비스 Dropbox 시스템을 디자인합니다.
문제 이해(Understanding the Problem)
Dropbox란 무엇인가?
Dropbox는 사용자가 파일을 저장하고 공유할 수 있게 해주는 클라우드 기반 파일 저장 서비스입니다. 어디서나, 어떤 기기에서든 파일을 안전하고 신뢰성 있게 저장하고 액세스할 수 있는 방법을 제공합니다.
기능적 요구사항 Functional Requirements
- 사용자는 파일을 업로드 또는 다운로드 할 수 있습니다.
- 사용자는 파일을 링크로 공유할 수 있습니다.
- 사용자는 파일의 접근 권한을 설정할 수 있습니다.
- 사용자는 다양한 기기에서 파일들을 동기화 할 수 있습니다.
비기능적 요구사항 Non-Functional Requirements
시스템은 고가용성을 가져야 하며(일관성보다 가용성을 우선시).
CAP 트레이드 오프를 사고하는 과정을 짚어봅니다.
모든 읽기 요청이 반드시 가장 최근의 쓰기 결과를 받아야만, 시스템이 성립하는 경우에만 가용성보다 일관성을 우선해야 한다는 점을 고려합니다.
예를 들어, 주식거래 서비스 애플리케이션에서 한 사용자가 해외에서 APPL 애플 주식을 매수하고 곧바로 다른 사용자가 미국에서 APPL 주식을 사려고 한다면, 첫번째 거래가 미국 리전에 복제되었음을 보장하기 전까지는 두번째 거래를 진행할 수 없습니다.



