최근 공개된 PicoMQ는 S3 호환 객체 스토리지를 기반으로 하는 새로운 실시간 데이터 스트림 서버입니다. 이 시스템은 채팅 메시지, 기기 이벤트, 작업 이력, 에이전트 대화 등 다양한 종류의 데이터를 순서대로 저장하고 실시간으로 전달하는 데 특화되어 있습니다. 사용자는 읽던 위치부터 이어받거나 과거 기록을 다시 읽을 수 있어, 실시간 구독과 이벤트 이력 보관 모두에 활용될 수 있습니다.
PicoMQ의 핵심은 모든 레코드와 쓰기 복구 로그(WAL)를 S3 호환 객체 스토리지에 저장한다는 점입니다. 서버 노드 자체는 교체 가능한 캐시만 유지하며, 클러스터 메타데이터와 스트림 소유권은 PostgreSQL(포스트그레스QL)로 관리합니다. 단일 노드 실행 시에는 SQLite(SQLite)를 사용할 수도 있습니다. 이는 별도의 브로커 디스크나 복잡한 자체 합의 프로토콜 없이 SQL 데이터베이스와 객체 스토리지만으로 시스템을 구성할 수 있게 합니다. 또한, 노드 장애 시 데이터를 다른 노드로 재분배할 필요 없이 몇 초간의 라우팅 전환만으로 복구가 가능해 안정성이 높습니다. PicoMQ는 사용자 세션, 주문, 기기, 작업 등 각각에 작은 스트림을 따로 만드는 방식을 지향하며, 수백만 개의 스트림을 운영할 수 있도록 설계되었습니다. HTTP API를 통해 PUT으로 생성, POST로 추가, GET으로 읽기가 가능하며, 롱 폴링(long polling)과 SSE(Server-Sent Events)로 실시간 구독을 지원합니다. 자체 Pico 프로토콜, Durable Streams 개방형 프로토콜, 그리고 카프카 와이어 프로토콜(Kafka Wire Protocol)을 같은 엔진에서 제공하여 기존 카프카 클라이언트로도 접근할 수 있습니다.
이러한 설계는 기존의 대규모 분산 메시징 시스템인 카프카와 같은 솔루션에 대한 흥미로운 대안을 제시합니다. 특히 디스크리스(diskless) 아키텍처를 통해 서버 노드의 복잡성을 줄이고, S3의 무한한 확장성과 내구성을 활용하여 데이터 보관 및 복구의 부담을 덜 수 있습니다. 이는 운영 비용 절감과 관리 용이성 측면에서 큰 이점을 제공할 수 있습니다. 다만, 객체 스토리지 왕복으로 인한 쓰기 지연이 수십 밀리초(ms) 수준이므로, 극도로 낮은 지연 시간이 요구되는 환경에서는 추가적인 고려가 필요할 수 있습니다. PicoMQ는 단일 바이너리에 서버, 클라이언트, 관리 CLI, 벤치마크 도구, 관리자 대시보드를 모두 포함하고 있어 개발 및 배포 편의성도 높습니다. 이는 소규모 팀이나 개인 개발자에게도 매력적인 선택지가 될 수 있습니다.