Amazon ElastiCache
- RDS와 동일한 방식으로 관계형 데이터베이스 관리
- Redis 또는 Memcahced와 같은 캐시 기술 관리
- 캐시란?
- 높은 성능과 낮은 지연 시간을 가진 인 메모리 데이터베이스
- 일래스틱 캐시를 사용하면 읽기 집약적인 워크로드 부하를 줄이는데 도움이 됨
- 애플리케이션 상태를 Amazon 일래스틱 캐시에 저장해 Sataeless 상태로 만들 수 있도록 함
- 운영 체제 유지, 패치, 최적화, 설정, 구성 모니터링, 장애 회복, 백업 수행
- 일라스틱캐시를 사용하여 어려운 코드 변경 수행
ElastiCache Solution Architecture
DB Cache
- 캐시 히트 ( Cahe hit )
- 쿼리가 생성 되었는지, 생성되어 일라스틱 캐시에 저장됐는지 확인하는 것

- 캐시 미스 ( Cache miss )
- 데이터베이스에서 데이터를 가져와 데이터베이스에서 읽음
- 동일한 쿼리가 발생하는 다른 애플리케이션이나 인스턴스에서는 데이터를 캐시에 다시 기록하여 다음에는 같은 쿼리로 캐시 히트를 얻도록 함
- 이는 RDS 데이터베이스에서 부하를 줄이는데 도움을 줌
- 데이터 캐시를 저장하기 때문에 캐시 무효화 전략이 있어야 함
User Session Store
- 사용자가 애플리케이션의 모든 계정에 로그인하면 애플리케이션이 일라스틱 캐시에 세션 데이터를 기록하는 것
- 사용자가 애플리케이션의 다른 인스턴스로 리디렉션 되면 애플리케이션은 일라스틱 캐시에서 직접 세션 캐시 검색 가능
- 따라서 사용자는 계속 로그인한 상태로 한 번 더 로그인 할 필요가 없음

Redis VS Memcahced
-
Redis
- 자동 장애 조치로 다중 AZ를 수행하는 기술
- 읽기 전용 복제본은 읽기 스케일링에 사용되며 가용성이 높음
- RDS와 조금 비슷..?
- 지속성으로 인해 데이터 내구성도 있음
- 백업과 복원 기능이 있음

-
Memcahed
- 데이터를 손실할 수 없는 단순한 분산 캐시
- 데이터 분할에 다중 노드를 사용, 샤딩 ( Sharding ) 이라고 함
- 가용성이 높지 않음
- 복제 없음
- 지속적인 캐시가 아님
- 백업과 복원 기능도 없음
- 다중 스레드 아키텍처로 몇몇 샤딩과 함께 캐시에서 실행되는 여러 인스턴스가 있음

ElastiCache 실습
Elasticahe > Get started > 클러스터 선택 > 클러스터 설정

- 코드로 작성한 애플리케이션이 있다면 기본 엔드포인트로 사용 가능
- 읽기 복제라면 캐시에서 리더 엔드포인트로 읽기 가능
- 당장 Redis 캐시에 연결하기 위해서는 코드 작성이 필요함
ElastiCahce - Cache Security
- 일래스틱 캐시의 모든 캐시는 IAM 인증 지원 X
- AWS API 수준 보안에서만 사용
- 캐시 생성, 삭제 같은 종류의 작업만..!
- Redis AUTH
- 레디스를 인증하기위해 사용
- 레디스 클러스터를 생성할 때 비밀번호나 토큰 설정 가능
- 보안 그룹에 대한 추가적인 보안 수준
- 전송 중 암호화를 위해 SSL 보안 지원
- Memcached
- 더 높은 수준인 SASL 기반 인증 지원

Patterns for ElastiCache
- Lazy Loading
- 모든 읽기 데이터가 캐시되고 데이터가 캐시에서 부실해질 수 있음
- Write Through
- 데이터가 오래된 데이터가 없는 데이터베이스에 기록될 때마다 캐시에 데이터를 추가하거나 업데이트 하는 것
- Session Store
- 일래스티 캐시를 세션 저장소로 사용 가능, Time To Live( TTL ) 속성으로 세션을 만료 시킬 수 있음
Redis Use Case
- 레디스는 고유성과 요소 순서를 모두 보장하는 정렬된 집합 기능이 있음 ( Redis Sorted Sets )
- 요소가 추가될 때마다 실시간으로 순위가 매겨진 다음 올바른 순서로 추가됨

- 레디스로 Amazon 일래스티 캐시와 통신할 때 클라이언트는 실시간 리더보드에 엑세스 가능
- 레디스의 정렬된 집합 활용 가능
표준 포트 목록
주요 포트:
FTP: 21
SSH: 22
SFTP: 22 (SSH와 같음)
HTTP: 80
HTTPS: 443
vs RDS 데이터베이스 포트:
PostgreSQL: 5432
MySQL: 3306
Oracle RDS: 1521
MSSQL Server: 1433
MariaDB: 3306 (MySQL과 같음)
Aurora: 5432 (PostgreSQL와 호환될 경우) 또는 3306 (MySQL과 호환될 경우)
정리가 잘 된 글이네요. 도움이 됐습니다.