기술 의사 결정 < Redis >

김규현·2025년 6월 27일
0

개요

적용 영역 : 검색 캐싱, pub/sub 기반 알림, 분산락 기반 예약 시스템 등

도입 배경

우리 서비스는 사용자 수 증가 및 비동기 알림, 빠른 검색, 트래픽 폭증에 따른 동시성 문제 해결이 필요하다고 생각하여 Redis를 사용

서비스 확장에 따라 사용자 증가 및 데이터 요청량이 늘어날 것을 생각해서 성능 아래에 성능이슈 문제가 발생 할 수 도 있다는 점을 고려

  • 동일 키워드에 대한 반복 검색으로 인한 DB 부하

  • 사용자에게 보내야 할 실시간 알림이 지연

  • 예약 기능에서 동시 요청에 따른 중복 처리 발생 위험

이러한 점들을 고려 하여 해결 하기 위해 데이터 접근 속도 향상, 실시간 처리 가능성, 분산 환경에서의 동기화가 가능한 캐시 시스템이 필요 하다고 생각하여 Redis를 적용

그렇다면 왜 ? 다른 캐시 기술들이 아닌 Redis를 사용 했는 가 라는 점에서는

캐시 기능에는 Oracle Coherence, Nginx + Fast CGI 캐시, CDN 캐시 (cloudflare) 등 여러가지 기술들이 있다 그럼에도 Redis를 사용한 이유는 아래에 비교 정리를 확인

Oracle Coherence

  • 장점 : 고신뢰, 대규모 분산 캐시 가능

  • 단점 : 복잡한 설정, 높은 비용

Redis 와의 비교

  • Reids 보다 안정성이 높지만 초기 진입 장벽이 크고 높은 비용이 발생

  • 여기서 초기 진입 장벽에 대한 점은 Redis 는 단일 실행 파일로 작동 가능 , 로컬에서 바로 docker run rdis만 해도 실행 가능
    반면, Oracle Coherence

  • 캐시 설정 XML

  • 클러스터 토폴로지

  • Discovery 방식 (Multicast vs Well-known Address)

  • Coherence Extend 설정 (클라이언트-서버 모드)

시작 과정에서만 봐도 차이점이 많이나고

이후 운영/배포 복잡도에서도 Oracle CoherenceRedis보다 번거로움이 발생

Redis는 단일 인스턴스로 시작해서, 추후에 Sentinel 또는 Cluster로 확장 가능

Oracle Coherence는 기본적으로 클러스터를 염두에 둔 구조라, 단일 개발/테스트 환경 구성 조차 무거움

이러한 문제와 라이선스/비용/접근성 문제, 커뮤니티와 자료 부족, Spring 생태계 통합 등의 이유로 Oracle Coherence는 적합 하지 않다고 판단

Nginx + FastCGI 캐시

  • 장점 : 웹 정적 자원 캐싱에 최적

  • 단점 : 동적 요청 캐싱 불가

Redis 와의 비교

  • Redis는 정적/동적 모두 대응 가능

우리 서비스에서는 동적 자원들이 존해하여 Nginx + FastCGI 캐시도 사용이 적합 하지 않다고 판단

CDN 캐시 (Cloudflare 등)

  • 장점 : 전 세계 엣지 캐싱, 속도 향상

  • 단점 : 컨텐즈 제어 어려움, 실시간성 부족

Redis 와의 비교

Redis는 서버 내부에서 즉시 캐싱 가능 이러한 이유로 CDN 캐시 또한 적합 하지 않다고 판단

결국 Redis 선택 이유 종합

  • 동적 데이터 캐싱이 필요, 검색 결과, 알림, 예약 상태 등은 실시간으로 변동 -> CDN 캐시, Nginx 캐시 부적합
  • 간단한 구조와 낮은 진입 장벽으로 빠르게 적용 가능 -> Coherence는 운영/비용 측면에서 부적합
  • pub/sub 기반 실시간 알림, 분산락 구현, Set/Hash 기반 구조화된 캐싱 가능
  • Spring과의 연동이 유리하며, 관리 및 유지보수 부담이 적음

결론

단순한 정적 캐싱만 필요한 경우라면 Nginx나 CDN 캐시도 가능 했겠지만, 검색 캐싱, 예약 분산락, 실시간 알림 등 다양한 점들을 해결이 필요했고, 현재는 배워가는 단계에서 비용적인 문제가 발생 하는 점도 고려 해봤을때, Redis가 속도, 유연성, 확장성 측면에서 가장 적합한 선택이라고 판단 하여 적용

0개의 댓글