GN⁺: 마이크로소프트 리서치의 새로운 원격 캐시 저장 기술 'Garnet'
(github.com/microsoft)-
Garnet 소개
- 마이크로소프트 리서치에서 개발한 새로운 원격 캐시 저장소인 Garnet은 여러 독특한 이점을 제공함.
- 인기 있는 RESP 와이어 프로토콜을 기반으로 하여, 대부분의 프로그래밍 언어에서 사용 가능한 Redis 클라이언트를 수정 없이 사용할 수 있음.
- 많은 클라이언트 연결과 작은 배치 작업에서 더 나은 처리량과 확장성을 제공하여 대규모 앱과 서비스의 비용 절감에 기여함.
- 가속화된 TCP가 활성화된 Azure 클라우드 VM을 사용하여 매우 낮은 클라이언트 지연 시간(99.9%에서 300 마이크로초 미만)을 달성함.
- 최신 .NET 기술을 기반으로 한 Garnet은 크로스 플랫폼, 확장 가능하며 현대적인 설계를 가지고 있음.
- .NET의 풍부한 라이브러리 생태계를 활용하여 API 범위를 넓히고, 최적화를 위한 개방적인 기회를 제공함.
-
기능 요약
- Garnet은 원시 문자열, 분석적, 객체 작업을 포함한 다양한 API를 구현함.
- 클라이언트 측 RESP 트랜잭션과 C#으로 작성된 서버 측 저장 프로시저를 통해 멀티 키 트랜잭션을 처리할 수 있음.
- 사용자가 C#의 편리함과 안전성을 활용하여 원시 문자열과 새로운 객체 유형에 대한 사용자 정의 작업을 정의할 수 있음.
-
성능 미리보기
- Garnet과 주요 오픈소스 캐시 저장소를 비교한 몇 가지 주요 결과를 웹사이트에서 제시함.
-
디자인 하이라이트
- Garnet의 디자인은 네트워크에서 패킷을 수신하는 것부터 데이터베이스 작업을 파싱하고 처리하는 것, 저장소 상호작용을 수행하는 것까지 캐시 저장소 스택 전체를 재고함.
- Garnet의 네트워크 계층은 이전 연구인 ShadowFax에서 영감을 받은 공유 메모리 디자인을 상속받음.
- Garnet의 저장소 디자인은 통합된 작업 로그에 의해 결정되는 두 개의 Tsavorite 키-값 저장소로 구성됨.
-
클러스터 모드
- 단일 노드 실행 외에도 Garnet은 샤딩 및 복제 배포를 생성하고 관리할 수 있는 클러스터 모드를 지원함.
- 클러스터는 아직 작업 중인 상태임.
-
다음 단계
- 문서 사이트로 이동하거나 시작하기 섹션 또는 릴리스 섹션으로 직접 이동할 수 있음.
-
라이선스
- 이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되며, LICENSE 파일을 참조할 수 있음.
-
개인정보 보호
- 개인정보 보호에 관한 정보는 마이크로소프트의 개인정보 보호 웹사이트에서 찾을 수 있음.
-
기여하기
- 이 프로젝트는 기여와 제안을 환영하며, 대부분의 기여는 CLA에 동의해야 함.
- 마이크로소프트 오픈소스 행동 강령을 채택하였으며, 행동 강령 FAQ를 참조하거나 추가 질문이나 의견이 있을 경우 opencode@microsoft.com으로 연락할 수 있음.
-
상표
- 이 프로젝트에는 프로젝트, 제품 또는 서비스에 대한 상표 또는 로고가 포함될 수 있으며, 마이크로소프트 상표 또는 로고의 사용은 마이크로소프트의 상표 및 브랜드 지침을 따라야 함.
GN⁺의 의견
- Garnet은 기존 Redis 클라이언트와 호환되면서도 더 높은 성능과 확장성을 제공하는 새로운 캐시 저장소로, 대규모 클라우드 서비스를 운영하는 기업에게 매력적일 수 있음.
- 이 기술이 실제 환경에서 얼마나 안정적으로 작동하는지, 그리고 기존의 캐시 솔루션과 비교했을 때 어떤 실질적인 이점을 제공하는지에 대한 장기적인 데이터가 필요함.
- Garnet의 클러스터 모드가 아직 개발 중이라는 점은, 대규모 배포를 고려하는 사용자에게는 중요한 고려 사항이 될 수 있음.
- Garnet이 오픈소스로 제공되기 때문에, 커뮤니티의 기여를 통해 더 많은 기능과 개선이 이루어질 가능성이 있으며, 이는 기술의 성숙도를 높이는 데 기여할 수 있음.
- Garnet을 도입하기 전에 기존 시스템과의 호환성, 성능 향상 대비 비용, 그리고 잠재적인 마이그레이션 비용을 고려해야 할 것임.
Hacker News 의견
-
벤치마크 성능 차트에 따르면, Garnet의 GET 명령어 처리량이 Dragonfly보다 10배 이상 높음. 50% 지연 시간은 Dragonfly보다 약간 높지만, 99번째 백분위수 지연 시간은 Dragonfly보다 약간 낮음. Garnet과 Dragonfly의 처리량과 지연 시간은 Redis보다 훨씬 우수하여, Redis는 상당한 성능 최적화가 필요함을 시사함.
Garnet의 저장 계층인 Tsavorite는 OSS FASTER에서 파생되었으며, 스레드 확장성, 계층화된 저장 지원(메모리, SSD, 클라우드 저장소), 빠른 논블로킹 체크포인팅, 복구, 내구성을 위한 작업 로깅, 다중 키 트랜잭션 지원, 더 나은 메모리 관리 및 재사용과 같은 강력한 데이터베이스 기능을 포함함.
-
Microsoft Windows Server에서 WSL2에 의존하지 않고 직접 Redis(또는 호환 가능한 경우)를 실행해야 하는 사람들에게 훌륭한 소식임. 이전에는 메모리 사용 문제(주로 메모리 매핑 파일 때문으로 추정)가 있었고 더 이상 지원되지 않는 Redis 포트가 있었음.
C#으로 작성된 것을 보는 것은 매우 흥미롭고, 코드를 탐구하는 데 시간을 할애하는 것에 관심이 있음.
-
실제 비-Azure 스택에서 운영될 때의 성능이 인상적인 Redis 대체제임. 실제 세계에서 어떤지 궁금함.
-
Microsoft와 .NET 팀이 매우 인상적인 인프라스트럭처 프로젝트를 구축하는 것을 보는 것은 흥미로움. Yarp는 리버스 프록시/API 게이트웨이 등을 하고, 이제는 메모리 캐시를 위한 Garnet이 있음.
내부적으로 많은 필요성이 있고 공유할 의향이 있는 것 같음.
-
Garnet이 멀티스레드이기 때문에
MSET
이 원자적이지 않음. 원자적인MSET
버전을 원한다면 트랜잭션(저장된 프로시저)으로 표현해야 함.내부적으로 트랜잭션으로 감싸서 명령어를 원자적으로 만들지 않는 이유를 이해하는 데 어려움이 있음. 다른 원자성 "함정"이 무엇이 있는지.
-
여기 댓글들을 보면 더 이상 아무도 memcached를 사용하지 않는 것 같음?
-
Microsoft Research는 때때로 인상적인 프로젝트를 내놓음. R&D를 하며 급여를 받는 것은 재미있을 것임. 대기업들이 업계에 도움이 되는 R&D 스타일 프로젝트를 더 많이 했으면 좋겠음. Hashicorp가 시장에 나온다면 좋은 회사가 인수하기를 바람.
-
이 프로젝트는 정말 좋아 보임. 궁극적으로 "Azure Cache for Redis" 리소스를 대체하기를 바람. 현재는 느리고, Windows에서 실행되도록 만들어진 Redis의 포크이며, 인스턴스를 생성하는 데 거의 한 시간이 걸림.
-
이 시스템이 어디에서 성능이 좋지 않은지 궁금함. 더 작은 인스턴스 유형에서의 벤치마크도 보고 싶음. 72vCPU는 꽤 큰 인스턴스임.