[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 15. 구글 드라이브 설계
구글 드라이브는 파일 저장 및 동기화 서비스로, 문서, 사진, 비디오, 기타 파일을 클라우드에 보관할 수 있도록 한다. 이 파일은 컴퓨터, 스마트폰, 태블릿 등 어떤 단말에서도 이용 가능해야 한다. 아울러 보관된 파일은 친구, 가족, 동료 들과 손쉽게 공유할 수 있어야 한다. 1단계. 문제 이해 및 설계 범위 확정 * 가장 중요하게 지원해야 할...
구글 드라이브는 파일 저장 및 동기화 서비스로, 문서, 사진, 비디오, 기타 파일을 클라우드에 보관할 수 있도록 한다. 이 파일은 컴퓨터, 스마트폰, 태블릿 등 어떤 단말에서도 이용 가능해야 한다. 아울러 보관된 파일은 친구, 가족, 동료 들과 손쉽게 공유할 수 있어야 한다. 1단계. 문제 이해 및 설계 범위 확정 * 가장 중요하게 지원해야 할...
1단계. 문제 이해 및 설계 범위 확정 질문 * 어떤 기능이 가장 중요한지 > 비디오 업로드 및 시청 기능 * 어떤 클라이언트를 지원해야 하는지 > 모바일 앱, 웹 브라우저, 스마트TV * 일간 능동 사용자 수는 몇 명인지 > 5백만 * 사용자가 이 제품에 평균적으로 소비하는 시간은? > 30분...
동시성과 깔끔한 코드는 양립하기 어렵다. 동시성이 필요한 이유? 동시성은 coupling을 없애는 전략이다. 즉, 무엇과 언제를 분리하는 전략이다. 스레드가 하나인 프로그램은 무엇과 언제가 서로 밀접하여 호출 스택을 살펴보면 프로그램 상태가 곧바로 드러난다. 무엇과 언제를 분리하면 애플리케이션 구조와 효율이 극적으로 나아진다. 단일 스레드 수...
1단계. 문제 이해 및 설계 범위 확정 질문 * 사용자가 입력하는 단어가 자동완성될 검색어의 첫 부분인가? 중간 부분인가? * 자동완성 검색어 n개 표시? * 자동완성 검색어 n개를 고르는 기준은? * 맞춤법 검사 기능도 제공? * 질의는 영어? * 대문자나 특수 문자 처리? * DAU는? 요구사항 빠른 응답 속도 페이스북...
채팅 앱이라고 했을 때 일대일 채팅 앱일 수도, 그룹 채팅 앱일 수도 있으니 설계할 때 기능 요구사항을 확실히 알아두도록 하자. 1단계. 문제 이해 및 설계 범위 확정 1:1 채팅 Facebook messenger WeChat WhatsApp 그룹 채팅 Slack ...
1단계. 문제 이해 및 설계 범위 확정 질문 * 모바일? 웹? * 중요 기능은? * 뉴스 피드에서의 스토리 순서 기준은? * 최신? topic score? * 가까운 친구? * 한 명의 유저가 가질 수 있는 최대 친구 수는? * 트래픽 규모는? * 피드에 이미지나 비디오 스토리도 올라올 수 있는지? 2단계. 개략적 설계안 제시 및 동...
알림 시스템은 단순 히 모바일 푸시 알림에 한정되지 않는다. 알림 시스템은 모바일 푸시 알림, SMS 메시지, 이메일의 세 가지로 분류할 수 있다. 1단계. 문제 이해 및 설계 범위 확정 적절한 질문을 통해 요구 사항이 무엇인지 지원자 스스로 알아내야 한다. 질문1: 이 시스템은 어떤 종류의 알림을 지원해야 하나요? > 푸시 알림, SMS ...
웹 크롤러는 검색 엔진에서 널리 쓰는 기술로, 웹에 새로 올라오거나 갱신된 콘텐츠를 찾아내는 것이 주된 목적이다. 웹 크롤러는 몇 개 웹 페이지에서 시작하여 그 링크를 따라 나가면서 새로운 콘텐츠를 수집한다. 크롤러는 아래와 같이 다양하게 이용된다. 검색 엔진 인덱싱 웹 아카이빙 웹 마이닝 웹 모니터링 1단계. 문제 이해 및 설...
tiny url 같은 URL 단축기를 설계하는 문제를 풀어보자. 1단계. 문제 이해 및 설계 범위 확정 URL 단축: 주어진 긴 URL을 훨씬 짧게 줄인다. URL redirection: 축약된 URL로 HTTP 요청이 오면 원래 URI로 안내 높은 가용성과 규모 확장성, 장애 감내가 요구됨 개략적 추정 쓰기...
분산 환경에서 auto_increment 속성이 설정된 기본 키는 통하지 않을 뿐더러, 여러 DB 서버를 쓰는 경우에는 delay를 낮추기가 무척 힘들 것이다. 1단계. 문제 이해 및 설계 범위 확정 시스템 설계 면접 문제를 푸는첫 단계는 적절한 질문ㅇ르 통해 모호함을 없애고 설계 방향을 정하는 것이다. 질문을 할 때는 요구사항을 이해하고 모호함...