피드로 돌아가기
InfoQBackend
원문 읽기
QCon London 2026: Introducing Tansu.io — Rethinking Kafka for Lean Operations
Peter Morgan이 Apache Kafka 프로토콜을 유지하면서 상태 저장소를 제거하고 외부 스토리지에 위임하는 Tansu 브로커를 개발해 메모리 사용량을 4GB에서 20MB로 감소
AI 요약
Context
Kafka는 브로커 간 데이터 복제를 통해 안정성을 제공하지만, 이를 위해 브로커가 상태를 유지해야 하고 4GB 힙 메모리를 상시 점유하며 스케일 다운이 거의 불가능하다. Morgan은 이미 안정적인 외부 스토리지가 존재한다면 중간 복제 단계가 불필요하다는 가정 하에 Tansu를 개발했다.
Technical Solution
- 상태 비저장 브로커 아키텍처 도입: 브로커가 데이터를 보유하지 않고 지속성을 외부 스토리지(S3, SQLite, PostgreSQL)에 완전히 위임
- 플러그인 방식 스토리지 백엔드 제공: URL 파라미터로 S3(Tigris, R2 호환), SQLite(개발 환경용), PostgreSQL(데이터베이스 직접 저장) 선택 가능
- PostgreSQL COPY FROM 프로토콜 도입: 순차 INSERT 방식의 왕복 응답 대기를 제거하고 스트림 기반 배치 쓰기로 처리량 증가
- 브로커 측 스키마 검증 구현: Avro, JSON, Protobuf 스키마 검증을 브로커에서 수행해 클라이언트 무관하게 데이터 일관성 보장
- 오픈 테이블 포맷 직렬화: 유효성 검증된 데이터를 Apache Iceberg, Delta Lake, Parquet으로 자동 작성하고 스키마 변경 시 메타데이터 관리
- Transactional Outbox 패턴 제거: 비즈니스 데이터 업데이트와 메시지 큐를 동일 데이터베이스 트랜잭션으로 처리 가능
Impact
- 브로커 메모리: 4GB에서 약 20MB로 감소
- 부팅 시간: 약 10밀리초 내 스케일 업/다운 가능
- 배포 용량: 40MB 정적 링크 바이너리를 256MB 머신에서 운영 가능
- 프록시 모드 성능: 초당 60,000 레코드 처리, P99 레이턴시 1밀리초 이하(13MB RAM)
- PostgreSQL 배치 쓰기: COPY FROM 도입으로 배치 수집 시 상당히 증가된 처리량
Key Takeaway
Kafka의 복제 기반 안정성 모델이 보편적이지만, 외부 스토리지가 이미 지속성을 보장한다면 브로커 상태를 제거해 운영 복잡성을 획기적으로 낮추고 비용 효율성을 높일 수 있다. 또한 Postgres 같은 데이터베이스를 스토리지 백엔드로 사용하면 메시징과 분석 인프라의 경계를 제거할 수 있다.
실천 포인트
대규모 메시징 인프라 운영 비용이 부담인 조직에서 S3 또는 PostgreSQL 같은 기존 객체 스토리지·데이터베이스를 소유하고 있다면, Tansu를 도입해 브로커 메모리 점유를 4GB에서 20MB로 줄이고 스케일 다운 시간을 10밀리초 수준으로 단축할 수 있다. 특히 Postgres 백엔드를 선택하면 INSERT/SELECT 기반 원자성 트랜잭션으로 outbox 패턴을 제거해 애플리케이션 복잡성도 감소시킬 수 있다.