읽은 책/[책] 가상 면접 사례로 배우는 대규모 시스템 설계 기초 1권 16

15장. 구글 드라이브 설계

구글 드라이브는 파일 저장 및 동기화 서비스로, 문서, 사진, 비디오, 기타 파일을 클라우드에 보관할 수 있다.해당 파일은 어떤 단말에서도 이용 가능하고 공유도 쉽게한다. 1단계 설계 범위 확정기능 설계파일 추가-> 가장 쉬운 방법은 파일을 구글 드라이브 안으로 떨구는 것파일 다운로드여러 단말에 파일 동기화. -> 하나의 단말에서 파일을 추가하면 다른 단말에도 자동으로 동기화파일 갱신 이력 조회파일 공유파일이 편집된거나 삭제되거나 새롭게 공유되었을 때 알림 표시논의 대상 제외구글 문서 편집 및 협업 기능비기능 설계안전성: 저장소 시스템에서 안전성이 가장 중요빠른 동기화 속도: 파일 동기화에 오랜 시간이 걸리면 사용자는 인내심을 잃는다.네트워크 대역폭: 네트워크 대역폭을 불필요하게 많이 소모규모 확작성: ..

14장.유튜브 설계

1단계 설계 범위 확정요구사항빠른 비디오 업로드원활한 비디오 재생재생 품질 선택 기능낮은 인프라 비용높은 가용성과 규모 확장성 그리고 안정성지원 클라이언트: 모바일 앱, 웹 브라우저 그리고 스마트 TV 개략적 규모 추정일간 능동 사용자 수는 5백만사용자 한 명은 하루에 평균 5개의 비디오를 시청10%의 사용자가 하루에 비디오 한 개 업로드비디오 평균 크기는 300MB비디오 저장을 위해 매일 새로 요구되는 저장 용량 = 5백만 * 10% * 300MB = 150TBCDN 비용CDN에서 나가는 데이터의 양에 따라 과금한다.해당 비용을 줄이는 방향으로 설계 진행 2단계 개략적 설계안기존 클라우드 서비스를 이용해도 좋다.주어진 시간 안에 적절한 기술을 골라 설계를 마치는 것이 중요하다.BLOB 저장소나 CDN을..

13장. 검색어 자동완성 시스템

웹 사이트 검색 창에 단어를 입력하다 보면 입력중인 글자에 맞는 검색어가 자동을 완성된다.이런 기능을 보통 검색어 자동완성이라고 부른다.1단계 설계 범위 확정요구사항빠른 응답 속도: 사용자가 검색어를 입력함에 따라 자동완성 검색어도 충분히 빨리 표시되어야 한다.연관성: 자동완성 되어 출력되는 검색어는 사용자가 입력한 단어와 연관된 것이어야 한다.정렬: 시스템의 계산 결과는 인기도 등의 순위 모델에 의해 정렬되어 있어야 한다.규모 확장성: 시스템은 많은 트랙픽을 감당할 수 있도록 확장 가능해야 한다.고가용성: 시스템의 일부 장애가 발생해도 시스템은 계속 사용 가능해야한다. 개략적 규모측정일간 능동 사용자(DAU)는 천 만명으로 가정평균적으로 한 사용자는 매일 10건의 검색을 수행질의할 떄마다 평균적으로 2..

12장. 채팅 시스템 설계

1단계 설계 범위 확정응답지연이 낮은 일대일 채팅 기능최대 100명까지 참여할 수 있는 그룹 채팅 기능사용자의 접속상태 표시 기능다양한 단말 지원, 하나의 계정으로 여러 단말에 동시 접속 지원푸시 알림 2단계 개략적 설계안 먼저, 채팅을 시작하려는 클라이언트는 네트워크 통신 프로토콜을 사용하여 서비스에 접속한다.대부분의 클라이언트/서버 애플리케이션에서 요청을 보내는 것은 클라이언트(사용자)이다.메세지 송신 클라이언트가 수신  클라이언트에게 전달할 메세지를 채팅 서브시에 보낼 때, HTTP 프로토콜을 사용한다.채팅 서비스와의 접속에는 keep-alive 헤더를 사용하면 효율적이다.=> 클라이언트와 서버 사이의 연결이 끊지 않고 계속 유지할 수 있다.=> TCP 접속 과정에서 발생하는 핸드 쉐이크 횟수도 줄..

11장. 뉴스 피드 시스템 설계

뉴스 피드란?=> 뉴스피드는 홈 페이지 중앙에 지속적으로 업데이트되는 스토리들로, 사용자 상태 정보 업데이터, 사진, 비디오, 링크, 앱 활동 그리고 페이스북에서 팔로하는 사람들, 페이지, 또는 그룹으로부터 나오는 '좋아요' 등을 포함한다.  개략적 설계피드발행 뉴스피드생성 두 가지 부분으로 설계피드 발행사용자가 스토리를 포스팅하면 해당 데이터를 캐시와 데이터베이스에 기록한다. 새 포스팅은 친구의 뉴스 피드에도 전송한다.뉴스 피드 생성지면 관계상 뉴스 피드는 모든 친구의 포스팅을 시간 흐름 역순으로 모아서 만든다고 가정한다. 뉴스 피드 API클라이언트가 서버와 통신하기 위해 사용하는 수단이다.HTTP 프로토콜 기반, 상태 정보를 업데이트, 뉴스 피드를 가져오거나, 친구를 추가하는 등의 작업을 수행그 중 ..

10장. 알림 시스템 설계

알림 시스템은 최신 뉴스, 제품 업데이트, 이벤트 등 고객에게 중요할 만한 정보를 비동기적으로 제공한다.알림 시스템을 설계해보자. 문제 이해 및 설계푸시 알림, SMS 메세지 그리고 이메일가능한 빨리 전달되어야 하지만, 시스템에 부하가 있을 때는 약간의 지연이 무방iOS 단말, 안드로이드 단말, 랩톱/데스크톱 지원클라이언트 애플리케이션, 서버측 스케쥴링알림을 받지 않도록 설정하면 더 이상 알림을 받지 않는다. 개략적 설계iOS 푸시 알림, 안드로이드 푸시 알림, SMS 메세지 그리고 이메일을 지원하는 알림 시스템의 개략적 설계를 살펴보자.알림 유형별 지원 방안연락처 정보 수집 절차알림 전송 및 수신 절차알림 유형별 지원 방안 iOS 푸시 알림알림 제공자: 알림 요청을 만드는 자.- 단말 토큰(device..

9장. 웹 크롤러 설계

웹 크롤러는 로봇 또는 스파이더라고 부른다. 웹 크롤러 사용 용도검색 엔진 인덱싱: 크롤러의 가장 보편적인 사례. 웹 페이지를 모아 검색 엔진을 위한 로컬 인덱스를 만든다. 구글 봇은 구글 검색 엔진이 사용하는 웹 크롤러다.웹 아카이빙: 나중에 사용할 목적으로 장기보관하기 위해 웹에서 정보를 모으는 절차. 국립 도서관이 크롤러를 돌려 웹 사이트를 아카이빙하고 있다.웹 마이닝: 웹 마이닝을 통해 인터넷에서 유용한 지식을 도출해 낼 수 있다. 유명 금융 기업들이 크롤러를 사용해 주주 총회 자료나 연차 보고서를 다운받아 기업의 핵심 사업 방향을 알아낸다.웹 모니터링: 인터넷에서 저작권이나 상표권이 침해되는 사례를 모니터링할 수 있다. 디지마크 사는 웹 크롤러를 사용해 해적판 저작물을 찾아내서 보고한다.문제 이..

8장. URL 단축기 설계

문제 이해 및 설계 범위면접관에게 질문해서 파악한 설계 요구사항쓰기연산: 매일 1억 개의 단축 URL 생성초당 쓰기 연산: 1억개 / 24/ 3600 = 1160읽기 연산: 읽기 연산과 쓰기 연산 비율 10:1초당 읽기 연산: 11,600 회(1160 * 10) 발생URL 단축 서비스를 10년간 운영하면 1억 * 365 * 10 = 3650억 개의 레코드를 보관축약 전 URL 평균 길이는 10010년 동안 필요한 저장 용량 3650억 * 100 바이트 = 36.5TB 개략적 설계안API 엔드포인트, URL 리다이렉션, URL 단축에 대해 살펴본다API 엔드포인트클라이언트는 서버가 제공하는 API 엔드포인트를 통해 통신하고, 엔트포인트는 REST API로 설계 아래 두 가지 API를 설계URL단축용 엔드포..

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

분산 시스템에서 'auto_increment' 속성이 설정된 관계형 데이터베이스의 키는 사용이 어렵다.=> 데이터베이스 서버 한 대로는 감당이 불가능하고, 지연 시간을 낮추기가 힘들다. 문제 이해 및 설계 범위면접관에게 질문해서 파악한 설계 요구사항ID는 유일해야한다.ID는 숫자로만 구성되어야 한다.ID는 64비트로 표현될 수 있는 값이어야 한다.ID는 발급 날짜에 따라 정렬 가능해야한다.ID 초당 10,000개의 ID를 만들 수 있어야 한다. 유일 ID 생성분산 시스템에서 유일성이 보장되는 ID를 만드는 방법다중 마스터 복제(multi-master replication)UUID(Universally Unique Identifier)티켓 서버트위터 스노플레이크(twitter snowflake) 접근법 다..

6장. 키-값 저장소 설계

키-값 저장소(key-value store)는 비관계형 데이터베이스이다. 일반 텍스트 키: "last_loggred_in_at"해시 키: 253DDEC4 키-값 저장소에서 값은 무엇이 오든 상관하지 않는다. 1. 단일 서버 키-값 저장소가장 직관적인 방법 키-값 쌍 전부를 메모리에 해시 테이블로 저장하는 것모든 데이터를 메모리 안에 두는 것이 불가능할 수도 있다는 약점도 있음.해결 방법데이터 압축자주 사용하는 데이터만 메모리에 두고 나머지는 디스크에 저장이렇게 해도, 한대 서버로 부족한 때가 온다. 분산 시스템으로 가자. 2. 분산 키-값 저장소분산 키-값 저장소는 분산 해시 테이블이라고 한다.키-값 쌍을 여러 서버에 분산시키는 탓인데, CAP를 이해해야한다. CAP 정리일관성(consistency): ..