티스토리 뷰
개요
어플리케이션의 성능 향상은 모든 시스템의 궁극적인 가치이자 목표이다. 좀 더 빠르게 고객에게 서비스하기 위해 새로운 시스템을 오픈하거나, 시스템 고도화 작업을 진행한다.
성능을 향상시키는 방법은 다양하다. 새롭게 시스템을 개선하여 오픈하는 차세대급 프로젝트를 진행하거나, 지속적인 서비스 모니터링을 통해 유지보수해 나가거나, 특정 소프트웨어를 대체하거나, 언어를 변경하거나 때로는 코딩 한줄로도 성능이 개선되는 경우가 있다. 성능 향상의 목표치에 따라 비용과 시간이 소요될 수 있으며, 상황에 적합한 방식을 적용하여 성능 개선을 지속적으로 수행해 나가는 것은 프로젝트를 진행하는 모든 사람들의 궁극적인 목적이다.
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 및 트랜잭션과 같은 추가 기능을 통해 데이터 저장소 이상의 기능을 수행 할 수 있다.
결론
프로젝트 중 변경 및 마이그레이션을 피하기 위해 시작 단계부터 적합한 캐시 유형을 선택하는 것이 중요하다.
'⑦ Open Source Software' 카테고리의 다른 글
Netdata를 활용한 EKS Observability and Analysis (0) | 2021.08.11 |
---|---|
Redis 운영관리 (Redisinsight & RMA) (1) | 2021.07.02 |
Redis5 설계하기 총정리 (0) | 2021.05.15 |
Redis5 Cluster 구성하기 (0) | 2021.05.05 |
Embedded JupyterHub Content-Security-Policy Issue (0) | 2020.01.08 |
- Total
- Today
- Yesterday
- aa
- Docker
- OpenStack
- aws
- 마이크로서비스
- API Gateway
- nodejs
- JBoss
- 오픈스택
- node.js
- Architecture
- jeus
- 마이크로서비스 아키텍처
- k8s
- wildfly
- git
- 쿠버네티스
- Da
- SA
- webtob
- apache
- SWA
- JEUS6
- MSA
- JEUS7
- openstack token issue
- kubernetes
- 아키텍처
- TA
- openstack tenant
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |