본문 바로가기

자격증/SAA

[SAA] Elasticache

Elasticahe

  • Redis 또는 Memcached의 관리형 서비스
  • in-memory DB
  • 낮은 지연율
  • 높은 성능
  • DB 읽기 부하 감소
  • 애플리케이션의 무상태성을 지원 (루즈, 로그인 세션)
  • OS와 관련된 모든 요소 AWS에서 관리
  • 다른 SDK를 사용하여 cache가 적용되지 않았던 서비스에 적용할 때 코드 변경 (많이) 필요

Elasticache - Redis

  • 멀티 AZ
  • 복구 자동화
  • 읽기 복제본 사용 가능
  • AOF(Append Only File) 영속성을 통해 데이터 관리 가능 (읽기 이벤트 저장 -> 복구 및 영속성, 복제본 생성에 사용)
  • 백업 및 복구 기능
  • Sorted Set / Set 기능 지원

Elasticache - Memcached

  • 여러 노드간 데이터 샤딩 가능
  • 읽기 복제본 사용 불가
  • 영속성 관리 불가
  • 복구, 백업 불가
  • 멀티 스레드 아키텍처 지원

캐시 보안

  • IAM 기반 인증 제공
  • IAM 정책을 통한 보안은 AWS API 레벨에서만 동작
  • Redis AUTH (자체적 보안)
    • 비밀번호 / 토큰 생성 시 설정
    • 필요할 때만 설정하면 됨
    • SSL 암호화 통신 지원
  • Memcached
    • SASL 기반 인증 지원
  • 최소한의 보안은 직접 지켜야 한다.

활용

  • Lazy Loading 패턴 사용 가능
    • 업데이트 시 캐시에 저장
    • 리얼타임 데이터가 아닐 수 있음
  • Session 관리 용도로 사용 (stateless를 위해)
  • 캐시 사용시 네이밍과 캐시 정합성 검사(Lazy Loading 패턴 시)를 제외하면 어렵지 않음.
    • 중요하고 불변성이 유지되어야 한다면, 사용하지 않는 것이 좋다.
    • 혹은 메인 DB에만 적용하는 것도 괜찮다. (복잡성 때문인 듯)
    • 메인 DB에만 적용하는 경우, 영속성을 위해 Redis를 사용할 것.
  • Redis의 경우, Sorted Set 사용 가능
    • 순서 보장
    • Unique 보장

Lazy Loading 동작 구조

  • 캐시를 가져오려고 시도
  • 없으면(캐시 미스) RDS를 통해
  • 가져온 데이터를 캐시에 저장하고 반환
  • 하는 모든 과정을 애플리케이션에서 해줘야 하기 때문에 기존 로직의 변경이 많이 요구됨

동작 예시 (stateless)

  • 로그인 세션을 캐시에 저장
  • 저장된 캐시를 기반으로 다른 서버에서도 확인 가능
  • 로컬 캐시 대신 사용
  • 여러 인스턴스가 있을 경우에는 필수

Lazy Loading 외의 데이터 저장 방식

'자격증 > SAA' 카테고리의 다른 글

[SAA] S3  (0) 2024.11.21
[SAA] Route53  (0) 2024.11.20
[SAA] RDS  (0) 2024.11.15
[SAA] Load Balancer  (0) 2024.11.12
[SAA] ENI (탄력적 네트워크 인터페이스)  (0) 2024.10.06