티거비틀, 정적 할당·제로카피로 초저지연 구현
TigerBeetle Core System Architecture: Deconstructing Performance Engineering

티거비틀(TigerBeetle)은 금융 원장 전용 데이터베이스로, 런타임 동적 메모리 할당을 제거하고 직접 I/O와 io_uring을 활용한 제로카피 경로를 통해 수십만 TPS와 서브밀리초 꼬리 지연 시간을 달성한다. 단일 스레드 실행 루프와 Viewstamped Replication(VSR) 합의로 동시성 제어를 단순화했으며, 128바이트 고정 크기 구조체로 캐시 지역성을 극대화했다. 정적 할당은 메모리 단편화와 OOM 위험을 없애지만, 최대 연결 수와 배치 크기를 시작 시점에 고정해야 하는 제약이 따른다. 저자는 이러한 설계가 예측 가능성과 안전성이 탄력적 확장보다 중요한 금융 시스템에 적합하다고 평가한다.
정적 할당은 공짜가 아니다. 모든 버퍼가 고정 크기이므로 시작 또는 컴파일 시점에 최대 동시 연결 수, 최대 배치 크기, 최대 저장 캐시 크기를 정의해야 한다.
HN 토론
41- hoppp
정말 그걸 의존성이나 데이터베이스 프레임워크로 만들어서, 사용자가 자신의 비즈니스 로직을 정의해 복식부기 회계를 대체할 수 있으면서도 시스템 아키텍처, 네트워킹 기능, 합의 등은 모두 재사용할 수 있게 했으면 좋겠어요. 마치 이 스택 위에 임의의 입력 로직으로 맞춤형 데이터베이스를 만들 수 있는 새로운 패러다임 같은 거요.
- jorangreef
저는 TigerBeetle의 Joran입니다! TB를 만들었어요. 질문에 답변드릴게요!
- kilroy123
그들의 시뮬레이션은 환상적입니다: https://sim.tigerbeetle.com
- teabee89
"TigerBeetle은 [...] 단일 스레드 실행 루프를 활용함으로써 소프트웨어 아키텍처를 현대 하드웨어의 물리적 현실과 완벽하게 일치시킵니다." 단일 스레드 실행 루프가 현대 하드웨어의 물리적 현실과 더 잘 맞는다는 게 무슨 뜻인지 설명해 주실 수 있나요?
- jandrewrogers
> 암시적 메모리 할당과 복잡한 복사 생성자를 허용하는 C++와 달리
컴파일 타임에 이런 일이 발생하지 않도록 하는 것은 아주 쉽습니다. 기사에서처럼 DMA를 사용한다면 이러한 보장이 필수적입니다.