가상 면접 사례로 배우는 대규모 시스테 설계 기초를 읽고 정리한 내용입니다. 자세한 부가설명이 궁금하시면 보시는걸 추천드립니다. 일단 한대 서버에서 실행되는 간단한 시스템부터 시작해보자 1단계 - 웹 앱, 데이터베이스, 캐시 모두 서버 한대인 구조 2단계 - 웹/
효과적인 규모 추정을 위해서는 아래와 같은 기본 수치들을 잘 이해하고 있어야 한다.데이터 볼륨이 2의 제곱수로는 어떻게 표현되는지 (예 kb는 2의 10제곱)응답지연 값 (예 디스크 탐색은 10ms)가용성 관련 수치 시스템이 오랜 시간동안 지속적으로 중단 없이 운영될
처리율 제한 장치란? 클라이언트 또는 서비스가 보내는 트래픽 처리율을 제어하기 위한 장치이다. 예를 들면 특정 기간내에 전송되는 클라이언트의 요청 횟수를 제한한다. 추가로 도달한 모든 호출은 block 된다. 처리율 제한 장치의 장점 dos공격에 의한 자원 고갈을 방
데이터를 서버에 균등 배분하기 위해서 주로 사용되는 기술 수평적 규모 확작성을 달성하기 위해서는 매우 중요하다 서버의 부하를 균등하게 나누는 가장 보편적인 방법 hash(key) % N (서버의 갯수) 단점 해시 키 재배치 문제 서버 추가 또는 삭제로 갯수의 변경
그냥 관계형 디비의 auto increment 쓰면 어떨까? 데이터베이스 서버 한대로는 요구를 감당할 수 없다. (분산 환경에서는 데이터 양이 많아서 한대로는 감당이 안된다는 뜻?) 여러 데이터베이스 서버를 쓰는 경우에는 지연 시간을 낮추기 무척 힘들다. (어떤 지연
키-값 저장소란? 키-값 데이터베이스 라고도 불림 저장되는 모든 값은 고유 식별자를 키로 가져야 함 해당 키에 매달린 값은 키를 통해서만 접근 가능 키는 텍스트 or 해시 값일 수 있다 (성능상 짧을수록 좋다.) 일반 텍스트키 - "lastloggedin_at"
문제 이해 및 설계 범위 확정 시스템 설계 면접 문제는 정해진 결말을 없다. 그래서 질문을 통해 모호함을 줄이고 요구사항을 알아내야 한다. 기본적 기능 긴 URL 단축 기능 URL redirection 높은 가용성과 규모 확장성 그리고 장애 감내 개략적 추정 쓰기
웹 크롤러 란? 로봇 또는 스파이더라고 불림 웹에 새로 올라오거나 갱신된 콘텐츠(이미지, 비디오, PDF, 웹 페이지 등)를 찾아내는 것이 주된 목적 몇 개 웹페이지에서 시작해여 그 링크를 따라 나가면서 새로운 컨텐츠를 수집한다. 사용처 검색 엔진 인덱싱: 웹 페이
푸시, sms, email연성 실시간 시스템 (soft real-time)이라 가정합니다. 가능한 빨리 알림이 전달되어야 하지만 시스템에 높은 부하가 걸렸을때 약간의 지연은 무방하다.ios, android, laptop, desktopclient 애플리케이션 또는 서버
모바일 앱, 웹뉴스 피드 페이지에 새로운 스토리를 올릴 수 있어야 하고, 친구들이 올리는 스토리를 볼 수 있어야 함시간 흐름 역순 즉 최신 순 5000명10 million daily네POST /v1/me/feedbody에 포스팅 내용, Authorization헤더에 A
1:1 과 그룹 채팅 모두 지원 하는 앱둘다 지원DAU 5천만최대 100명1:1 채팅, 그룹 채팅, 사용자 접속 상태 표시, 텍스트 메시지만 가능100,000자 이하현재는 필요없다. 나중에 시간이 남으면 논의 가능영원히클라이언트와 서버와의 통신 방법에 대한 기본적인 지