Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 금융소득
- S3
- python
- 외국납부세액공제
- serverless
- 클러스터
- 양도소득세
- 공매
- 임업후계자
- Resolver
- 경매
- lambda
- 세금계산서
- 신탁공매
- OpenSearch
- Kubernetes
- kubectl
- boto3
- 농지연금
- 매입불공제
- route53
- 정책자금
- 성능개선
- Filter
- 인덱싱
- 산지
- 산지연금
- AWS
- command
- 이자
Archives
- Today
- Total
진지한 개발자
ElastiCache Redis 본문
728x90
ElastiCache
- 분산 인 메모리 캐시(In Memory Cache)를 손쉽게 생성하고 확장할 수 있는 서비스
- 읽기 중심의 서비스(소셜 네트워크, 게임, 추천엔진 등) 을 제공해야 하는 환경, 고속으로 데이터를 분석해야 하는 환경에 적합
- 두가지 캐신 엔진을 지원 (Memcached : 분산 메모리 캐시 시스템, Redis : String, Hash, List, Set, Sorted Set 등 키-값 데이터 저장소)
- 주의사항 : RDS의 데이터베이스 엔진은 AWS 외부(인터넷)에서 접속이 허용되지만, ElastiCache 의 캐시 엔진은 AWS외부에서 접속할 수 없음. Security Group을 생성해 모든 IP 대역에 대해 접속을 허용하더라도 동일한 VPC에 속한 EC2 인스턴스 에서만 접속할 수 있음
In Memory Cache
- 모든 데이터를 메모리(RAM)에만 올려 놓고 사용하는 데이터베이스의 일종. 일반적인 데이터베이스(RDBMS)는 디스크(HDD, SSD)에 데이터를 영구적으로 저장해 놓고, 필요한 데이터만 메모리에 읽어서 사용함
- 인메모리 캐시는 디스크에 접근하지 않고 메모리로만 모든 처리를 하기 때문에 데이터 저장 및 검색 속도가 매우 빠름. 단 메모리에만 저장되어 있기 때문에 서버의 전원 공급이 중단되면 데이터는 소멸됨
- 보통 빠른 처리 속도를 위해 데이터베이스에 저장된 데이터 중 쿼리 결과나 자주 사용되는 데이터를 인메모리 캐시에 임시로 저장
Redis
- Redis는 Memcached와 달리 노드들끼리 클러스터를 구성할 수 없음. 따라서 노드를 추가한다고 해서 저장할 수 있는 전체 메모리 용량이 늘어나지 않음
- ElastiCache Redis는 Read Replica를 지원합니다. Read Replica는 마스터 캐시 노드에 장애가 발생하면 자동으로 Read Replica가 마스터 캐시 노드로 승격되는 Failover 기능을 지원함
- Redis 캐시 노드가 제공하는 메모리 용량을 넘어서는 데이터를 저장하기 위해서는 애플리케이션 레벨에서 데이터를 여러 캐시 노드에 분산하여 저장하는 샤딩(Shading)을 구현해야 함. Cluster Mode enabled 를 선택하면 Redis에서 샤딩(Shading) 셋팅이 활성화 됨 (Number of Shards, Replicas per Shard)
- Failover 기능 사용시 Master 캐시 노드의 문제가 생길 경우 Read Replica 가 Master 캐시 노드로 승격 됨
클러스터 구성
1) 싱글 클러스터 노드
2) 클러스터 모드 없이 Replication 만 지원 (클러스터 모드 X)
3) 클러스터 모드와 Replication 모두 지원 (클러스터 모드 O) : Rrimary/Replica Node 로 shard를 여러 벌 준비하여 data partitioning
클러스터 구성별 특징
- 가용성이 중요한 상용 프로덕션 환경이라면 Replication은 필수적. 다만 Replication은 수직 확장만 지원한다는 단점 있음
- 클러스터 모드는 위 테이블에서 볼 수 있듯이 샤드를 이용한 수평 확장(scaling)이 가장 큰 특징임. 이를 이용해 최대 90개 샤드에서 100TB 용량의 큰 데이터 규모로 스케일 확장이 가능함. 이는 새로운 서비스의 워크 로드의 저장 용량 산정이 어려울 경우에 대한 대비도 가능함.
- read 작업이 많을 때는 하나의 샤드 안에 read replica를 추가하는 방식(최대 5개)을 사용하고 write 작업이 많을 때엔 클러스터 모드를 통해 추가적인 write endpoints(추가적인 primart node)를 새로운 샤드를 통해 얻어오는 방식이 바람직함.
데이터 샤딩 (Data Sharding)
Redis는 모든 캐시 키가 해시 슬롯(hash slot)에 매핑하는 방식으로 샤딩을 활용함. 1개의 클러스터는 16,384개의 해시 슬롯을 사용할 수 있고 일반적으로 클러스터 내 총 샤드에 균등하게 배포함.
이는 동일한 캐시키를 사용하는 데이터는 모든 Redis 노드에 read/write가 가능하다는 의미임. 워크 로드가 증가하면 가용성을 확보하고 성능 지연을 줄이기 위해 복수 노드에 워크 로드를 분산함. 이때에도 redis 클라이언트는 하나의 endpoint에 접속하며 redis 내부에서 로드를 분산하는 구조임
캐싱 전략
- Lazy Loading
- 데이터 요청이 있을때만 캐싱 됨. 최초 한번은 데이터를 조회해야만 캐싱이 됨. 최초 조회시 DB에 직접 요청하므로 느림. 반면에 데이터가 갱신 되었을 때 기존에 캐싱 된 데이터만 무효화 시키면 되는 장점 있음
- Write-through
- 데이터 갱신 시 캐시와 DB에 모두 업데이트하는 방식. DB가 업데이트 될 때마다 별도로 캐시도 업데이트 해줘야 하는 수고로움이 있음. 데이터 조회시 항상 캐시에서 조회 하므로 속도가 빠름
사용사례
- 캐싱 : 데이터베이스 쿼리 결과 캐싱, 영구 세션 캐싱 및 전체 페이지 캐싱
- 채팅/메시징 : 패턴 매칭과 더불어 PUB/SUB 표준을 지원함. PUB/SUB를 사용하여 게시된 이벤트를 기반으로 작업을 트리거 가능
- 지리공간 : 대규모의 실시간 지리 공간 데이터를 빠르게 관리할 수 있도록 특별히 구축된 인 메모리 데이터 구조 및 연산자를 제공
- 기계학습
- 미디어스트리밍 : CDN이 동시에 수백만 명의 모바일 및 데스크톱 사용자에게 비디오를 스트리밍할 수 있도록 사용자 프로필 및 열람 기록에 대한 메타데이터, 수백만 사용자의 인증 정보/토큰, 매니페스트 파일을 저장하는 데 사용할 수 있음
- 대기열 : 리스트 데이터 구조를 제공하므로 간단한 영구 대기열을 손쉽게 구현 가능. 자동 작업 및 차단 기능을 제공하여 신뢰할수 있는 메시지 브로커 역할 가능
- 실시간 분석 : Apache Kafka, Amazon Kinesis 등과 같은 스트리밍 솔루션에 인 메모리 데이터 스토어로 사용하여 1밀리초 미만의 지연 시간으로 실시간 데이터를 수집, 처리 및 분석할 수 있습니다. ElastiCache는 소셜 미디어, 광고 타게팅, 개인화, IoT 및 시계열 데이터 분석과 같은 실시간 분석 사용 사례에 매우 적합
- 세션 스토어 : 사용자 인증 토큰, 세션 상태 등 세션 정보를 관리하는 세션 스토어로 사용하기에 매우 적합함. Redis용 Amazon ElastiCache를 세션 키에 대한 적절한 TTL과 함께 빠른 키-값 스토어로 사용하면 세션 정보를 관리할 수 있음. 세션 관리는 게임, 전자 상거래 웹 사이트, 소셜 미디어 플랫폼을 비롯한 온라인 애플리케이션에 주로 필요
728x90