본문 바로가기

프로그래밍/AWS Solutions Architect

AWS SAA - Amazon ElastiCache

  • 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