1. 단일 서버 사용자는 도메인 이름을 이여하여 웹사이트에 접속한다. 이 때 접속을 위해 도메인 이름을 DNS에 질의하여 IP주소로 변환해야 한다. DNS 조회 결과로 IP주소가 반환된다. 해당 주소로 HTTP요청이 전달된다. 요청을 받은 웹서버는 HTML페이지나 JSON 형태의 응답을 반환한다. 2. 데이터베이스 사용자가 증가하면 여러 서버를 두어야 ...
6. 무상태(stateless) 윕 계층 웹 계층을 수평적으로 확장하기 위해서는 상태 정보(사용자 세션 데이터)를 웹 계층에서 제거해야 한다. 상태 정보를 RDBMS나 NoSQL 같은 지속성 저장소에 보관하고, 필요할 때 가져오도록 하는 것을 무상태 웹 계층이라 한다. 상태 정보 의존적인 아키테처의 문제점 같은 클라이언트로부터의 요청이 항상 같은 서버로 ...
개락적인 규모 추정은 보편적으로 통용되는 성능 수치상에서 사고 실험을 행하여 추정치를 계산하는 행위로서, 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것이다. 규모 확장성을 표현하는데 필요한 기본기 2의 제곱수 응답지연 값 가용성에 관련된 수치들 2의 제곱수 분산 시스템에서 다루는 데이터의 양에 대한 제대로 된 계산 결과를 얻으려면, 데이터 볼륨의 ...
시스템 설계 면접 시스템 설계 면접은 두명의 동료가 모호한 문제를 풀기 위해 협력하여 그 해결책을 찾아내는 과정에 대한 시뮬레이션이다. 시스템 설계 면접을 통해 보여줘야할 것 지원자의 설계 능력의 기술적 측면 협력에 적합한 사람인지 압박이 심한 상황도 잘 헤쳐 나갈 수 있는지 모호한 문제를 건설적으로 해결할 능력이 있는지 지양해야할 것 설계의 순수성에 ...
처리율 제한 장치 네트워크 시스템에서 처리율 제한 장치(rate limiter)는 클라이언트 또는 서비스가 보내는 트래픽의 처리율(rate)을 제어하기 위한 장치이다. API 요청 횟수가 제한 장치에 정의된 임계치(threshold)를 넘어서면 추가로 도달한 모든 호출은 처리가 중단(block)된다. API에 처리율 제한 장치를 두면 좋은 점 DoS(...
해시 키 재배치(refresh) 문제 N개의 캐시 서버가 있다고 할 때, 이 서버들에 부하를 균등하게 나누는 보편적인 방법은 serverIndex = hash(key) % N와 같은 해시 함수를 사용하는 것이다. 위와 같은 방법은 서버 풀의 개수가 고정되어 있을 때에만 부하를 균등하게 나눌 수 있다. 하지만, 서버가 추가되거나 기존 서버가 삭제된면 해당...
키-값 저장소는 키-값 데이터베이스라고도 불리는 비 관계형 데이터베이스이다. 이 저장소에 저장되는 값은 고유 식별자를 키로 가져야한다. 키와 값 사이의 이런 연결 관계를 "키-값" 쌍이라고 지칭한다. 키는 유일해야 하며 값은 키를 통해서만 접근할 수 있다. 키는 일반 텍스트일 수도 있고 해시값일 수도 있다. 성능 상의 이유로, 키는 짧을 수록 좋다. 값은 ...
유일 ID 생성에 대해 생각해 봤을 때, 관계형 데이터베이스의 auto_increment가 가장 먼저 떠오를 수 있다. 하지만 분산 환경의 데이터베이스 서버에서는 한 대인 경우에 요구를 감당할 수 없을뿐더러, 여러 대의 경우에는 지연 시간을 낮추기가 무척 힘들다. 문제 이해 및 설계 범위 확정 요구사항 ID는 유일해야 한다. ID는 숫자로만 구성되어야 한...
URL 단축기는 아래와 같은 상황에서 주로 사용됩니다. 문자 제한이 있는 Twitter와 같은 소셜 미디어 플랫폼에서 긴 URL은 공간을 너무 많이 차지하여 메시지를 완전히 전달하지 못하는 경우 얼마나 많은 사람들이 링크를 클릭했는지, 어디에서 왔는지, 언제 클릭했는지 알 수 있는 추적 기능을 사용할 경우 문제 이해 및 설계 범위 확정 기본적인 기능 UR...
웹 크롤러는 로봇(robot) 또는 스파이더(spider)라고도 부른다. 검색 엔진에서 널리 쓰는 기술로, 웹에 새로 올라오거나 갱신된 콘텐츠를 찾아내는 것이 주된 목적이다. 웹 크롤러는 몇 개의 웹 페이지에서 시작하여 그 링크를 따라 나가면서 새로운 콘텐츠를 수집한다. 크롤러 활용 사례 검색 엔진 인덱싱 크롤러는 웹 페이지를 모아 검색 엔진을 위한 ...
알림 시스템을 갖춘 애플리케이션은 최신 뉴스, 제품 업데이트, 이벤트, 선물 등 고객에게 중요할 만한 정보를 비동기적으로 제공한다. 알림 시스템은 모바일 푸시 알림, SMS 메시지, 그리고 이메일의 세가지로 분류할 수 있다. 문제 이해 및 설계 범위 확정 푸시 알림, SMS 메시지, 그리고 이메일을 지원해야 한다. 가능한 빨리 알림이 전달되어야 하지만 ...
뉴스 피드란 홈페이지 중앙에 지속적으로 업데이트되는 스토리들로, 사용자 상태 정보 업데이트, 사진, 비디오, 링크, 앱 활동, 그리고 팔로우하는 사람들, 페이지, 또는 그룹으로부터 나오는 좋아요(likes)를 포함한다. 문제 이해 및 설계 범위 확정 모바일 앱과 웹 모두 지원해야 한다. 중요한 기능으로 뉴스 피드 페이지에 새로운 스토리를 올릴 수 있어야 ...
문제 이해 및 설계 범위 확정 모바일, 웹 둘 다 지원해야 한다. 5천만 DAU(Daily Active User)를 처리할 수 있다. 최대 100명까지 참여할 수 있는 그룹 채팅 응답 지연이 낮은 일대일 채팅 사용자의 접속상태 표시 하나의 계정으로 다양한 단말에 동시 접속 지원 푸시 알림 개략적 설계안 제시 및 동의 구하기 채팅 서비스가 제공해야 하는 기...
많이 이용된 검색어 k개를 자동완성하여 출력한는 시스템을 설계해 보도록 하자. 문제 이해 및 설계 범위 확정 요구사항 빠른 응답 속도 연관성 정렬 규모 확장성 고가용성 개략적 규모 측정 일간 능동 사용자(DAU)는 천만명 평균적으로 한 사용자가 매일 10건의 검색을 수행 질의당 평균 20바이트의 데이터 입력 입력마다 클라이언트는 백엔드에 요청하기 때문에...