Amazon ElastiCache Overview
- RDS에서 관리된 관계형 데이터베이스를 제공받는 것과 같이
ElastiCache는 관리된 Redis나 Memcached를 제공해 주는 캐시 기술 - 캐시란 인 메모리 데이터베이스로 높은 성능과 짧은 지연 시간을 가지며
읽기 집약적인 워크로드에 대한 데이터베이스의 부하를 줄이는 데 도움이 됨 - 쿼리의 결과를 얻기 위해 데이터베이스에 매번 쿼리되지 않고 캐시만 사용할 수 있는 장점이 존재하여
애플리케이션을 Stateless로 만드는 데 도움이 됨 - RDS와 동일한 이점을 가지고 있기 때문에 AWS는 운영체제에 대한 동일한 유지 보수, 동일한 패치, 최적화, 셋업,
환경설정, 모니터링, 장애 처리, 백업을 사용 - ElastiCache를 사용하면 캐시를 쿼리하기 위해 애플리케이션의 무거운 코드 변경이 필요
ElastiCache Solution Architecture - DB Cache
- ElastiChce, RDS 데이터베이스, 애플리케이션이 있을 때
애플리케이션은 쿼리가 만들어지고 있는지를 확인하기 위해 ElastiCache를 쿼리할 것이며
만약 쿼리가 생성되었고 ElastiCache에 저장이 되면 캐시 히트가 일어났다고 하며 ElastiCache로부터 바로 답을 얻게 되고
쿼리를 하기 위해 데이터베이스를 위한 트립을 저장
만약 ElastiCache를 쿼리하며 사용할 수 없는 캐시 미스의 경우 데이터베이스로부터 데이터를 가져와야 하기 때문에
데이터베이스로부터 read하고 다른 애플리케이션이나 인스턴스가 동일한 쿼리를 생성할 경우를 위해
캐시로 다시 데이터를 write하여 다음에 동일한 쿼리가 캐시 히트가 일어날 수 있도록 함
- 이를 통해 RDS 데이터베이스로부터 부하를 완하할 수 있으며 데이터를 캐시에 저장하고 있기 때문에
가장 최신의 데이터만 캐시에서 사용되도록 하는 캐시 무효화 전략이 있어야 함
ElastiCache Solution Architecture – User Session Store
- 애플리케이션을 Stateless하게 만들기 위해 사용자 세션을 저장
사용자가 애플리케이션의 어떤 계정으로 로그인하면 애플리케이션이 세션 데이터를 ElastiCache에 write
만약 사용자가 애플리케이션의 다른 인스턴스로 리다이렉트되면 애플리케이션은 ElastiCache로부터 세션 캐시를 얻게 됨
이로 인해 사용자는 로그인을 한 후 다시 한 번 로그인을 할 필요가 없어짐
즉, 사용자의 세션 데이터를 ElastiCache에 write함으로써 애플리케이션을 Stateless하게 만든 것
ElastiCache – Redis vs Memcached
- Redis는 Multi AZ와 자동 장애 조치를 하는 기술이며 Read Replica는 read를 확장하기 위해 사용되며 높은 가용성을 가짐
영속성에 따른 데이터 지속성도 가지고 있으며 백업과 저장 속성 또한 가지고 있어 RDS와 유사
- Memcached는 데이터 파티션 (분배)을 위해 Multi Node를 사용하며 이를 샤딩이라고 함
높은 가용성이 없으며 복제가 행해지지 않고 영구 캐시가 존재하지 않으며 백업과 저장도 존재하지 않으나
멀티 스레드 아키텍쳐이므로 다수의 인스턴스가 캐시 안에서 샤딩과 함께 작동
<ElastiCache 실습>
- 일래스틱 캐시 생성
클러스터 엔진에는 Redis와 Memcached의 두 가지 옵션이 존재
Redis는 자동 장애 조치와 강화된 견고성을 가진 다중 AZ를 제공하며 클러스터 모드를 활성화해서
견고성과 확장성을 더 추가할 수 있으며 지속성을 가지고 데이터베이스, 캐시, 메시지 브로커에 사용할 수 있음
Memcached는 고성능의 분산 메모리 객체 캐싱 시스템이며 데이터베이스로 사용할 수 있는 Redis와 달리 단순 캐시 역할을 함
MyFirstRedis라고 이름을 지정하고 My first Redis instance라고 설명을 적어 레디스 클러스터 엔진을 생성
엔진 버전 호환성은 최신 버전으로 선택하고 포트는 레디스의 표준 포트인 6379번으로 설정
매개변수 그룹은 기본값으로 선택하며 노드 유형은 프리 티어인 cache.t2.micro를 선택하며 복제본은 0으로 설정
만약 복제본이 있다면 다중 AZ 설정이 생기게 됨
서브넷 그룹은 my-first-subnet-group으로 저장하고 동일하게 설명을 입력한 후 VPC 아이디를 선택하고 서브넷을 선택
보안 그룹은 기본값으로 설정하며 KMS로 미사용 데이터 암호화를 설정할 수 있고 전송 중 암호화를 선택할 수 있음
전송 중 암호화를 선택하면 레디스 인증 기본 사용자 액세스를 활성화할 수 있고 이를 통해 토큰을 생성할 수 있음
토큰은 원하는대로 설정할 수 있으며 애플리케이션이 레디스에 작동하게 하기 위해 레디스와 연결하는데 필요
하지만 이를 비활성화하면 레디스 인증 옵션도 없게 됨
클러스터 노드로 가져올지 여부와 백업을 설정할 수 있고 백업 보존 기간을 1일로 생성하여 일래스틱 캐시 생성
백업은 Memcached에는 없고 레디스에만 있는 기능 - 일래스틱 캐시의 레디스 구조 확인
1개의 인스턴스가 생성된 것을 확인할 수 있으며 레디스 드라이버를 다운로드해 레디스 캐시와 상호작용해야만 사용할 수 있음
- 실습이 끝나면 레디스 클러스터를 삭제
'Cloud > AWS' 카테고리의 다른 글
[SAA] 친숙한 포트 목록 (0) | 2022.03.09 |
---|---|
[SAA] ElastiCache 솔루션 아키텍트 (0) | 2022.03.09 |
[SAA] Aurora 고급 개념 (0) | 2022.03.08 |
[SAA] Aurora 개요 (0) | 2022.03.08 |
[SAA] RDS 암호화 + 보안 (0) | 2022.03.07 |