💝 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 와 통신할 때, 클라이언트는 실시간 리더보드에 액세스할 수 있고, 애플리케이션 측에서는 이 기능을 프로그래밍할 필요는 없다
'🌦 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 |