본문 바로가기

System Design18

7장 분산 시스템을 위한 유일 ID 생성기 설계 가상 면접 사례로 배우는 대규모 시스템 설계 기초 – System Design Interview 7장 분산 시스템을 위한 유일 ID 생성기 설계 어떻게 유일 ID 생성기를 설계할 것인가. 단일 서버라면 auto_increment 속성을 설정해도 좋을 것이다. 그러나 분산 시스템에서는 문제가 달라지게 된다. 1단계 문제 이해 및 설계 범위 확정 이번 장에서 만족해야할 요구사항는 다음과 같다. - ID는 유일해야 한다. - ID는 64비트로 표현될 수 있는 값이어야 한다. - ID는 발급 날짜에 따라 정렬 가능해야 한다. - 초당 10,000개의 ID를 만들 수 있어야 한다. * 참고 여기서 64비트는 8바이트 이고 이는 Mysql을 기준으로 생각해보았을 때 bigint 타입이다. https://dev.my.. 2023. 6. 6.
6장 키-값 저장소 설계 - 데이터 일관성 가상 면접 사례로 배우는 대규모 시스템 설계 기초 – System Design Interview 6장 키-값 저장소 설계 - 데이터 일관성 데이터 일관성 여러 노드에 다중화된 데이터는 적절히 동기화가 되어야 한다. 정족수 합의(Quorum Consensus) 프로토콜을 사용하면 읽기/쓰기 연산 모두에 일관성을 보장할 수 있다. * 정족수 : 여러 사람의 합의로 운영되는 의사기관에서 의결을 하는데 필요한 최소한의 참석자 수 기호 정의 정리 N = 사본 개수. W = 쓰기 연산에 대한 정족수. (쓰기 연산이 성공한 것으로 간주되려면 적어도 W개의 서버로부터 쓰기 연산이 성공했다는 응답을 받아야 한다.) R = 읽기 연산에 대한 정족수. 읽기 연산이 성공한 것으로 간주되려면 적어도 R개의 서버로부터 응답을 받.. 2023. 6. 1.
6장 키-값 저장소 설계 가상 면접 사례로 배우는 대규모 시스템 설계 기초 – System Design Interview 6장 키-값 저장소 설계 도입 키-값 저장소(key-value store)는 키-값 데이터베이스라고도 불리는 비 관계형(non-relational) 데이터베이스 이다. 이 저장소에 저장되는 값은 고유 식별자(identifier)를 가져야 한다. 키와 값 사이의 이런 연결 관계를 “키-값” 쌍(pair)이라고 지칭한다. 키는 짧을수록 좋다. 키-값 저장소로 널리 알려진 것으로는 아마존 다이나모 memcached redis 같은 것들이 있다. 이번 장에서는 다음 연산을 지원하는 키-값 저장소를 설계한다. put(key, value): 키-값 쌍을 저장소에 저장한다. get(key): 인자로 주어진 키에 매달린 값.. 2023. 6. 1.
5장 안정 해시 설계 가상 면접 사례로 배우는 대규모 시스템 설계 기초 – System Design Interview 5장 안정 해시 설계 해시 키 재배치 (rehash) 문제 N개의 캐시 서버가 있다고 하자. 이 서버들에 부하를 균등하게 나누는 보편적 방법은 아래의 해시 함수를 사용하는 것이다. serverIndex = hash(key) % N * N은 서버의 개수 이 때 생길 수 있는 문제 서버가 추가되거나 기존 서버가 삭제되었을 경우 N 값이 바뀜 -> 대규모 캐시 미스가 발생하게 됨. -> 키 재배치를 진행해야 함. 안정 해시 안정 해시는 해시 테이블 크기가 조정될 때 평균적으로 오직 k/n 개의 키만 재배치하는 해시 기술이다. 여기서 k는 키의 개수이고, n은 슬롯(slot)의 개수이다. 이와는 달리 대부분 전통적 .. 2023. 5. 25.
4장 처리율 제한 장치의 설계 (3) 가상 면접 사례로 배우는 대규모 시스템 설계 기초 – System Design Interview 4장 처리율 제한 장치의 설계 4장 처리율 제한 장치의 설계 (1) 4장 처리율 제한 장치의 설계 (2) – 알고리즘 정리 에서 이어지는 글입니다. 3단계 상세 설계 더 생각 해봐야 할 부분들 - 처리율 제한 규칙은 어떻게 만들어지고 어디에 저장되는가? - 처리가 된 요청들은 어떻게 처리되는가? - 분산 환경에서는 어떻게 처리할 것인가? 처리율 제한 규칙 처리율 제한 규칙은 보통 설정 파일 형태로 디스크에 저장된다. 리프트(Lyft, 미국의 승차 공유 서비스기업이다.)는 처리율 제한에 오픈 소스를 사용하고 있다. https://github.com/envoyproxy/ratelimit (Lyft 의 reposi.. 2023. 5. 18.
4장 처리율 제한 장치의 설계 (2) - 알고리즘 정리 처리율 제한 알고리즘 널리 알려진 인기 알고리즘은 다음과 같은 것들이 있다. - 토큰 버킷 (token bucket) - 누출 버킷 (leaky bucket) - 고정 윈도 카운터 (fixed window counter) - 이동 윈도 로그 (sliding window log) - 이동 윈도 카운터 (sliding window counter) 토큰 버킷 알고리즘 보편적으로 사용되는 알고리즘 아마존과 스트라이프가 API 요청을 통제(throttle)하기 위해 사용 동작 원리 토큰 버킷은 지정된 용량을 갖는 컨테이너이다. 이 버킷에는 사전 설정된 양의 토큰이 주기적으로 채워진다. 토큰이 꽉 찬 버킷에는 더 이상의 토큰은 추가되지 않는다. 버킷이 가득 차면 추가로 공급된 토큰은 버려진다. 각 요청은 처리될 때.. 2023. 5. 18.