1. 왜 사용해야 하나?
분산 캐시 환경 구축에 필요한 비용을 절감하고, 편의성과 성능을 높이는 데 있습니다.
Read 중심의 서비스인 SNS, 게임 등 을 제공해야 하는 환경, 고속으로 데이터를 분석해야 하는 환경에 적합합니다. 또한 데이터베이스의 부하를 줄일 때 , 대용량 분산 캐시 환경을 자체적으로 운영하기에 다소 부담이 있을 때 유용하다고 할 수 있습니다.
In-memory Cache는 모든 데이터를 메모리(RAM)에만 올리고 사용하는 데이터베이스의 일종입니다. 보편적으로 데이터베이스는 디스크에 데이터를 영구적으로 저장해 놓고, 필요한 데이터만 메모리에서 읽어 사용합니다. 이것이 In-memory Cache와 데이터베이스의 가장 큰 차이점입니다.
In-memory Cache는 모든 데이터를 메모리에 올려놓는 것이 특징입니다. 디스크에 접근 없이 메모리로만 모든 처리를 하기 때문에 데이터 저장 및 검색 속도가 매우 빠릅니다. 하지만 데이터는 메모리 크기(운영체제 사용량 제외)까지만 저장할 수 있습니다. 그리고 메모리에만 저장되기 때문에 서버의 전원 공급이 중단되면 데이터는 소멸합니다. 그러므로 주기적으로 디스크에 데이터를 백업하거나 로그를 백업하는 방식이 있지만 데이터를 안전하게 유지하는 방법일수록 캐시 성능은 떨어진다.
서버와 일반 컴퓨터, 인터넷 등에서 캐시라는 단어는 자주 등장하는데, CloudFront에도 파일을 빠르게 전송하기 위해, 세계 각지에 Edge 로케이션을 두고 파일을 캐시 하며 웹 브라우저도 파일을 다시 받아오지 않기 위해 파일을 디스크에 캐시 합니다. In-memory Cache의 캐시도 비슷한 개념으로 사용됩니다.
일반적으로 빠른 처리 속도를 위해 데이터베이스에 저장된 데이터 중 쿼리 결과나 자주 사용되는 데이터를 In-memory Cache에 임시로 저장합니다. 데이터베이스의 데이터가 아니더라도 디스크에 저장된 파일, 인터넷의 데이터, 기타 동적으로 생성되는 데이터 등 In-memory Cache에 저장되는 데이터는 매우 다양합니다.
2. ElastiCache 엔진
ElastiCache는 두 가지 캐시 엔진을 지원합니다.
- Memchached: 분산 메모리 캐시 시스템입니다.
- Redis: String, Hash, list, Set, Sorted Set 등 다양한 데이터 형식을 제공하는 키-값(key-Value) 데이터 저장소입니다.
ElastiCache를 이용하면 Memcached 클러스터를 손쉽게 생성하고 확장할 수 있습니다. Memcached 클러스터는 리전의 가용 영역(AZ)별로 생성할 수 있습니다. Memcached 클러스터는 노드를 계속 추가할수록 데이터를 저장할 수 있는 공간이 늘어납니다.
ElastiCache에서 Memcached는 스냅숏 생성과 Read Replica를 지원하지 않습니다. 그리고 데이터를 저장할 수 있는 메모리 용량은 각 캐시 노드가 제공하는 메모리 용량에 한합니다.
ElastiCache에서는 Redis도 사용할 수 있습니다. Redis는 클러스를 구성할 수 없습니다. 그러므로 노드를 추가한다고 해서 저장할 수 있는 전체 메모리 용량이 늘어나지는 않습니다. 또한 데이터를 저장할 수 있는 메모리 용량은 각 캐시 노드가 제공하는 메모리 용량에 한합니다.
위 그림처럼 Redis는 스냅숏 생성과 Read Replica를 지원합니다. 또한, Read Replica는 Primary에 장애가 발생하면 자동으로 Read Replica가 Primary로 승격되는 Failover가 작동되게 됩니다. 새로운 Primary는 쓰기 작업이 진행되게 됩니다. Read Replica는 Replication Group의 논리적인 내부에 위치하게 됩니다. 마지막으로 Read Replica는 한 리전 안에서 여러 가용 영역 AZ에 생성할 수 있습니다.
Redis 캐시 노드가 제공하는 메모리 용량을 넘어서는 데이터를 저장하기 위해서는 애플리케이션 레벨에서 데이터를 여러 캐시 노드에 분산하여 저장하는 Sharding을 구현해야 합니다.
* 샤딩(Sharding): 일반적으로 데이터베이스와 마찬가지로 인 메모리 캐시도 샤딩을 구현할 수 있습니다. 데이터 종류별로 서버를 분할하는 방식, 사용자 이름순, 날짜 순 등으로 분할하는 방식, 해시 키를 기준으로 분할하는 방식 등 다양한 방식이 있습니다.
3. ElastiCache 예약 캐시 노드
EC2, RDS의 예약 인스턴스처럼 ElastiChache도 예약 캐시 도그가 있습니다. 예약금을 선불로 지불하면 캐시 노드를 1년 또는 3년 동안 예약할 수 있으며 시간당 요금이 대폭 할인됩니다.
- Light 사용률 예약 캐시 노드: 모든 예약 캐시 노드 중에서 선결제 금액이 가장 저렴합니다. 이 캐시 노드 유형은 사용 시간이 많지 않을 때 유용합니다. 종일 사용하지 않고, 특정 개발 및 테스트와 단기 프로젝트에 적합합니다.
- Medium 사용률 예약 캐시 노드: Light보다 선결제 금액은 비싸지만 시간당 요금이 저렴합니다. 이 캐시 노드 유형은 거의 항상 실행하지만 사용량에 약간의 변화가 있을 때 유용합니다.
- Heavy 사용률 예약 캐시 노드: Medium보다 선결제 금액은 비싸지만 모든 예약 캐시 노드 중에서 시간당 요금이 가장 저렴합니다. 이 캐시 노드 유형은 24시간 상시 가동돼야 하는 제품에 유용합니다.
'IT' 카테고리의 다른 글
오라클 락(Lock) 기본 개념 (0) | 2022.07.04 |
---|---|
AWS RDS 인스턴스 생성 (0) | 2022.06.29 |
오라클 캐시 메모리 (0) | 2022.06.27 |
AWS ELB 기본 개념 (0) | 2022.06.24 |
JAVA 기본 개념 및 실습 - 2 (0) | 2022.06.23 |
댓글