피드로 돌아가기
InfoQInfoQ
Backend

QCon London 2026: Introducing Tansu.io — Rethinking Kafka for Lean Operations

Peter Morgan이 Apache Kafka 프로토콜을 유지하면서 상태 저장소를 제거하고 외부 스토리지에 위임하는 Tansu 브로커를 개발해 메모리 사용량을 4GB에서 20MB로 감소

Steef-Jan Wiggers2026년 3월 21일8intermediate

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 패턴을 제거해 애플리케이션 복잡성도 감소시킬 수 있다.

원문 읽기