분류 전체보기 104

데이터의 효율적인 저장과 조회(SSTable, Bloom Filter, LSM Tree)

SSTable, Bloom Filter, LSM Treerate limiter와 key-value store의 설계 진행하면서 아래의 개념들을 순서대로 확인해보았다고가용성 rate limiter가 필요함rate limiter에서 사용하는 알고리즘 확인token bucketleaky bucket (queue bucket)fixed window counter (단위 시간당 고정된 갯수)sliding window log (timestamp 기준으로 deprecate)sliding window counter (% 기반으로 count 추정)counter를 저장하기 위해서 고가용성, 분산 환경의 key-value store가 필요함어떤 Node에 저장될지 결정해야 함 : Consistent Hash고가용성, 데이터..

DEV/System Design 2025.05.05

Memory와 Disk의 동기화 (SSTable, Bloom Filter)

SSTable, Bloom Filterrate limiter와 key-value store의 설계 진행하면서 아래의 개념들을 순서대로 확인해보았다고가용성 rate limiter가 필요함rate limiter에서 사용하는 알고리즘 확인token bucketleaky bucket (queue bucket)fixed window counter (단위 시간당 고정된 갯수)sliding window log (timestamp 기준으로 deprecate)sliding window counter (% 기반으로 count 추정)counter를 저장하기 위해서 고가용성, 분산 환경의 key-value store가 필요함어떤 Node에 저장될지 결정해야 함 : Consistent Hash고가용성, 데이터 다중화 : Quo..

DEV/System Design 2025.05.05

키-값 저장소 설계

키-값 저장소 설계키-값 저장소에 저장된 값은 고유한 식별자를 키로 가져야 함키-값 쌍에서 키는 유일해야함키는 문자 또는 해시값일 수 있음성능상의 이유로 키는 짧을수록 좋음CAP네트워크 파티션은 불가피하기 때문에, 일관성과 가용성 사이에서 선택을 해야함데이터 저장안정 해시를 사용해서 데이터를 어떤 서버에 저장할지 결정데이터 다중화안정 해시에서 만나는 여러개의 노드에 모두 데이터를 저장가상 노드를 사용하는 경우, 실제 서버의 갯수를 카운트가 채워질 때까지 체크해야 함데이터 일관성정족수 합의 Quorum ConsensusN : 사본 갯수W : 쓰기 연산에 대한 정족수. 쓰기 연산이 성공한 것으로 간주되려면 적어도 W개의 서버로부터 쓰기 연산이 성공했다는 응답을 받아야 함R : 읽기 연산에 대한 정족수. 읽기..

DEV/System Design 2025.05.05

안정 해시 Consistent Hash

안정 해시 설계수평적인 규모 확장성을 달성하기 위해 요청 또는 데이터를 서버에 균등하게 나누는 방법해시 키 재배치(rehash) 문제serverIndex = hash(key) % N (서버 수)서버가 추가되면 전체 서버의 갯수가 달라져서, 기존의 hashKey가 달라진다해시 함수를 통한 해싱 결과가 균등하지 않을 수 있다안정 해시해시 테이블의 크기가 변경될 떄 K/N개의 키만 재배치하는 해시 기술K : 키의 갯수N : slot 갯수SHA-1 해시함수의 공간은 0 ~ 2^160-1해시 함수의 해시 공간을 구부려서 해시 링을 만든다임의의 위치에 서버를 배치한다해시 함수 - 해시 키 - 해시 링에서 오른쪽으로 돌면서 가장 가까운 서버에 접근서버가 추가, 제거되어도 근접한 서버에 저장되었던 키들만 cache m..

DEV/System Design 2025.05.04

처리율 제한 장치, Rate Limiter

처리율 제한 장치 설계네트워크 시스템에서 처리율 제한 장치는 클라이언트 또는 서비스가 보내는 트래픽의 처리율을 제어하기 위한 장치이다.역할Dos 공격에 의한 자원 고갈을 방치더 많은 서버를 두지 않아도 되어 비용 절감서버 과부하를 방지범위 설정클라이언트 측 제한 장치인지, 서버 측 제한 장치인지서버 측 제한 장치를 설계해야 함어떤 기준으로 API 호출을 제어해야할지 (IP 주소, 사용자 ID )다양한 제어 규칙을 정의할 수 있도록 해야하는지시스템 규모는 어느정도를 감안해야 하는지대규모 요청을 처리할 수 있어야 함시스템이 분산환경에서 동작해야 하는지분산 환경에서 동작해야 함처리율 제한 장치는 독립된 서비스인지, 애플리케이션 코드에 포함되어야 하는지사용자의 요청이 처리율 제한 장치에 걸러진 경우, 사용자에게..

DEV/System Design 2025.05.04

Google File System 뜯어보기 - Memory Mapped I/O

GFS에는 아래와 같은 문장이 나온다.The checkpoint is in a compact B-tree like form that can be directly mapped into memory and used for namespace lookup without ex-tra parsing. This further speeds up recovery and improves availability. 전체적인 느낌은 이해가 되었지만 directly mapped into memory 라는 내용이 어떻게 동작하는지 잘 이해되지 않았다. 그래서 이번 글은 MemoryMapedFile에 대한 내용을 정리해본다.What is checkpoint in GFSGFS에서 Master는 3가지 Metadata를 저장한다.the..

DEV/System Design 2025.04.24

Google File System 리뷰

요즘 GFS 논문을 읽어보고 있다. 흥미롭지만 어려워서 여러번 반복해서 읽으면서 정리를 해보고 있다. 아직 이해 제대로 못한 부분이 많지만 부족하게라도 일단 글을 발행해야겠다. 현재 시점에서 가장 인상 깊은 점은 두가지이다. 대부분의 'Operation이 Master의 오버헤드를 줄이는 방향으로 설계되었다'Relaxed Consistency Model에서 Consistency/InConsistency와 Defined/Undefined의 개념을 구분했다.이 외에도 Single Master에서 모든 Metadata를 메모리로 관리하는 점, GFS를 사용하는 Application Level에서 Write를 하고 Rename을 하도록 권장하고 있는데 알고보니 일반적인 파일 다운로드에서도 수행되고 있는 연산인 ..

DEV/System Design 2025.04.20

Keep Alive를 사용한 Connection Closed 대응 과정

어느날 아래와 같은 오류가 발생했습니다. 결론적으로는 Keep Alive 설정에 문제가 있었습니다.앞으로는 비슷한 오류가 발생하지 않도록 대응했던 과정을 정리해보겠습니다.2025-04-16T01:58:49.626Z[ERROR][2.0.1][tp-epoll-2] .s.i.h.a.o.g.XXXXXXClient : invoke Sending mutation failed: error=org.springframework.web.reactive.function.client.WebClientRequestException: recvAddress(..) failed: Connection reset by peer2025-04-16T02:13:42.896Z[ERROR][2.0.1][tp-epoll-1] s.i.h.a.s.X..

DEV/OS 2025.04.19

Block/File/Object Storage 그리고 Goofys(Fuse)

저장소 시스템 종류저장소 시스템 종류에는 크게 3가지가 있다.block storagefile storageobject storage세 가지 종류의 storage의 차이점을 이해해보자. 그리고 Fuse가 무엇이고 어떤 경우에 사용되는 것인지까지 이해해보자. 먼저 각 Storage에 대한 개념적인 설명이다.block storageHDD나 SSD처럼 서버에 물리적으로 연결되는 형태의 드라이브는 블록 저장소의 가장 흔한 형태이다. 블록 저장소는 raw block을 서버에 volume의 형태로 제공한다. 가장 유연하고 융통성이 놓은 저장소다. 서버는 raw block을 포맷한 다음 파일 시스템으로 이용하거나 애플리케이션에 블록 제어권을 넘겨버릴 수도 있다. 데이터베이스나 가상 머신 엔진 같은 애플리케이션은 raw..

DEV/OS 2025.04.14

HDD는 왜 IOPS 기준으로 provisioning이 제공되지 않을까?

File Storage, Block Storage, Object Storage의 차이점을 알아보기 이전에 HDD와 SSD 등의 기본 개념을 되짚어보고 AWS와 같은 클라우드 서비스에서 어떤 차이를 보이는지 알아본다.HDD와 SSD 개념HDDHDD의 기본적인 구조는 넘어가고 중요한 요소한 다뤄보려고 한다. HDD는 기계적인 구조를 갖춘 저장 장치이다. 디스크 I/O 시간은 다음 세 가지 요소로 구성된다.Seek Time: 헤더가 해당 트랙으로 이동하는 시간Rotational Latency: 디스크가 회전하여 데이터가 헤더에 도달할 때까지 기다리는 시간Data Transfer Time: 데이터를 실제로 전송하는 시간주의사항은 디스크에 표기된 transfer rate는 디스크 내부 속도이며, OS나 애플리케이..

DEV/OS 2025.04.14