21P by xguru 7달전 | favorite | 댓글 1개

제작 동기

  • Go 캐시 라이브러리 중에는 진정한 Contention-free가 없음. 대부분은 뮤텍스와 제거 정책이 있는 맵에 불과
  • 이는 다른 언어의 캐시(예: Caffeine) 속도에 미치지 못함
  • Dgraph labs의 가장 빠른 캐시인 Ristretto는 경쟁업체보다 최대 30% 빨랐지만(Otter는 훨씬 더 빠름) Hit ratio가 좋지 않았음
  • 실제 애플리케이션에서는 캐시 라이브러리의 성능에 부딪히고 싶지 않기 때문에 문제가 될 수 있음
  • 그 결과, 가장 빠르고 사용하기 쉬운 캐시를 만들고 싶었음

주요 기능

  • 간단한 API: Builder에서 원하는 매개변수를 설정하고 사용하면 끝
  • 자동 구성: 애플리케이션의 병렬 처리 기능을 기반으로 자동 구성됨
  • 제네릭: 키로 비교 가능한 모든 유형을 안전하게 사용할 수 있고, 값으로 모든 유형을 사용할 수 있음
  • TTL: 만료된 값은 캐시에서 자동으로 삭제됨
  • 비용 기반 제거: 각 항목의 비용을 기반으로 제거를 지원함
  • 뛰어난 처리량: 현재 경쟁 제품들을 크게 앞서는 가장 빠른 캐시 라이브러리임(Theine, Ristretto, Bigcache, Fastcache)
  • 훌륭한 Hit ratio: 우수한 결과를 보여주는 새로운 S3-FIFO 알고리즘이 사용됨

이름이 뭔가 익숙해서 찾아보니 요런게 있었네요
Otter: 컨텍스트 내에서 명령어 튜닝이 가능한 멀티모달 모델
이제 동물 이름으로 뭔가를 만드는 건 하지 말아야 할듯. 아주 희귀한 것이 아닌 이상 대부분 있네요.

AI 분석 의견도 괜찮아서 추가해 봅니다 .

GN⁺의 의견

  • 이 오픈소스 캐시 라이브러리는 Go 개발자들에게 매우 유용할 것으로 보임. 특히 고성능이 필요한 서비스에서 기존 캐시 라이브러리의 성능 한계를 극복하기 위한 대안이 될 수 있음
  • 논문을 기반으로 알고리듬을 적용하여 기존 라이브러리 대비 경쟁력 있는 성능을 확보한 점이 인상적임. 실제 서비스에 적용하기 전에 다양한 벤치마크를 통해 성능을 검증해 볼 필요가 있음
  • 단순한 API로 쉽게 사용할 수 있고, 최신 Go 버전의 제네릭을 지원하는 등 개발 편의성도 높아 보임
  • 비슷한 Go 캐시 라이브러리로는 groupcache, fastcache, ristretto, freecache 등이 있음. 성능 특성과 사용 편의성을 잘 비교해 봐야 할 듯
  • 개인/소규모 서비스보다는 대용량 트래픽을 다루는 서비스에서 유용할 것으로 보임. 캐시 크기를 얼마나 잡을지, Eviction 주기는 어느정도로 할지 등을 잘 고민해야 함. 또한 너무 캐시에 의존하다 보면 일관성 문제가 발생할 수 있으므로 주의가 필요함