가상 면접 사례로 배우는 대규모 시스템 설계 기초 14

구글 드라이브 설계

가상 면접 사례로 배우는 대규모 시스템 설계 기초 "구글 드라이브 설계"을 요약한 내용입니다. 1단계 문제 이해 및 설계 범위 확정 파일 추가, 가장 쉬운 방법은 파일을 구글 드라이브 안으로 떨구는 것 파일 다운로드 여러 단말에 파일 동기화, 한 단말에서 파일을 추가하면 다른 단말에도 자동으로 동기화 되어야 함 파일 갱신 이력 조회 파일 공유 파일이 편집되거나 삭제되거나 새롭게 공유되었을 때 알림 표시 이번 장에서는 다음 기능은 논의하지 않을 것 구글 문서 편집 및 협업 기능, 구글 문서는 여러 사용자가 같은 문서를 동시에 편집할 수 있도록 하는데, 이부분은 설계 범위에서 제외 기능적 요구사항 이외에, 비-기능적 요구사항을 이해하는 것도 중요 안정성: 저장소 시스템에서 안정성은 아주 중요하다. 데이터 손..

유튜브 설계

가상 면접 사례로 배우는 대규모 시스템 설계 기초 "유튜브 설계"을 요약한 내용입니다. 1단계 문제 이해 및 설계 범위 확정 빠른 비디오 업로드 원활한 비디오 재생 재생 품질 선택 기능 낮은 인프라 비용 높은 가용성과 규모 확장성, 그리고 안정성 지원 클라이언트: 모바일 앱, 웹브라우저, 그리고 스마트 TV 개략적 규모 추정 일간 능동 사용자(DAU) 수는 5백만 한 자용자는 하루에 평균 5개의 비디오를 시청 10%의 사용자가 하루에 1비디오 업로드 비디오 평균 크기는 300MB 비디오 저장을 위해 매일 새로 요구되는 저장 용량 = 5백만 X 10% X 300MB = 150TB CDN 비용 클라우드 CDN을 통해 비디오를 서비스할 경우 CDN에서 나가는 데이터의 양에 따라 과금 아마존의 클라우드프론트를 ..

검색어 자동완성 시스템

가상 면접 사례로 배우는 대규모 시스템 설계 기초 "검색어 자동완성 시스템"을 요약한 내용입니다. 1단계 문제 이해 및 설계 범위 확정 요구 사항 빠른 응답 속도 사용자가 검색어를 입력함에 따라 자동완성 검색어도 충분히 빨리 표시되어야 한다. 페이스북 검색어 자동완성 시스템에 관한 문서를 보면 시스템 응답속도는 100밀리초 이내여야 한다. 연관성 자동완성이되어 출력되는 검색어는 사용자가 입력한 단어와 연관된 것이어야 한다. 정렬 시스템의 계산 결과는 인기도 등의 순위 모델에 의해 정렬되어 있어야 한다. 규모 확장상 시스템은 많은 트래픽을 감당할 수 있도록 확장 가능해야 한다. 고가용성 시스템의 일부에 장애가 발생하거나 느려지거나 예상치 못한 네트워크 문제가 생겨도 시스템은 계속 사용 가능 해야함 개략적 ..

채팅 시스템 설계

가상 면접 사례로 배우는 대규모 시스템 설계 기초 "채팅 시스템 설계"을 요약한 내용입니다. 1단계 문제 이해 및 설계 범위 확정 응답 지연이 낮은 일대일 채팅 기능 최대 100명까지 참여할 수 있는 그룹 채팅 기능 사용자의 접속상태 표기 기능 다양한 단말 지원, 하나의 계정으로 여러 단말에 동시 접속 지원 푸시 알림 5천만 DAU를 처리할 수 있도록 할 것 2단계 개략적 설계안 제시 및 동의 구하기 채팅 서비스는 아래 기능을 제공 클라이언트로부터 메시지 수신 메시지 수신자 결정 및 전달 수신자가 접속 상태가 아닌 경우에는 접속할 때까지 해당 메시지 보관 폴링 폴링은 클라이언트가 주기적으로 서버에 새 메시지가 있는지 확인 폴링 비용은 폴링을 자주하면 할수록 올라간다 답해줄 메시지가 없는 경우에는 서버 자..

뉴스 피드 시스템 설계

가상 면접 사례로 배우는 대규모 시스템 설계 기초 "뉴스 피드 시스템 설계"을 요약한 내용입니다. 1단계 문제 이해 및 설계 범위 확정 모바일 앱 및 웹 둘다 지원하는 시스템 사용자는 뉴스 피드 페이지에 새로운 스토리를 올릴수 있음 친구들이 올리는 스토리를 볼 수 있어야 함 시간 흐름 역순으로 표시됨 한 명의 사용자는 최대 5000명까지 친구를 가질 수 있음 매일 천만명이 방문 스토리에는 이미지나 비디오 등의 미디어 파일 포함 될 수 있음 2단계 개략적 설계안 제시 및 동의 구하기 피드 말행과 뉴스 피드 생성 두가지부분으로 나눌 수 있음 피드 발행 사용자가 스토리를 포스팅하면 해당 데이터를 캐시와 데이터베이스에 기록 새 포스팅은 친구의 뉴스 피드에도 전송 뉴스 피드 생성 뉴스 피드는 모든 친구의 포스팅을..

알림 시스템 설계

가상 면접 사례로 배우는 대규모 시스템 설계 기초 "알림 시스템 설계"을 요약한 내용입니다. 알림 시스템은 단수히 모바일 푸시 알림에 한정되지 않는다. 알림 시스템은 모바일 푸시 알림, SMS 메세지, 이메일 세가지로 분류 할수 있다. 1단계 문제 이해 및 설계 범위 확정 모바일 푸시 알림, SMS 메시지, 이메일을 보내야함 연성 실시간(Soft Real-Time) 시스템 높은 부하가 걸릴시 약간의 지연은 무방 클라이언트 또는 서버에서 알림을 보낼 수 있음 사용자가 알림을 받지 않도록 설정 할 수 있어야함 하루에 천만건 모바일 푸시, 백만 건의 SMS 메시지, 5백만 건의 이메일 처리 가능 2단계 계략적 설계안 제시 및 동의 구하기 알림 유형별 지원 방안 iOS 푸시 알림 iOS에서 푸시 알림을 보내기 ..

알림 시스템 설계

가상 면접 사례로 배우는 대규모 시스템 설계 기초 "알림 시스템 설계"을 요약한 내용입니다. 알림 시스템은 단수히 모바일 푸시 알림에 한정되지 않는다. 알림 시스템은 모바일 푸시 알림, SMS 메세지, 이메일 세가지로 분류 할수 있다. 1단계 문제 이해 및 설계 범위 확정 모바일 푸시 알림, SMS 메시지, 이메일을 보내야함 연성 실시간(Soft Real-Time) 시스템 높은 부하가 걸릴시 약간의 지연은 무방 클라이언트 또는 서버에서 알림을 보낼 수 있음 사용자가 알림을 받지 않도록 설정 할 수 있어야함 하루에 천만건 모바일 푸시, 백만 건의 SMS 메시지, 5백만 건의 이메일 처리 가능 2단계 계략적 설계안 제시 및 동의 구하기 알림 유형별 지원 방안 iOS 푸시 알림 iOS에서 푸시 알림을 보내기 ..

웹 크롤러 설계

가상 면접 사례로 배우는 대규모 시스템 설계 기초 "웹 크롤러 설계"을 요약한 내용입니다. 웹 크롤러는 로봇(robot) 또는 스파이더(spider)라고 부른다. 검색 엔진에서 널리 쓰는 기술로, 웹에 새로 올라오거나 갱싱된 콘텐츠를 찾아내는 것이 주된 목적 웹 크롤러는 몇 개 웹 페이지에서 시작하여 그 링크를 따라 나가면서 새로운 콘텐츠를 수집한다. 크롤러는 다양하게 이용됨 검색 엔진 인덱싱 웹 페이지를 모아 검색 엔진을 위한 로컬 인덱스를 만든다. 웹 아카이빙 나중에 사용할 목적으로 장기보관하기 위해 웹에서 정보를 모으는 절차 웹 마이닝 인터넷에서 유용한 지식을 도출 해낼 수 있다. 웹 모니터링 인터넷 저작권이나 상표권이 침해되는 사례를 모니터링 할 수 있다. 1단계 문제 이해 및 설계 범위 확정 웹..

URL 단축기 설계

가상 면접 사례로 배우는 대규모 시스템 설계 기초 "URL 단축기 설계"을 요약한 내용입니다. 1단계 문제 이해 및 설계 범위 확정 URL 단축: 주어진 긴 URL을 훨씬 짧게 줄인다. URL 리디렉션(redirection): 축약된 URL로 HTTP 요청이 오면 원래 URL로 안내 높은 가용성과 규모 확장성, 그리고 장애 감내가 요구됨 개략적 추정 쓰기 연산: 매일 1억 개의 단축 URL 생성 초당 쓰기 연산: 1억 / 24 / 3600 = 1160 읽기 연산: 읽기 연산과 쓰기 연산 비율은 10:1이라고 하자. 그 경우 읽기 연산은 초당 11,600회 발생 URL 단축 서비스를 10년간 운영한다고 가정하면 1억 x 365 x 10 = 3650억 개의 레코드를 보관 해야함 축약 전 URL의 평균 길이는..

분산 시스템을 위한 유일 ID 생성기 설계

가상 면접 사례로 배우는 대규모 시스템 설계 기초 "분산 시스템을 위한 유일 ID 생성기 설계"을 요약한 내용입니다. 분산 시스템에서 사용될 유일ID 생성기를 설계 해보자 auto_increment 속성은 분산 환경에서 사용하기가 어렵다 서버 한대로 사용하지도 않고 지연시간을 낮추기가 무척 힘들 것이기 때문에 문제 이해 및 설계 범위 확정 ID는 유일 해야한다. ID는 숫자로만 구성되어야 한다. ID는 64비트로 표현될 수 있는 값이어야 한다. ID는 발급 날짜에 따라 정렬 가능해야 한다. 초당 10,000개의 ID를 만들 수 있어야 한다. 계략적 설계안 제시 및 동의 구하기 분산 시스템에서 유일성이 보장되는 ID를 만드는 방법은 여러가지만 다음과 같은 선택지를 살펴보자 다중 마스터 복제 UUID 티켓 ..