본문 바로가기

전체 글48

7장. 분산 시스템을 위한 유일 ID 생성기 설계 다중 마스터 복제 - DB의 auto_increment 기능을 활용하는 방법으로 각 DB의 ID의 값을 서버 개수만큼 크기로 증가시켜 얻는 방법. - 여러 데이터 센터에 걸쳐 규모를 늘리기 어렵다. - ID의 유일성은 보장되곘지만 그 값이 시간 흐름에 맞추어 커지도록 보장할 수는 없다. - 서버를 추가하거나 삭제할 때도 잘 동작하도록 만들기 어렵다. UUID - 128비트로 유일성이 보장되는 ID를 만드는 간단한 방법. - 서버 사이의 조율이 필요 없으므로 동기화 이슈가 없고 규모 확장도 쉽다. - 시간순으로 정렬할 수 없고, 숫자가 아닌 값이 포함될 수 있다. 티켓 서버 - auto_increment 기능을 갖춘 데이터베이스 서버를 중앙 집중형으로 하나만 사용하는 방법. - 유일성이 보장되 ID를 쉽게.. 2025. 1. 25.
6장. 키-값 저장소 설계 키-값 저장소는 비 관계형 데이터베이스이다.키는 유일해야 하며 해당 키에 매달린 값은 키를 통해서만 접근할 수 있다.값은 문자열, 리스트, 객체일 수 있다.대표적으로 nynamo, memcached, redis가 있다. 분산 서버 키-값 저장소키-값 쌍을 여러 서버에 분산시켜 저장한다. CAP분산 시스템을 설계할 때 CAP(Consistency, Availability, Partition Tolerance theorem)를 이해하고 있어야 한다.CAP 정리는 이들 가운데 어떤 두 가지를 충족하려면 나머지 하나는 반드시 희생되어야 한다는 이론이다.  -  데이터 일관성(Consistency): 분산 시스템에 접속하는 모든 클라이언트는 어떤 노드에 접속했느냐에 관계없이 언제나 같은 데이터를 보게 되어야 한다.. 2025. 1. 24.
5장. 안정 해시 설계 수평적 규모 확장을 달성하기 위해 요청 또는 데이터를 서버에 균등하게 나누는 것이 중요하다. 이를 위해 보편적으로 안정 해시를 사용한다. 해시 키 재배치 문제N개의서버에 균등하게 나누는 보편적인 방법  -  serverIndex = hash(key) % N(서버 개수)서버가 추가되거나 제거되면 키가 변경되므로 상당한 데이터가 재배치 되어야 한다. 안정 해시데이터나 키가 변경되지 않는 한, 항상 동일한 해시 값을 반환하는 해시 기법이다.즉 서버의 개수가 변동된다고 해서 해시값이 변하지 않으며, 데이터의 재배치를 최소화할 수 있다. 가상 노드가상 노드는 실제 노는 또는 서버를 가리키는 노드로서, 하나의 서버는 링 위에 여러 개의 가상 노드로 구성한다.가상 노드의 개수를 늘리면 키의 분포가 균등해져, 데이터가.. 2025. 1. 20.
4장. 처리율 제한 장치의 설계 처리율 제한 장치(rate limi**ter)**는 클라이언트 또는 서비스가 보내는 트래픽의 처리율을 제어하기 위한 장치이다.HTTP를 예로 들면 이 장치는 특정 기간 내에 전송되는 클라이언트의 요청 횟수를 제한한다.장점DoS 공격에 의한 자원 고갈을 방지비용 절감서버 과부화 방지처리율 제한 알고리즘토큰 버킷누출 버킷고정 윈도 카운터이동 윈도 로그이동 윈도 카운터분산 환경에서 고려할 점경쟁 조건(race condition)분산 환경에서 요청 카운트를 공유자원으로 사용함으로 값이 잘 못 될 수 있다.루아 스크립트 또는 레디스 자료구조인 정렬 집합을 활용해 해결할 수 있다.동기화(synchronization)처리율 제한 장치 서버를 여러 대 두게 되면 동기화가 필요하다.레디스와 같은 중앙 집중형 데이터 저장.. 2025. 1. 17.
3장. 시스템 설계 면접 공략법 1단계: 문제 이해 및 설계 범위 확정 (3~10분)요구사항을 완전히 이해하지 않고 답을 내놓는 행위는 아주 엄청난 부정적 신호속도를 늦추고, 깊이 생각하고 질문하여 요구사항과 가정들을 분명히 한다.질문- 제품 사용자 수- 회사 규모는 얼마나 빨리 커지리라 예상되는지- 회사가 주로 사용하는 기술 스택 2단계: 개략적인 설계안 제시 및 동의 구하기 (10~15분)개략적인 설계안을 제시하고 면접관의 동의를 얻는 단계.면접관과 협력하며 진행하면 좋음- 설계안에 대한 최초 청사진을 제시하고 의견을 구함- 화이트보드나 종이에 핵심 컴포넌트를 포함하는 다이어그램을 그린다.- 설계안이 시스템 규모에 관계된 제약사항들을 만족하는지를 개략적으로 계산한다. 3단계: 상세 설계 (10~25분)특정 시스템 컴포넌트들의 세부사.. 2025. 1. 12.
2장. 개략적인 규모 추정 개략적인 규모 추정(back of the envelope estimation)은 보편적으로 통용되는 성능 수치상에서 사고 실험(thought experiments)을 행하여 추정치를 계산하는 행위로서, 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것 2의 제곱수2의 x 제곱근사치이름축약형101천(thousand)1킬로바이트(Kilobyte)1KB201백만(million)1메가바이트(Megabyte)1MB3010억(billion)1기가바이트(Gigabyte)1GB401조(trilion)1테라바이트(Terabyte)1TB501000조(quardrillion)1페타바이트(Petabyte)1PB  모든 프로그래머가 알아야 하는 응답지연 값 메모리는 빠르지만 디스크는 아직도 느리다.디스크 탐색(seek)은 가.. 2025. 1. 12.
728x90