AWS(Amazon Web Service)

[AWS] ElastiCache

yunseohhe 2024. 10. 12. 21:07

ElastiCache Overview

  • RDS가 관계형 데이터베이스를 관리하는 것과 같은 방식이다.
  • 캐싱 기술인 Redis 또는 Memcached를 관리할 수 있도록 도와준다.
  • 애플리케이션의 상태를 'ElastiCache'에 저장해서 애플리케이션을 상태 비저장형으로 할 수 있게 도와준다.
  • ElastiCache를 사용하는 경우, 애플리케이션의 코드를 많이 바꿔야 한다.
      : 캐시를 쿼리하도록 애플리케이션을 변경해야 하니깐(데이터베이스를 쿼리하기 전이나 후에도)

cf ) 캐시란?
   - 매우 높은 성능과 짧은 지연 시간을 가진 인메모리 데이터베이스이다.
   - 읽기 집약적인 워크로드에서 데이터베이스의 로드를 줄여준다.
   - 일반적인 쿼리는 캐시에 저장되므로, 매번 데이터베이스를 쿼리하지 않아도 되서 캐시만 사용하여 쿼리의 결과를 검색할 수가 있다.

 

ElastiCache Solution Architecture - DB Cache

(출처 : 구글이미지)

  • 캐시히트
     - 쿼리가 이미 발생하여 ElasticCache에 저장되어 있는 것이다.
     - 쿼리를 수행하기 위해 데이터베이스로 이동하는 시간이 절약된다.
  • ElasticCache에 쿼리를 보내고, ElasticCache에 데이터가 없는 경우(=캐시미스) RDS에서 가져와 ElasticCache에 저장한다.
      = RDS 데이터베이스의 로드를 줄이는데 효과적이다.

ElastiCache Solution Architecture - User Seccion Store

(출처 : 구글이미지)

  • 위의 이미지 아키텍처는 '사용자 세션 저장'이다. 애플리케이션을 '상태 비저장'으로 만드는 것이라고 생각하면 된다.
     = 즉, 사용자가 어떤 애플리케이션에 로그인하면, 애플리케이션이 세션 데이터를 Amazon ElasticCache에 사용하는 것이다.
  • 사용자가 애플리케이션의 다른 인스턴스로 리디렉션되면, 애플리케이션은 그 세션의 새션 캐시를 ElasticCache에서 직접 검색할 수 있으므로, 사용자는 여전히 로그인 상태인 것이다. 다시 한번 더 로그인 할 필요가 없다.
     = 즉, 사용자의 세션 데이터를 ElasticCache에 기록해서  애플리케이션을 상태 비저장형으로 만드는 것이다.

 

ElastiCache - Redis vs Memcached

Redis (출처 : 구글이미지)

  • Redis의 경우, 자동 장애 조치 기능이 있는 다중AZ가 있고, 읽기 복제본이 있다.
  • 읽기를 확장하고 고가용성도 가지고 있다.(RDS와 매우 유사)
  • AOF 지속성을 이용한 데이터 내구성이 있다.
  • 백업 및 복원 기능이 있다.
  • 세트 및 정렬된 세트를 지원한다.

Memcached (출처 : 구글이미지)

  • Memcached의 경우, 데이터 분할을 위해 멀티 노드를 사용한다. (= '샤딩'이라고 한다.)
  • 고가용성이 없고 복제가 일어나지 않으며 영구 캐시가 아니다.
  • 백업 및 복원도 없다.
  • 멀티스레드 아키텍처이다.
  • 여러 인스턴스가 모두 샤딩을 통해 작동한다.

Redis와 Memcached의 차이 정리

  • Redis
      - 고가용성, 백업, 읽기 복제본 등을 위해 존재한다.
      - 데이터 내구성에 대한 것이고, 복제되는 캐시라고 생각하면 된다.
  • Memcached
      - 분산되어 있는 순수한 캐시이다.
      - 데이터가 손실되어도 괜찮은 경우이고 고가용성이 없으며, 백업 및 복원 기능이 없다.

 

ElastiCache - Cache Security(보안)

  • Redis에서만 IAM 인증을 지원한다.
      - 나머지 경우에는 사용자 이름과 비밀번호를 사용하면 된다.
  • ElasticCache에서 IAM정책을 정의하면 AWS API 수준 보안에만 사용된다.
  • Redis AUTH
      - Redis 내 보안을 통해 비밀번호와 토큰을 설정할 수 있다.
          : Redis 클러스터를 만들 때, 캐시에 추가 보안 수준을 제공하는 것이다.
      - SSL 전송 중 암호화도 지원한다.
  • Memcached
      - SASL 기반 승인을 제공한다.
          : 상당히 고급 메커니즘이다.
  • 요약
      - 예를 들어, EC2 인스턴스와 클라이언트가 있는 경우 Redic AUTH를 사용하여 Redis 클러스터에 연결 할 수 있고, Redis 보안 그룹에 의해 보호된다. 또한 인플라이트 암호화를 사용하거나,  Redis에서 IAM 인증을 활용할 수 있다.

(출처 : 구글이미지)

 

Patterns for ElastiCache
(ElastiCache에 데이터를 로드하는 패턴 3가지)

  • Lazy Loadig(지연로딩)
      - 모든 데이터가 캐시되고 데이터가 캐시에서 지체될 수 있다.
      - 지연 로딩이라고 불리는 이유는 캐시 히트가 없는 경우에만 데이터를 ElastiCache에 로드하기 때문이다.
  • Write Through
      - 데이터베이스에 데이트가 기록될 때마다 캐시에 데이터를 추가하거나 업데이트 하는 것이다.
      - 데이터가 지체되지 않는다.
  • Session Store
      - 캐시를 세션저장소로 사용가능하다.
      - TTL(유지 시간 기능)을 사용해 세션을 만료할 수 있다.

(출처 : 구글이미지)

  • 애플리케이션에 캐시 히트가 있는경우, ElastiCache는 캐시에서 데이터를 가져온다.
  • 캐시 미스의 경우, 데이터베이스에서 읽고 캐시에 쓰게 된다.

 

ElastiCache - Redis Use Case(사용 사례)

  • Gaming Leaderboards(게이밍 리더보드)
       - 매우 복잡하다.
       - 게임 어느 시점에 누가 1위고, 2위고, 3위인지 가려내는 개념
  • Redis의 자료 구조 중 고유성과 요소 순서를 모두 보장하는 '정렬된 세트'라는 자료형을 사용하게 된다.
  • 요소가 추가될 때마다, 실시간으로 순위를 매긴 다음 올바른 순서로 추가가 된다.
      - Redis 클러스터가 있는 경우, 실시간으로 1, 2, 3위 플레이어가 있는 실시간 리더보드를 생성한다는 개념
      - 모든 Redis 캐시는 동일한 리더보드를 사용할 수 있다.
      - 즉, 클라이언트가 Redis를 사용하여 Elasticacahe와 통신할 때 클라이언트는 실시간 리더보드에 액세스 할 수 있고, 애플리케이션 측에서 이 기능을 프로그래밍 할 필요가 없다.
      - 정렬된 세트와 함께 Redis를 활용하여 실시간 리더보드에 액세스 할 수 있다.

(출처 : 구글이미지)

'AWS(Amazon Web Service)' 카테고리의 다른 글

[AWS] DNS(Domain Name System)  (2) 2024.10.13
[AWS] 알아두면 좋은 포트 목록  (0) 2024.10.12
[AWS] RDS Proxy  (1) 2024.10.11
[AWS] RDS & Aurora Security  (0) 2024.10.10
[AWS] RDS & Aurora 백업  (1) 2024.10.09