성장하는 인삼의 지식 블로그

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 14. 유튜브 설계

1단계. 문제 이해 및 설계 범위 확정 질문 * 어떤 기능이 가장 중요한지 > 비디오 업로드 및 시청 기능 * 어떤 클라이언트를 지원해야 하는지 > 모바일 앱, 웹 브라우저, 스마트TV * 일간 능동 사용자 수는 몇 명인지 > 5백만 * 사용자가 이 제품에 평균적으로 소비하는 시간은? > 30분...

[Book - Clean Code] 13. 동시성 (작성중)

동시성과 깔끔한 코드는 양립하기 어렵다. 동시성이 필요한 이유? 동시성은 coupling을 없애는 전략이다. 즉, 무엇과 언제를 분리하는 전략이다. 스레드가 하나인 프로그램은 무엇과 언제가 서로 밀접하여 호출 스택을 살펴보면 프로그램 상태가 곧바로 드러난다. 무엇과 언제를 분리하면 애플리케이션 구조와 효율이 극적으로 나아진다. 단일 스레드 수...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 13. 검색어 자동완성 시스템

1단계. 문제 이해 및 설계 범위 확정 질문 * 사용자가 입력하는 단어가 자동완성될 검색어의 첫 부분인가? 중간 부분인가? * 자동완성 검색어 n개 표시? * 자동완성 검색어 n개를 고르는 기준은? * 맞춤법 검사 기능도 제공? * 질의는 영어? * 대문자나 특수 문자 처리? * DAU는? 요구사항 빠른 응답 속도 페이스북...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 11. 뉴스 피드 시스템 설계

1단계. 문제 이해 및 설계 범위 확정 질문 * 모바일? 웹? * 중요 기능은? * 뉴스 피드에서의 스토리 순서 기준은? * 최신? topic score? * 가까운 친구? * 한 명의 유저가 가질 수 있는 최대 친구 수는? * 트래픽 규모는? * 피드에 이미지나 비디오 스토리도 올라올 수 있는지? 2단계. 개략적 설계안 제시 및 동...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 10. 알림 시스템 설계

알림 시스템은 단순 히 모바일 푸시 알림에 한정되지 않는다. 알림 시스템은 모바일 푸시 알림, SMS 메시지, 이메일의 세 가지로 분류할 수 있다. 1단계. 문제 이해 및 설계 범위 확정 적절한 질문을 통해 요구 사항이 무엇인지 지원자 스스로 알아내야 한다. 질문1: 이 시스템은 어떤 종류의 알림을 지원해야 하나요? > 푸시 알림, SMS ...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 9. 웹 크롤러 설계

웹 크롤러는 검색 엔진에서 널리 쓰는 기술로, 웹에 새로 올라오거나 갱신된 콘텐츠를 찾아내는 것이 주된 목적이다. 웹 크롤러는 몇 개 웹 페이지에서 시작하여 그 링크를 따라 나가면서 새로운 콘텐츠를 수집한다. 크롤러는 아래와 같이 다양하게 이용된다. 검색 엔진 인덱싱 웹 아카이빙 웹 마이닝 웹 모니터링 1단계. 문제 이해 및 설...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 8. URL 단축기 설계

tiny url 같은 URL 단축기를 설계하는 문제를 풀어보자. 1단계. 문제 이해 및 설계 범위 확정 URL 단축: 주어진 긴 URL을 훨씬 짧게 줄인다. URL redirection: 축약된 URL로 HTTP 요청이 오면 원래 URI로 안내 높은 가용성과 규모 확장성, 장애 감내가 요구됨 개략적 추정 쓰기...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 7. 분산 시스템을 위한 유일 ID 생성기 설계

분산 환경에서 auto_increment 속성이 설정된 기본 키는 통하지 않을 뿐더러, 여러 DB 서버를 쓰는 경우에는 delay를 낮추기가 무척 힘들 것이다. 1단계. 문제 이해 및 설계 범위 확정 시스템 설계 면접 문제를 푸는첫 단계는 적절한 질문ㅇ르 통해 모호함을 없애고 설계 방향을 정하는 것이다. 질문을 할 때는 요구사항을 이해하고 모호함...

[Book - 가상 면접 사례로 배우는 대규모 시스템 설계 기초] 6. 키-값 저장소 설계

키-값 쌍에서의 키는 유일해야 하며, 키는 일반 텍스트일 수도 있고 해시 값일 수도 있다. 성능상의 이유로 키는 짧을수록 좋다. 키-값 쌍에서의 값은 문자열일 수도 있고 리스트일 수도 있고 객체일 수도 있다. 값에는 무엇이 오든 상관하지 않는다. 문제 이해 및 설계 범위 확정 완벽한 설계란 없다. 읽기, 쓰기 그리고 메모리 사용량 사이에 어떤...

© Yn3. Some rights reserved.