본문 바로가기

Certificate/AWS SOA-C02

[AWS] Memory Eviction Metric 완화 방법 (Feat. Amazon ElastiCache for Memcached), 한 번에 이해하기

https://aws.amazon.com/ko/blogs/devops/fine-tuning-operations-at-slice-using-aws-devops-guru/

 

Cache Eviction에 대해서

Eviction은 캐시가 가득 찼을 때 기존 데이터를 제거하는 것을 말한다.

Cache Eviction 메트릭 값이 높다는 것은 캐시가 부족해 기존 캐싱 데이터들이 빠르게 지워지고 새로운 데이터로 쓰여지고 있다는 뜻이다.

 

Cache Eviction 정책의 종류

 

  • LRU (Least Recently Used) : 가장 오랫동안 사용되지 않은 항목을 제거
  • LFU (Least Frequently Used) : 가장 적게 사용된 항목을 제거
  • FIFO (First-In First-Out) : 가장 먼저 들어온 항목부터 제거
  • Random : 임의 항목을 제거 (속도는 빠르지만 예측 불가)

 

Cache Eviction 발생 원인

 

  • 캐시 용량 초과: 캐시 크기보다 많은 항목이 저장될 때
  • TTL(Time-to-Live) 만료: 수명이 끝난 항목이 제거됨
  • 정책적 제거: LRU, LFU, FIFO 등에 따라 오래된 항목 제거
  • 메모리 제한 정책: Redis 등은 maxmemory 한도 초과 시 eviction 발생

 

 

Cache Eviction 완화 방법

  • 캐시 용량 확보: 클러스터 노드 추가(스케일아웃), 클러스터의 개별 노드의 크기 확장(스케일업)
  • TTL(Time-to-Live) 최적화: 너무 오랜 시간동안 캐싱되어 있지 않게 적절히 최적화
  • 적절한 Eviction 정책

 

예제 문제

한 전자상거래 회사가 쇼핑 사이트에서 인기 상품 쿼리의 인메모리 캐싱을 위해 Amazon ElastiCache for Memcached 클러스터를 사용합니다. ElastiCache 클러스터의 최근 Amazon CloudWatch 지표 데이터를 확인하던 중 시스템 운영 관리자가 대량의 축출을 발견했습니다.
다음 중 어떤 조치를 취하면 이러한 축출을 줄일 수 있을까요? (두 가지 선택)

  • A. ElastiCache 클러스터에 추가 노드를 추가합니다.
  • B. ElastiCache의 TTL(수명)을 늘립니다.
  • C. ElastiCache 클러스터 내의 개별 노드 크기를 늘립니다.
  • D. ElastiCache 클러스터 앞에 Elastic Load Balancer를 배치합니다.
  • E. Amazon Simple Queue Service(Amazon SQS)를 사용하여 ElastiCache 클러스터를 분리합니다.
더보기

답 : A, C

B가 아닌 이유 : TTL를 늘리면 데이터가 더 오래 캐싱되고 오히려 Eviction 지표를 악화 시킬 가능성이 있다.

 

한 회사에서 Amazon ElastiCache for Memcached를 사용하여 쿼리 응답을 캐싱하고 지연 시간을 줄이고 있습니다. 그러나 애플리케이션의 사용자들이 느린 응답 시간을 보고하고 있습니다.
SysOps 관리자는 Memcached의 eviction(캐시 데이터 제거) 에 대한 Amazon CloudWatch 지표가 높은 것을 확인했습니다.

SysOps 관리자는 이 문제를 해결하기 위해 어떤 조치를 취해야 하나요? (두 가지를 선택하십시오.)

  • A. ElastiCache for Memcached의 내용을 모두 삭제(Flush)합니다.
  • B. ConnectionOverhead 매개변수 값을 증가시킵니다.
  • C. 클러스터의 노드 수를 증가시킵니다.
  • D. 클러스터의 노드 크기를 증가시킵니다.
  • E. 클러스터의 노드 수를 줄입니다.
더보기

답 : C, D