책/가상 면접 사례로 배우는 대규모 시스템 설계 기초
-
[가상면접 사례로 배우는 대규모 시스템 설계기초] 분산 시스템을 위한 유일 ID 생성기 설계책/가상 면접 사례로 배우는 대규모 시스템 설계 기초 2025. 7. 7. 10:51
분산된 환경에서는 유일 ID 를 설계할 때 그냥 디비의 auto_increment 로는 만들 수 없다. 이번 장의 요구사항은 다음과 같다. 1. 유일해야함2. 숫자여야 함.3. 64비트여야 함.4. 날짜에 따라 정렬이 가능해야 함. 5. 높은 생성 속도를 가지고 있어야 함. 이 요구사항만 들었을 때는 그냥 유일 ID만을 생성하는 어떤 서버를 둬서 그 서버로부터 ID 를 받아오면 좋지 않을까하였다. 단일 장애지점이 될 수 있지만 이중화해두는 방식으로.. 하여간 위의 요구사항을 만족하기 위해 4 가지의 방법이 제안되었다. 요구사항을 달성하기 위한 네 가지 방법들 다중 마스터 복제 k 개의 분산 디비 서버가 있다하면 offset을 k 로 하고 k 만큼 증가시키는 것 이러면 요구사항에 어느정도 부합하지만 단점..
-
블룸 필터란 무엇인가책/가상 면접 사례로 배우는 대규모 시스템 설계 기초 2025. 6. 25. 11:01
가상 면접 사례로 배우는 대규모 시스템 설계 기초 스터디를 진행하며, 왜 블룸 필터는 거짓 음성이 없을 수 있을까에 대해 궁금했다. 그래서 따로 공부를 하기로 했다. 블룸 필터(Bloom filter)는 원소가 집합에 속하는지 여부를 검사하는데 사용되는 확률적 자료 구조라고 위키피디아에서 말한다. 블룸필터는 어떤 원소가 집합에 속하지 않는다는 것을 확실히 알 수 있다. 거짓 음성이 없는 것이다! 확률적이라 말하는 이유는 거짓 양성이 가능하기 때문이다. 위의 특성을 설명하기 위해 클로드를 사용하여 이해하기 쉬운 이미지를 만들어봤다. 블룸 필터는 모든 비트가 0으로 초기화된 고정 크기의 비트배열이 있다. 예시로 16개의 고정 비트 배열이 있다고 하겠다. 블룸필터는 여러 해시 함수들을 사용하는데 우리는 간단..
-
[가상면접 사례로 배우는 대규모 시스템 설계기초] 안정 해시 설계책/가상 면접 사례로 배우는 대규모 시스템 설계 기초 2025. 5. 20. 19:50
해시는 뭘까?해시는 요청 또는 데이터를 서버에 균등하게 나누기 위해 사용하는 기술이다. 이거 쓰면 수평적 규모 확장에 좋다. 그럼 이 전통적 해시를 쓸 때 어떤 문제가 있을까?서버에 균등하게 나눠서 요청을 보내기 위해서는 서버의 수를 인자로 사용하는데 serverIndex = hash(key) % N (N은 서버의 개수) 서버가 추가되거나 빠지면 이 해싱함수에 문제가 생긴다. 원래는 균등하게 나눠진게 빠지거나 추가되면서 한쪽으로 몰려 균등하지 않게 되는 것이다. 이번 장은 이런 해시를 균등하게 하기 위해 어떤 방법들이 있는지 정리하기 위한 장이구나를 알 수 있다. 이를 해결하기 위해 안정 해시라는 것이 있다.안정 해시란? https://ko.wikipedia.org/wiki/%EC%9D%BC%EA%..
-
[가상면접 사례로 배우는 대규모 시스템 설계기초] 처리율 제한 장치책/가상 면접 사례로 배우는 대규모 시스템 설계 기초 2025. 4. 2. 10:45
이게 뭔데 필요할까?1. DOS 공격과 같은 Denial Of Service 라고 외부에서 엄청 많이 요청해서 자원을 고갈시키는 공격을 방지할 수 있는 수단이다.2. 서드파티의 API (지도 API 등) 를 이용할 경우 사용료를 제한할 수 있다.3. 봇 같은 불필요한 트래픽을 줄여서 서버 부하를 줄일 수 있다. 이 처리율 제한 장치는 어떻게 구축되어 사용될까?클라이언트쪽에 구축하거나 미들웨어에 구축하거나 서버쪽에 구축할 수 있다.이 위치는 기술 스택이나 도메인에 따라 변경될 수 있다.처리율 제한 서비스를 직접 만드는 것은 어렵기 때문에 인력이 충분하지 않다면 상용 서비스를 쓰는 것이 바람직하다. 처리율 제한 장치는 어떻게 동작하는가? 5가지 알고리즘을 도메인 상황에 맞게 적용한다고 한다.1. 토큰 버킷2..
-
[가상면접 사례로 배우는 대규모 시스템 설계기초] 개략적인 규모 측정과 시스템 설계 면접 공략법책/가상 면접 사례로 배우는 대규모 시스템 설계 기초 2025. 3. 11. 09:14
개략적인 규모 추정이란?어떤 설계가 요구사항에 부합하는지 알아보기 위해 성능 수치상에서 사고실험을 해서 추정치를 계산하는 행위이다.데이터를 측정하는 단위?2의 제곱수인 바이트단위로 측정한다.응답 지연 값당연한 이야기겠지만 디스크 조회보다 메모리에서 조회하는 것이 빠르니 디스크 조회는 피하자.단순한 압축 알고리즘은 빠르니 데이터를 인터넷으로 전송하기 전에 압축하자.데이터는 일반적으로 분산되어 있고 센터간 데이터 주고받는데 시간이 걸린다.가용성고가용성이란? 시스템이 오랜 시간동안 중단 없이 운영될 수 있는 능력이다.SLA 은 서비스 사업자와 고객 사이에 맺어진 합의를 의미한다.큰 사업자들은 99%이상의 SLA 를 제공하는데 표를 보니99%도 연간 장애 시간으로 하니 크게 보인다! QPSquery per se..
-
[가상면접 사례로 배우는 대규모 시스템 설계기초] 키-값 저장소 설계책/가상 면접 사례로 배우는 대규모 시스템 설계 기초 2025. 1. 12. 00:36
키-값 저장소는 비관계형 데이터베이스이다. 여기서 비관계형 데이터베이스라는 것은관계형과 다르게 스키마 없는 데이터를 관리하는 여러 종류의 데이터베이스들을 가리킨다. 이번에 정리할 키-값 저장소에 저장되는 값은고유 식별자를 키로 가져야 한다. 여기서 키는 일반 텍스트일 수도 있고 해시값일 수도 있다고 한다.보통 값은 무엇이 오든 상관 안한다고 하는데 문자열이나 리스트, 객체일 수 있다고 한다. 종류는 아마존의 다이나모, 레디스 같은 것들이 있다. 설계대규모 시스템에서 단일 시스템으로 키-값 저장소를 운영하는 것은 안좋다.가용성과 일관성 그리고 파티션 감내 모두를 잃는 것이다. CAP 정리cap는 일관성(consistency) 가용성(availability) 파티션 감내(partition tolerance)..