An update on Redis Streams development

Salvatore Sanfilippo

Redis Streams 개발 현황 업데이트

원문은 Salvatore Sanfilippo님이 에 게재했습니다. 이 블로그 구독하기

여러 사용자들이 Streams가 어떻게 진행되고 있는지, 언제쯤 프로덕션 환경에서 사용할 수 있게 될지, 그리고 전반적인 일정과 계획이 어떻게 되는지를 묻는 모습을 보았습니다. 이번 글에서는 앞으로의 진행 방향을 조금이나마 명확히 해보려 합니다.

우선, 지금 이 순간 Streams는 저의 최우선 과제입니다. Redis 커뮤니티에 매우 유용하다고 믿는 이 작업을 마무리하고 곧바로 Redis Cluster 개선 계획을 시작하고 싶습니다. 사실 Cluster 관련 작업은 이미 시작되었습니다. 동료인 Fabio Nicotra가 Cluster 관리 도구인 redis-trib을 기존의 redis-cli 안으로 포팅하고 있는데, 이 작업은 코드를 Ruby에서 C로 옮기는 과정을 포함합니다. 한편, 몇 주 전 저는 Streams 코어 작성을 마쳤고, “streams” 기능 브랜치를 삭제한 뒤 모든 내용을 “unstable” 브랜치로 병합했습니다.

이후 컨슈머 그룹에 대한 명세를 여러 차례에 걸쳐 다시 검토했습니다. 몇 주 전 마침내 결과에 만족하게 되어 해당 명세의 구현을 시작했습니다: https://gist.github.com/antirez/68e67f3251d10f026861be2d0fe0d2f4. 명령어 이름이 꽤 많이 바뀌었다는 점을 유의해 주세요… API는 이제 대략 다음과 같은 형태가 되었습니다: https://gist.github.com/antirez/4e7049ce4fce4aa61bf0cfbc3672e64d.

현재 구현은 절반 정도 진행되었습니다. 첫 500줄의 코드를 작성한 뒤 오늘에서야 클라이언트가 XREADGROUP 명령어를 사용해 이전 메시지를 가져올 때 자신의 로컬 히스토리만 볼 수 있는 모습을 확인할 수 있었습니다. 구현 과정에서 하나의 이정표였습니다. 또한 XACK도 이제 사용할 수 있습니다. 기본적으로 streams 컨슈머 그룹을 지원하는 모든 자료구조는 동작하고 있지만, 남은 명령어 구현을 모두 마치고, XREADGROUP에서의 블로킹 연산을 지원하며, 리플리케이션과 RDB 및 AOF 영속화를 처리해야 합니다. 앞으로 한 달 정도면 모든 준비가 끝날 것으로 예상합니다.

컨슈머 그룹 때문에 Streams의 RDB 포맷은 현재 “unstable”에서 사용 중인 것과 비교해 크게 바뀔 예정입니다. 어차피 호환성을 깨야 하는 만큼, RDB 파일이 키의 마지막 접근 정보를 함께 영속화할 수 있는 기능도 추가할 예정입니다. 이렇게 하면 RDB를 동반하는 Redis 재시작(또는 슬레이브 로딩) 시에도 키 제거(eviction)를 올바른 방식으로 계속 수행하는 데 필요한 모든 정보를 유지할 수 있습니다. 현재는 그 정보가 모두 유실됩니다. 이러한 RDB의 대대적인 변경 때문에 계획이 조금 바뀌었습니다. Streams는 Redis 4.0이 아닌 Redis 5.0에 포함될 예정이지만, 5.0은 약 두 달 안에 GA로 출시될 것입니다. 이는 5.0이 RDB 변경을 제외하면 사실상 4.0에 streams만 추가된 버전으로, 다른 큰 기능이 없기 때문에 가능한 일정입니다…

정리하자면, 중요한 PR이나 이슈를 확인하는 시간을 제외하고는 거의 전적으로 Streams 작업에 매진하고 있으며, 두 달 뒤 Redis 5.0으로 업그레이드하시면 컨슈머 그룹이 완전히 구현된 프로덕션용 streams를 사용하실 수 있습니다. 문서화 작업도 상당히 남아 있습니다. 약 한 달 뒤 RC1에 들어가면 명령어 매뉴얼과 streams에 대한 상세한 소개 글을 모두 작성할 예정이며, 이를 통해 릴리스 후보 단계에서 테스트를 진행하시는 분들이 참고할 문서를 제공하려 합니다.

이 글이 Streams의 진행 상황을 명확히 하는 데 도움이 되었기를 바랍니다. 곧 Redis 5.0으로 찾아뵙겠습니다 :-)

이 글은 muse-spark-1.2-contributor 모델을 사용해 번역했습니다.

댓글