티스토리 뷰

728x90
반응형

개요

어플리케이션의 성능 향상은 모든 시스템의 궁극적인 가치이자 목표이다. 좀 더 빠르게 고객에게 서비스하기 위해 새로운 시스템을 오픈하거나, 시스템 고도화 작업을 진행한다.

성능을 향상시키는 방법은 다양하다. 새롭게 시스템을 개선하여 오픈하는 차세대급 프로젝트를 진행하거나, 지속적인 서비스 모니터링을 통해 유지보수해 나가거나, 특정 소프트웨어를 대체하거나, 언어를 변경하거나 때로는 코딩 한줄로도 성능이 개선되는 경우가 있다. 성능 향상의 목표치에 따라 비용과 시간이 소요될 수 있으며, 상황에 적합한 방식을 적용하여 성능 개선을 지속적으로 수행해 나가는 것은 프로젝트를 진행하는 모든 사람들의 궁극적인 목적이다.

Redis와 Memcached로 대표되는 캐싱 서버는 바로 성능을 향상시키는 대표적인 방법 중 하나이다. 지금부터 Redis와 Memcached의 공통점과 차이점을 살펴보고 어떠한 상황에 적합한 캐싱서버를 선택할 수 있는지 알아보도록 하자.


공통점

Feature
key-value 데이터 저장소
데이터 파티셔닝 지원
밀리 초 미만의 지연 시간
NoSQL 제품군
오픈 소스
다수의 프로그래밍 언어 및 클라우드 제공 업체에서 지원

차이점

Feature Redis Memcached
데이터 유형 다양한 데이터 유형 지원
(String, List, Set, Sorted Set, Hash, Hash List, Array, Json)
String
메모리 관리 메모리가 가득찰 경우 디스크를 활용하여 데이터를 저장할 수 있음
디스크에서 최근에 사용된 Key-Value를 메모리로 스왑하는 기능 제공
기본 메모리에만 저장이 가능하지만, extstore를 활용하면 메모리에도 저장이 가능함
데이터 사이즈 512MB 1MB
데이터 지속성
및 복구
RDB 스냅샷과 AOF 로그를 통해 데이터의 지속성을 지원
데이터 복구에 유리
지원하지 않음
클러스터 지원 (분산 캐시) 지원하지 않음
멀티 Thread 지원하지 않음 (싱글쓰레드를 지원하여 서버 당 다중 레디스 구성이 효율)
클라우드 상에서 Scale Out에 유리
지원 (멀티쓰레드를 지원하여 서버 당 단일 레디스 구성이 효율)
클라우드 상에서 Scale Up에 유리
스케일링 수평확장 지원 수직확장 지원
데이터 복제 데이터 가용성을 보장하기 위한 마스터/슬레이브 노드 구성 지원하지 않음
데이터 제거 다양한 형태의 제거 정책 지원
# 참조

https://waspro.tistory.com/697
LRU (최근에 사용된 키)만 지원
트랜잭션 지원 지원하지 않음
pub/sub 지원 지원하지 않음

선택 기준

Memcached는 더 작고 정적인 데이터를 다룰 때 권장한다. 큰 데이터를 처리 할 때 Memcached는 캐시에서 저장 및 검색하는 동안 데이터를 직렬화 및 역직렬화 해야하며 이를 저장하는데 더 많은 공간이 필요하다. 소규모 프로젝트를 다룰 때는 멀티 스레딩 특성과 수직 확장성으로 인해 Memcached를 사용하는 것이 좋다. 클러스터링은 인프라를 구성하는데 상당한 노력이 필요하다.

Redis는 다양한 데이터 유형을 지원한다. 클러스터링 및 데이터 지속성을 지원하여 대규모 애플리케이션에 적합하다. Pub/Sub 및 트랜잭션과 같은 추가 기능을 통해 데이터 저장소 이상의 기능을 수행 할 수 있다.


결론

프로젝트 중 변경 및 마이그레이션을 피하기 위해 시작 단계부터 적합한 캐시 유형을 선택하는 것이 중요하다.

728x90
반응형