🌦 Cloud

[AWS/SAA-03] ElastiCache

핑크빛연어 2023. 5. 2. 00:01

 

💝 ElastiCache

✅ ElastiCache

ElastiCache 아키텍쳐 - DB 캐시, 사용자 세션 저장

✅ Redis vs Memcached

✅ 캐시 보안

✅ ElastiCache 패턴 (3가지)

Redis 사용사례

 

 

 

🚨 Amazon ElastiCache

 클라우드에서 분산된 인메모리 데이터 스토어 또는 캐시를 손쉽게 생성하고 확장할 수 있는 웹 서비스

관계형 DB 를 관리한다

✤ 캐시 기술을 관리한다

✤ 캐시는 높은 성능빠른 응답시간낮은 지연 시간을 가진 인메모리 DB

읽기 집약적인 워크로드의 부하를 줄이는데 도움이 된다

 애플리케이션 무상태로 만들 수 있도록 함

 AWS 는 동일한 유지보수 수행, 운영체제, 패치, 최적화, 설정, 구성, 모니터링, 장애회복, 백업수행

ElastiCache 사용 시 몇가지 어려운 코드변경을 요청할 수 있다

 빠른 응답시간이 필요한 애플리케이션에 사용

 기존의 RDS 와 연결하여 DB 응답성능을 개성하기 위해 사용 (자주 사용하는 DB 데이터를 캐시)

 세션 스토어, 게임 리더보드, 스트리밍 및 분석과 같이 내구성이 필요하지 않는 기본 데이터 스토어로 사용

 오픈소스 인메모리 데이터베이스 솔루션인 Redis 또는 Memcached 두가지 유형 지원

 Memcached 는 멀티쓰레드 지원, Redis 는 싱글쓰레드만 지원

 일반적으로 Redis 가 더 많은 기능을 지원 (스냅샷 백업, 복제기능, 고가용성 제공 등)

 

 

 

🚨 ElastiCache 사용을 위한 아키텍처 - DB 캐시

 애플리케이션은 ElastiCache 를 쿼리하고, 사용할 수 없는 경우 RDS 에서 가져와 ElastiCache 에 저장한다

 RDS DB 부하를 줄이는데 도움을 줌

 캐시에는 최신 데이터만 사용하도록 무효화 전략이 있어야함

 캐시 히트(Cache hit) : 쿼리가 이미 생성되었는지, 이미 생성되어 ElastiCache 에 저장되었는지 확인 → 쿼리하기 위한 DB 동선 줄여줌

 

 

 

🚨 ElastiCache 사용을 위한 아키텍처 - 사용자 세션 저장 (User Session Store)

사용자의 세션 데이터를 ElastiCache 에 기록해서 애플리케이션을 무상태로 만드는 것

 사용자가 애플리케이션에 로그인하면 애플리케이션이 ElastiCache 에 세션 데이터를 기록한다

 사용자가 애플리케이션의 다른 인스턴스로 리다이렉션되면 애플리케이션은 ElastiCache 에서 직접 세션 캐시를 검색할 수 있다

 사용자는 계속 로그인한 상태로 한번 더 로그인할 필요 X

 

 

 

🚨 ElastiCache - Redis vs Memcached

Redis Memcached
  • 다중 장애 조치로 다중 AZ 를 수행

  • 읽기 전용 복제본은 스케일리에 사용하고 높은 가용성을 갖는다

  • 지속성 O, 데이터 내구성 O

  • 백업 O, 기능 복원 O 

  • 싱글쓰레드만 지원

  • 
데이터분할에 다중노드 사용 (샤딩 sharding) → 데이터 손실 X

  • 가용성 ⬇️, 복제 X

  • 자속적 캐시 X

  • 백업 X, 복원 X

  • 다중쓰레드 아키텍쳐

  • 몇몇 샤딩과 함께 캐시에서 실행되는 여러 인스턴스가 있다

  • 샤딩(sharding) : 대규모 데이터를 저장하기 위해 데이터를 여러 조각으로 나눠 저장하는 기술

 

 

 

🚨 ElastiCache - 캐시 보안 (Cache Security)

ElastiCache 의 모든 캐시는 IAM 인증 지원 X

ElastiCache 에서 정의할 IAM 정책은 AWS API 수준 보안에서만 사용 (캐시 생성, 캐시 삭제)

 캐시 내 모든 작업은 IAM 사용 X

 

Redis

  • Redis AUTH 사용해 Redis 인증함

  • Redis 클러스터 생성 시 비번/토큰 설정 가능

  • 캐시에 사용할 수 있는 보안그룹에 대한 추가적인 수준의 보안

  • 전송 중 암호화를 위해 SSL 보안 지원

 

Memcached

  • 좀 더 높은 수준인 SASL 기반 인증 지원 (고급)

 

 

 

🚨 ElastiCache 에 데이터를 불러오는 패턴 (3가지)

 레이지 로딩 (Lazy Loading)

 라이트 스루 (Write Through)

 세션 저장 (Session Store)

 

레이지 로딩 (Lazy Loading)

  • 모든 읽기 데이터가 캐시되고 데이터가 캐시에서 부실해질 수 있다 → 캐시 히트가 없을 때만 생성

 

라이트 스루 (Write Through)

  • 오래된 데이터가 없는 DB 에 데이터를 기록될 때마다 캐시에 데이터를 추가하거나 업데이트 하는 것

 

세션 저장 (Session Store)

  • 세션 저장소로 사용 가능

  • TimeToLive 속성으로 세션을 만료시킬 수 있다.

 

 

 

🚨 ElastiCache - Redis 사용 사례

 게임 리더보드 생성에 관한 것 → 매우 복잡하다

 고유성요소 순서를 모두 보장하는 정렬된 집합이다

 새로운 요소가 추가될 때마다 실시간으로 순위가 매겨진 다음 올바른 순서로 추가된다

  • 실시간 리더보드에 액세스 할 때, Redis 의 정렬된 집합을 활용할 수 있다

  • Redis 가 ElastiCache 와 통신할 때, 클라이언트는 실시간 리더보드에 액세스할 수 있고, 애플리케이션 측에서는 이 기능을 프로그래밍할 필요는 없다

 

 

 

 

728x90
반응형

'🌦 Cloud' 카테고리의 다른 글

[AWS/SAA-03] Amazon S3  (0) 2023.06.10
[AWS/SAA-03] Route 53  (0) 2023.05.05
[AWS/SAA-03] Aurora  (0) 2023.04.28
[AWS/SAA-03] RDS (관계형 데이터베이스 서비스)  (0) 2023.04.25
[AWS/SAA-03] 오토 스케일링 그룹 (Auto Scaling Group)  (0) 2023.04.24