ElastiCache

combi_jihoon·2022년 3월 10일
0

aws solutions architect

목록 보기
21/57
post-thumbnail

ElastiCache

  • 관리된 Redis나 Memcached를 제공해 준다.
    - 마치 RDS가 관리된 Relational Database를 제공해 주는 것과 마찬가지이다.
    - RDS에서와 같이 aws에서 os 관리, 패칭, 최적화 등등의 작업을 관리해 준다.
  • 캐시는 인메모리 데이터베이스로 높은 성능과 낮은 지연 시간을 갖는다.
  • 또한, 무거운 읽기 작업에 대한 데이터베이스의 부하를 낮춰 준다.
  • 이를 통해 application은 stateless 상태가 된다.
  • 캐시를 사용하기 위해서는 어플리케이션에 대한 코드 변경 작업이 필요하다.

Solution Architecture - DB Cache

  • 애플리케이션은 ElastiCache를 쿼리 해 캐시가 생성 되었는 지를 확인한다.
    - 만약 저장된 캐시가 있다면 Cache hit
    - 저장된 캐시가 없다면 Cache miss: 이 경우 DB에서 데이터를 읽어 와야 한다. 그리고 ElastiCache에 데이터를 write 해서 다음번에는 동일한 쿼리가 캐시 히트로 나올 수 있도록 만든다.
  • 캐시는 현재의 데이터만 사용되어야 하기 때문에 캐시 무효화 전략이 반드시 있어야 한다.



Solution Architecture - User Session Store

  • 유저가 로그인하면 해당 세션 정보를 ElastiCache에 캐싱하며 나중에 다른 인스턴스로 접근할 경우 세션 정보가 있기 때문에 유저는 또 다시 로그인 하지 않아도 된다.


Redis vs Memcached

  • Redis
    - RDS와 매우 유사한 특성: 고 가용성, 읽기 복제본, 백업 등등을 갖는다.
  • Memcached
    - Multi-node를 사용하는데 이를 샤딩이라 한다.
    - 높은 가용성을 지니지 않아 replication이 일어나지 않는다.
    - 영구적이지 않고 백업과 저장도 없다.
    - 멀티 스레드 아키텍쳐: 다수의 인스턴스가 캐시 안에서 샤딩과 함께 동작하는 것이다.
    - 높은 성능의 분산 메모리 캐싱 시스템이다.


Cache Security

  • ElastiCache내의 캐시는 IAM 인증을 지원하지 않는다.

  • ElastiCache 사용을 위한 정책은 AWS API-level의 보안만이 해당된다.
    - 캐시 생성, 제거 등을 의미한다.

  • Redis AUTH
    - Redis 인증을 위해 사용한다.
    - Redis cluster 생성시 패스워드/토큰을 설정할 수 있다. -> 따라서, 설정 후에는 캐시에 접근할 때 비밀번호를 입력해야 한다.
    - 이는 캐시를 대상으로 하는 보안 그룹 수준 이상의 보안 기능이다.
    - in-flight 암호화를 위해 SSL 인증을 사용할 수도 있다.

  • Memcached의 경우 SASL이라는 약간 다른 종류의 advanced 인증 기능을 제공한다.



ElastiCache의 데이터 로딩 패턴

Lazy Loading

모든 read 데이터가 캐싱 되고 데이터는 캐시에 오래 있을 수 있게 된다.
캐시 히트가 없는 경우에만 ElastiCache로 데이터를 로드하기 때문에 Lazy Loading이라 불린다.

Write Through

DB에 쓰기 작업이 일어날 때마다 캐시를 업데이트 하여 오래된 데이터가 없도록 한다.

Session Store

임시 세션 데이터를 캐시에 보관할 수 있으며 TTL 설정이 가능해 세션을 만료할 수 있다.



ElastiCache 사용 사례

게임 리더보드 생성

Redis Sorted Sets

  • 유일성을 보장하며 원소를 정렬해 준다.
  • 원소가 추가될 때마다 실시간으로 순위가 매겨지며 올바른 순서로 수정 된다.
  • 만약 레디스 클러스터가 있다면 실시간으로 1, 2, 3 등의 플레이어 순위를 보여주는 리더 보드를 생성할 수 있다.
  • 모든 레디스 캐시는 동일한 리더보드를 사용할 수 있다.



오답노트

  • 읽기 전용 복제본은 자체 DNS 이름을 가진 새로운 endpoint를 갖게 된다.
    - 읽기 부하의 균형을 조절하려면 애플리케이션 생성시 읽기/쓰기를 개별적으로 참조하도록 해야 한다.

profile
쿄쿄

0개의 댓글