- RDS와 동일한 방식으로 관계형 데이터베이스를 관리할 수 있다.
- ElastiCache는 Redis, Memcached와 같은 캐시 기술을 관리할 수 있도록 한다.
- 캐시는 높은 성능과 낮은 지연 시간을 가진 인-메모리 데이터베이스이다.
- 일기 집약적인 워크로드의 부하를 줄이는데 도움이 된다.
- 일반적인 쿼리가 캐시되어 데이터베이스가 매번 쿼리 되지 않는 것이며 캐시는 이러한 쿼리의 결과를 검색할 때 사용할 수 있다.
- 애플리케이션의 상태를 ElastiCache에 저장해 애플리케이션을 stateless 상태로 만들 수 있다.
- RDS와 같은 장점을 갖기 때문에 AWS는 운영체제의 유지 관리 / 패치, 최적화, 설정, 구성, 모니터링, 장애 회복, 백업을 수행한다.
- ElastiCache를 사용할 때 애플리케이션에 관한 몇 가지 어려운 코드 변경을 요청할 수 있다.
- 단순한 활성화가 아니라 캐시를 사용하기 때문
- 데이터베이스 쿼리 전과 후에 캐시를 쿼리하도록 애플리케이션을 변경해야 한다.
DB Cache
- ElastiCache, RDS 데이터베이스, 애플리케이션이 있는 구조
- 애플리케이션은 ElastiCache를 쿼리한다.
- 쿼리가 이미 생성됐는지 이미 생성되어 ElastiCache에 저장됐는지 확인하는 것은 캐시 히트(cache hit)이다.
- ElastiCache에서 바로 응답을 얻어서 쿼리하기 위해 데이터베이스로 이동하는 동선을 줄여준다.
- RDS에서 데이터를 가져와서 ElastiCache에서 읽는 것을 캐시 미스(cache miss) 라고 한다.
- 동일한 쿼리가 발생하는 다른 애플리케이션이나 인스턴스에서는 데이터를 캐시에 다시 기록하여 다음에 같은 쿼리로 캐시 히트를 얻도록 한다.
- RDS 데이터베이스에서 부하를 줄이는데 도움을 준다.
- 데이터를 캐시에 저장하기 때문에 캐시 무효화 전략이 있어야 한다.
- 가장 최근 데이터만 사용하는지 확인해야 한다.
User Session Store
- 사용자 세션 데이터를 ElastiCache에 저장해 애플리케이션을 stateless하게 만드는 것이다.
- 사용자가 애플리케이션의 계정에 로그인하면 애플리케이션이 ElastiCache에 세션 데이터를 기록한다.
- 사용자가 애플리케이션의 다른 인스턴스로 리디렉션 되면 애플리케이션은 ElastiCache에서 직접 세션 캐시를 검색한다.
- 사용자는 계속 로그인한 상태로 한 번 더 로그인 할 필요가 없어진다.
Redis vs Memcashed
Redis
- Redis는 자동 장애 조치로 다중 AZ를 수행하는 기술이다.
- 읽기 전용 복제본은 읽기 스케일링에 사용되며 가용성이 높다.
- 지속성(AOF persistence)로 인해 데이터 내구성이 있다.
- 백업과 기능 복원 기능이 있다.
Memcashed
- 데이터 분할에 다중 노드를 사용한다.[샤딩(sharding)]
- 가용성이 높지 않다.(복제가 발생하지 않는다.)
- 지속적인 캐시가 아니다.
- 백업과 복원 기능도 없다.
- 다중 스레드 아키텍처로 몇몇 샤딩과 함께 캐시에서 함께 실행되는 여러 인스턴스가 있다.
Cache Security
- ElastiCache의 모든 캐시는 IAM 인증을 지원하지 않는다.
- ElastiCache에서 정의할 IAM 정책은 AWS API 수준 보안에서만 사용된다.
- 캐시 생성, 캐시 삭제 같은 종류의 작업
- 캐시 내의 모든 작업은 IAM을 사용하지 않는다.
- Redis AUTH
- Redis 클러스터를 생성할 때 비밀번호나 토큰을 사용할 수 있다.
- 캐시에 사용할 수 있는 보안 그룹에 대한 추가적인 보안이다.
- 전송 중 암호화를 위해 SSL 보안을 지원할 수 있다.
- Memcahed
- SASL 기반 인증을 지원한다.
ElastiCache Pattern
- Lazy Loading
- 모든 읽기 데이터가 캐시되고 데이터가 캐시에서 부실해질 수 있다.
- Write Through
- 데이터를 데이터베이스에 기록할 때 캐시에 추가 혹은 업데이트 한다.(오래된 캐시 데이터가 없음)
- Session Store
- ElastiCache를 세션 저장소로 쓸 수 있다.
- Time To Live(TTL) 속성으로 세션을 만료시킬 수 있다.
Redis 사용 예
- 게임 리더보드는 매우 복잡하다.
- Redis에는 Sorted set이라는 기능으로 고유성과 요소 순서를 모두 보장한다.
- 엘리먼트가 추가될 때마다 실시간으로 순위가 매겨진 다음 올바른 순서로 추가된다.
중요 포트
FTP: 21
SSH: 22
SFTP: 22(SSH와 동일)
HTTP: 80
HTTPS: 443
RDS DB Port
PostgreSQL: 5432
MySQL: 3306
Oracle RDS: 1521
MSSQL 서버: 1433
MariaDB: 3306(MySQL과 동일)
Aurora: 5432(PostgreSQL 호환 시) 또는 3306(MySQL 호환 시)
'프로그래밍 > AWS Solutions Architect' 카테고리의 다른 글
AWS SAA - Amazon S3 (0) | 2022.05.19 |
---|---|
AWS SAA - Amazon Route 53 (0) | 2022.05.18 |
AWS SAA - Amazon Aurora (0) | 2022.05.17 |
AWS SAA - Amazon RDS (0) | 2022.05.15 |
AWS SAA - Auto Scaling Group (ASG) (0) | 2022.05.12 |