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

15 posts

15장 구글 드라이브 설계

가상면접으로 배우는 대규모 시스템 설계 기초 15장 구글 드라이브 설계 블록 저장소 서버 큰 파일 업데이트시 해결방법 델타 동기화 : 수정이 일어난 블록만 동기화 압축 : 블록단위로 압축하면 크기를 많이 줄일수 있다 높은 일관성 요구사항 ACID 를 지원하는 데이터베이스 선택 알림 서비스 롱폴링 : 드랍박스 웹소켓 저장소

1 min read

14장 유튜브 설계

가상면접으로 배우는 대규모 시스템 설계 기초 14장 유튜브 설계 비디오 트렌스 코딩 비디오 트랜스 코딩의 중요성 가공되지 않은 원본 비디오는 저장 공간을 많이 차지한다 상당수의 단말과 브라우저는 특정 종류의 비디오 포멧만 지원한다 사용자에게 끊김 없는 고화질 비디오 재생을 보장하려면 네트워크 대역폭에 따라 다른 화질을 보

2 min read

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

가상면접으로 배우는 대규모 시스템 설계 기초 13장 검색어 자동완성 시스템 트라이 자료구조 트리형태의 자료구조 트리의 루트노드는 빈문자열을 나타낸다 각 노드는 글자 하나를 저장하며 26개의 자식 노드를 가질수 있다 각 트리노드는 하나의 단어 또는 접두어 문자열을 나타낸다 성능 향샹 접두어 길이 제한 노드의 인기 검색어 캐

1 min read

12장 채팅 시스템 설계

가상면접으로 배우는 대규모 시스템 설계 기초 12장 채팅 시스템 설계 메시지 수신 시나리오 폴링 : 주기적으로 서버에 물어 보는 방법 단점 서버에 응답이 없어도 물어봐야 되어서 자원이 낭비됨 롱폴링 : 새메시지를 반환 하거나 타임아웃이 될때 까지 대기 단점 메시지를 보내는 클라이언트와 수신하는 클라이언트가 같은 채팅 서버

2 min read

11장 뉴스 피드 시스템 설계

가상면접으로 배우는 대규모 시스템 설계 기초 11장 뉴스 피드 시스템 설계 피드 발행 : 피드를 생성하면 데이터 베이스에 저장하고 새 포스팅은 친구들의 뉴스피드에도 전송 된다 뉴스 피드 생성 : 모든 친구의 포스팅을 시간 흐름 역순으로 모아서 만든다 팬아웃 : 어떤 사용자의 새 포스팅을 그 사용자와 친구관계에 있는 모든

3 min read

10장 알림 시스템 설계

가상면접으로 배우는 대규모 시스템 설계 기초 10장 알림 시스템 설계 알림 시스템 모바일 푸시 알림 SMS 메시지 이메일 알림 유형별 지원 방안 IOS 푸시 알림 알림 제공자 : 애플 푸시 알림 서비스(APNS) 단말 토큰 페이로드 APNS : 애플이 제공하는 원격 서비스 IOS 단말 안드로이드 푸시 알림 FCM : fi

2 min read

9장 웹 크롤러 설계

가상면접으로 배우는 대규모 시스템 설계 기초 9장 웹 크롤러 설계 웹 크롤러는 로봇 또는 스파이더라고도 부른다 검색엔진에 널리 쓰이는 기술로 웹에 새로 올라오거나 갱신된 컨텐츠를 찾는것이 주된 일이다. 크롤러의 용도 검색 엔진 인덱싱 웹 아카이빙 웹 마이닝 웹 모니터링 크롤러의 속성 규모 확장성 안정성 예절 확장성 시작

4 min read

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

가상면접으로 배우는 대규모 시스템 설계 기초 7장 분산 시스템을 위한 유일 ID 생성기 설계 분산 시스템에서 유일성이 보장되는 id를 만드는 방법 다중 마스터 복제(multi master replication) 데이터 베이스의 auto increment 기능을 활용함, 서버 마다 증가하는 값을 다르게 셋팅함 단점 여러 데

4 min read

6장 키-값 저장소 설계

가상면접으로 배우는 대규모 시스템 설계 기초 6장 키 값 저장소 설계 키 값 저장소는 키 값 데이터베이스라고도 불리는 비관계형 데이터베이스다 키는 유일해야 되며 성능상의 이슈로 키는 짧을수록 좋다 값은 보통 무엇이 오던 상관하지 않는다 분산 키 값 저장소는 분산 해시 테이블이라고도 불린다. CAP 정리 데이터 일관성(co

6 min read

5장 안정 해시 설계

가상면접으로 배우는 대규모 시스템 설계 기초 5장 안정 해시 설계 수평적 규모 확장성을 달성하기 위해서 요청 또는 데이터를 서버에 균등하게 나누는게 중요하다 해시키 재배치 문제 n개의 캐시서버의 부하를 균등하게 나누는 보편적인 방법은 serverindex = hash(key) % n(서버 갯수) 위에 방법은 서버 풀이 고

4 min read

4장 처리율 제한 장치 설계

가상면접으로 배우는 대규모 시스템 설계 기초 4장 처리율 제한 장치 설계 토큰 버킷 알고리즘 인자 버킷 크기 토큰 공급율 장점 구현이 쉽다 메모리 사용 측면에서도 효율적이다. 짧은 시간에 집중되는 트래픽도 처리가능하다 단점 버킷 크기와 토큰 공급률이라는 두개의 인자를 가지고 있는데 이값을 적절하게 튜닝하는게 어렵다. 누출

8 min read

3장 시스템 설계 면접 공략법

가상면접으로 배우는 대규모 시스템 설계 기초 3장 시스템 설계 면접 공략법 효과적 면접을 위한 4단계 접근법 문제 이해 및 설계 범위 확정 깊이 생각하고 질문하여 요구사항과 가정들을 분명히 하라 구체적으로 어떤 기능들을 만들어야 하나? 제품 사용자 수는 얼마나 되나? 회사의 규모는 얼마나 빨리 커지리라 예상되나? 회사가

3 min read

2장 개략적인 규모 추정

가상면접으로 배우는 대규모 시스템 설계 기초 2장 개략적인 규모 추정 2의 제곱수 : 데이터 볼륨의 단위 1바이트, 1킬로바이트, 1메가바이트... 응답 지연값 : 구글의 제프 딘이 응답지연값을 공개한것이 있다. 메모리는 빠르지만 디스크는 아직도 느리다 디스크 탐색(seek)는 가능한 피하라 단순한 압축 알고리즘은 빠르다

2 min read

1장 사용자 수에 따른 규모 확장성

가상면접으로 배우는 대규모 시스템 설계 기초 1장 사용자 수에 따른 규모 확장성 단일 서버 데이터베이스 분리 수평적 확장 vs 수직적 확장 수직적 확장 : 스케일업 단점 : 한계가 존재함, 장애 복구에 대한 방안이나 다중화 방안을 제시하지 않는다. 수평적 확장 : 스케일 아웃 로드벨런서 : L2(Data link 계층을

6 min read