두 번째 문제는 full-text search, event stream processing, strong-consistency key/value, time-series, vector storage를 진지하게 통합하려는 사용자는 Redis 제한을 물려받은 반쯤 익은 모듈이 아니라 전문 도구를 원한다는 데 있음
Redis의 고가용성은 복잡하고, 영속성에는 미묘한 트레이드오프가 있으며, 프로토콜 부담과 클라이언트 파편화도 실제 장애물이 됨
Redis는 Postgres를 대체하려는 도구가 아니며, ElasticSearch와 RabbitMQ 같은 시스템도 각자의 기반 기둥으로 남아야 한다는 입장임
Aphyr의 초기 Redis-Raft 구현 분석은 21개의 문제를 찾았다고 적고 있음
건강한 클러스터에서의 장시간 사용 불능
8건의 크래시
3건의 stale read
1건의 aborted read
커밋된 업데이트 손실로 이어지는 5건의 버그
1건의 무한 루프
클라이언트에 논리적으로 손상된 응답을 보낼 수 있는 2건의 문제
테스트한 첫 버전 1b3fbf6은 사실상 사용할 수 없는 수준이었다고 평가됨
캐시이자 데이터 구조 서버인 Redis와 “Redis the etcd” 또는 다른 전문 데이터베이스를 지향하는 Redis는 근본적으로 다른 제안이며, 이 간극이 핵심 문제임
Disque가 드러낸 같은 패턴
antirez는 2015년에 Disque를 발표했고, 당시 실제 사용 사례에서 출발한 것이 아니라 Redis를 메시지 큐처럼 쓰는 사람들과 다른 메시지 큐를 보며 “astronaut mode”로 설계했다고 밝힘
실제 사용 사례 없이 개인적 도전이나 학습 과제로 만든 프로젝트도 훌륭할 수 있지만, 사용자가 늘어난 뒤 등장하는 긴 꼬리의 어려운 문제를 계속 해결할 수 있는지는 별개의 문제임
고가용성 메시지 전달은 제대로 풀기 어려운 문제이며, CAP 정리의 어느 쪽을 최적화하든 트레이드오프와 어려운 문제 해결을 피할 수 없음
2015년에는 이미 성숙한 메시지 브로커가 많았고, 사람들이 Redis를 메시지 브로커로 쓴 이유는 Redis를 이미 쓰고 있었고 충분히 단순했기 때문임
필요한 것은 새로운 메시지 브로커도, Redis가 더 복잡한 메시지 브로커가 되는 것도 아니었음
Disque는 발표 직후 사실상 abandonware가 되었고, GitHub에서 8K stars를 얻었음에도 방치됨
이후 Redis 모듈로 다시 작성되었지만, 그 프로젝트도 지난 7~8년간 방치된 상태임
Valkey가 보여주는 다른 방향
Redis의 흐름을 움직인 힘은 복잡한 문제를 풀려는 개발자의 야망, 모두를 위한 모든 것이 되려는 야망, Redis의 소유자가 AWS와 GCP에 밀리기 전에 최대 수익을 뽑아내려는 야망으로 묶임