Study/대규모 시스템 설계 기초
-
문제 이해 및 설계 범위 확정시스템 설계 면접 문제는 의도적으로 어떤 정해진 결말을 갖지 않도록 만들어진다.면접장에서 시스템을 성공적으로 설계해 내려면 질문을 통해 모호함을 줄이고 요구사항을 알아내야 한다. 시스템의 기본적 기능URL 단축URL 리디렉션높은 가용성과 규모 확장성, 그리고 장애 감내 개략적 추정쓰기 연산 : 매일 1억 개의 단축 URL 생성초당 쓰기 연산 : 1억 % 24시간 % 3600초 = 1160읽기 연산 : 쓰기 연산의 10배라 가정 = 11600URL 단축 서비스를 10년간 운영한다고 가정 : 1억 * 365일 * 10년 = 3650억 개의 레코드 보관축약 전 URL의 길이 100byte라고 가정10년 동안 필요한 저장 용량 3650억 * 100byte = 36.5TB개략적 설계안..
URL 단축기 설계문제 이해 및 설계 범위 확정시스템 설계 면접 문제는 의도적으로 어떤 정해진 결말을 갖지 않도록 만들어진다.면접장에서 시스템을 성공적으로 설계해 내려면 질문을 통해 모호함을 줄이고 요구사항을 알아내야 한다. 시스템의 기본적 기능URL 단축URL 리디렉션높은 가용성과 규모 확장성, 그리고 장애 감내 개략적 추정쓰기 연산 : 매일 1억 개의 단축 URL 생성초당 쓰기 연산 : 1억 % 24시간 % 3600초 = 1160읽기 연산 : 쓰기 연산의 10배라 가정 = 11600URL 단축 서비스를 10년간 운영한다고 가정 : 1억 * 365일 * 10년 = 3650억 개의 레코드 보관축약 전 URL의 길이 100byte라고 가정10년 동안 필요한 저장 용량 3650억 * 100byte = 36.5TB개략적 설계안..
2025.02.28 -
문제 이해 및 설계 범위 확정질문을 통해 모호함을 없애라요구사항ID는 유일ID는 숫자로만 구성ID는 64비트로 표현될 수 있는 값ID는 발급 날짜에 따라 정렬 가능초당 10,000개의 ID 생성 가능해야 한다. 개략적 설계안 제시 및 동의 구하기분산 시스템에서 유일성이 보장되는 ID를 만드는 방법은 여러 가지다.각각의 선택지를 알아보자. 다중 마스터 복제데이터베이스의 auto_increment 기능을 활용하는 것 다만, ID값을 구할 때 1만큼 증가시키는 게 아니라 k만큼 증가시킨다단점시간의 흐름에 맞추어 커지도록 보장할 수 없다 -> 하나의 서버에 요청이 몰린 이후에 다른 서버에 요청이 가면 이후 시간인데도 더 작은 값을 가질 수 있을 것 같다서버를 추가하거나 삭제할 때도 잘 동작하도록 만들기 어렵다..
분산 시스템을 위한 유일 ID 생성기 설계문제 이해 및 설계 범위 확정질문을 통해 모호함을 없애라요구사항ID는 유일ID는 숫자로만 구성ID는 64비트로 표현될 수 있는 값ID는 발급 날짜에 따라 정렬 가능초당 10,000개의 ID 생성 가능해야 한다. 개략적 설계안 제시 및 동의 구하기분산 시스템에서 유일성이 보장되는 ID를 만드는 방법은 여러 가지다.각각의 선택지를 알아보자. 다중 마스터 복제데이터베이스의 auto_increment 기능을 활용하는 것 다만, ID값을 구할 때 1만큼 증가시키는 게 아니라 k만큼 증가시킨다단점시간의 흐름에 맞추어 커지도록 보장할 수 없다 -> 하나의 서버에 요청이 몰린 이후에 다른 서버에 요청이 가면 이후 시간인데도 더 작은 값을 가질 수 있을 것 같다서버를 추가하거나 삭제할 때도 잘 동작하도록 만들기 어렵다..
2025.02.23 -
키-값 저장소는 키-값 데이터베이스라고도 불리는 비 관계형 데이터베이스이다. 이 저장소에 저장되는 값은 고유 식별자를 키로 가져야 한다. 키와 값 사이의 이런 연결 관계를 "키-값" 쌍이라고 지칭한다. 키는 유일해야 한다 값은 키를 통해서만 접근할 수 있다키는 일반 텍스트일 수도 있고 해시값일 수도 있다성능 상의 이유로, 키는 짧을수록 좋다값은 문자열일수도, 리스트일 수도, 객체일 수도 있다ex) 아마존 다이나모, memcached, 레디스 등시스템 컴포넌트 이번 절에서는 키-값 저장소 구현에 사용될 핵심 컴포넌트들 및 기술들을 살펴볼 것이다 데이터 파티션 대규모의 애플리케이션의 경우, 전체 데이터를 작은 파티션으로 분할한 다음 여러 대의 서버에 저장해야 한다. 데이터를 파티션 단위로 나눌 때 다음 문제..
키-값 저장소 설계키-값 저장소는 키-값 데이터베이스라고도 불리는 비 관계형 데이터베이스이다. 이 저장소에 저장되는 값은 고유 식별자를 키로 가져야 한다. 키와 값 사이의 이런 연결 관계를 "키-값" 쌍이라고 지칭한다. 키는 유일해야 한다 값은 키를 통해서만 접근할 수 있다키는 일반 텍스트일 수도 있고 해시값일 수도 있다성능 상의 이유로, 키는 짧을수록 좋다값은 문자열일수도, 리스트일 수도, 객체일 수도 있다ex) 아마존 다이나모, memcached, 레디스 등시스템 컴포넌트 이번 절에서는 키-값 저장소 구현에 사용될 핵심 컴포넌트들 및 기술들을 살펴볼 것이다 데이터 파티션 대규모의 애플리케이션의 경우, 전체 데이터를 작은 파티션으로 분할한 다음 여러 대의 서버에 저장해야 한다. 데이터를 파티션 단위로 나눌 때 다음 문제..
2024.07.02 -
수평적 규모 확장성을 달성하기 위해서는 요청 또는 데이터를 서버에 균등하게 나누는 것이 중요하다.안정 해시는 이 목표를 달성하기 위해 보편적으로 사용하는 기술이다. 보편적인 해시 함수와 문제점N개의 서버가 있을 때, 부하를 균등하게 나누기 위해 해시 함수 사용 serverIndex = hash(key) % N(서버의 개수) hash(key0) % 4 = 1인 경우, 클라이언트가 캐시에 보관된 데이터를 가져오기 위해 서버 1에 접속 서버 풀(server pool) 크기가 고정되어 있고, 데이터 분포가 균등할 때 잘 동작한다.하지만 서버가 추가되거나 기존 서버가 삭제되면 문제가 생긴다.1번 서버 장애 -> 1번 동작 중지 -> 서버 풀 크기 3 변경 -> 나머지 서버 인덱스 값들이 달라짐대규모 캐시 미스(c..
안정 해시 설계(hash ring)수평적 규모 확장성을 달성하기 위해서는 요청 또는 데이터를 서버에 균등하게 나누는 것이 중요하다.안정 해시는 이 목표를 달성하기 위해 보편적으로 사용하는 기술이다. 보편적인 해시 함수와 문제점N개의 서버가 있을 때, 부하를 균등하게 나누기 위해 해시 함수 사용 serverIndex = hash(key) % N(서버의 개수) hash(key0) % 4 = 1인 경우, 클라이언트가 캐시에 보관된 데이터를 가져오기 위해 서버 1에 접속 서버 풀(server pool) 크기가 고정되어 있고, 데이터 분포가 균등할 때 잘 동작한다.하지만 서버가 추가되거나 기존 서버가 삭제되면 문제가 생긴다.1번 서버 장애 -> 1번 동작 중지 -> 서버 풀 크기 3 변경 -> 나머지 서버 인덱스 값들이 달라짐대규모 캐시 미스(c..
2024.06.21