독서/가상 면접 사례로 배우는 대규모 시스템 설계 기초13 7장. 분산 시스템을 위한 유일 ID 생성기 설계 분산 시스템에서 사용될 유일 ID 생성기를 설계해 볼 때 auto_increment 속성이 설정된 관계형 데이터베이스의 기본 키를 쓰면 되지 않을까? 라는 생각을 할 수 있다. 하지만 분산 환경에서 이 접근법은 통하지 않는다. 데이터베이스 서버 한 대로는 그 요구를 감당할 수 없을 뿐더러, 여러 데이터베이스 서버를 쓰는 경우에는 지연시간을 낮추기가 어렵기 때문이다. 1단계 문제 이해 및 설계 범위 확정 시스템 설계 면접 문제를 푸는 첫 단계는 적절한 질문을 통해 모호함을 없애고 설계 방향을 정하는 것이다. 다음과 같은 요구사항이 있다고 가정한다. ID는 유일해야한다. ID는 숫자로만 구성되어야 한다. ID는 64비트로 표현될 수 있는 값이어야 한다. ID는 발급 날짜에 따라 정렬 가능해야 한다. 초당 1.. 2023. 12. 8. 6장. 키-값 저장소 설계 키-값 저장소는 키-값 데이터베이스라고도 불리는 비 관계형 데이터베이스이다. 이 저장소에 저장되는 값은 고유 식별자를 키로 가져와야 한다. 키와 값 사이의 이런 연결 관계를 "키-값" 쌍이라고 지칭한다. 키-값 쌍에서의 키는 유일해야 하며 해당 키에 매달린 값은 키를 통해서만 접근할 수 있다. 키는 일반 텍스트일 수 있고 해시 값일 수도 있다. 성능상의 이유로, 키는 짧을수록 좋다. 일반 텍스트 키 : "last_logged_in_at" 해시 키 : 253DDEC4 키-값 쌍에서의 값은 문자열일 수도 있고 리스트일 수도 있고 객체일 수도 있다. 키 값 저장소는 보통 값으로 무엇이 오든 상관하지 않는다. 키 값 저장소로 널리 알려진 것으로는 아마존 다이나모, memcached, 레디스 같은 것들이 있다. .. 2023. 12. 6. 5장. 안정 해시 설계 수평적 규모 확장성을 달성하기 위해서는 요청 또는 데이터를 서버에 균등하게 나누는 것이 중요하다. 안정 해시는 이 목표를 달성하기 위해 보편적으로 사용하는 기술이다. 해시 키 재배치(rehash) 문제 N개의 캐시 서버가 가정할 때, 이 서버들에 부하를 균등하게 나누는 보편적 방법은 아래의 해시 함수를 사용하는 것이다. serverIndex = hash(key) % N(N은 서버의 개수) 총 4개의 서버를 사용한다고 해보자. 키 해시 해시 % 4 (서버 인덱스) key0 18358617 1 key1 26143584 0 key2 181311146 2 key3 35863496 0 key4 34085809 1 key5 27581703 3 key6 38164978 2 key7 22530351 3 특정한 키가 보.. 2023. 12. 6. 4장. 처리율 제한 장치의 설계 처리율 제한장치 : 클라이언트 또는 서비스가 보내는 트래픽의 처리율(rate)을 제어하기 위한 장치 HTTP를 예로 들면 이 장치는 특정 기간 내에 전송되는 클라이언트의 요청 횟수를 제한한다. API 요청 횟수가 제한 장치에 정의된 임계치를 넘어서면 추가로 도달한 모든 호출은 중단된다. API에 처리율 제한 장치를 두면 좋은 점추가 요청에 대해서 처리를 중단함으로 써 DoS 공격에 의한 자원 고갈을 방지할 수 있다.추가 요청에 대한 처리를 제한하면 서버를 많이 두지 않아도 되고, 우선순위가 높은 API에 더 많은 자원을 할당할 수 있어 비용을 절감할 수 있다.봇(bot)에서 오는 트래픽이나 사용자의 잘못된 이용 패턴으로 유발된 트래픽을 걸러내서 서버 과부하를 막을 수 있다. 1단계. 문제 이해 및 설계 .. 2023. 11. 30. 이전 1 2 3 4 다음