Pricing Comparison of ElastiCache Serverless

Is ElastiCache Serverless Actually More Cost-Effective When Implemented? (ElastiCache Serverless Pricing)
김주혁's avatar
Sep 06, 2024
Pricing Comparison of ElastiCache Serverless
 
 
회사에서 비용절감을 위해 백오피스 등 유저가 사용하는 것이 아닌 내부 처리를 위한, 일부 리소스를 정리하거나 Serverless로 옮기자는 안건이 나와서 해당 작업을 진행하게 됐습니다. 비용 집계부터 지표와 비용 효율성에 대한 사례 분석을 통한 실제 도입 결론에 대해서 얘기하겠습니다.
 

ElastiCache Serverless 비용


 

AWS ElastiCache Serverless 비용 지표

 
💡
GB-시간 요금 계산 공식 요약:
  • 메모리 사용량 (GB) = 총 메모리 (GB) × 평균 메모리 사용률
  • GB-시간 요금 = 메모리 사용량 (GB) × 0.151 USD/GB-시간
 
  • 저장된 데이터: ElastiCache Severless에 저장된 데이터에 대해 기가바이트-시간(GB-시간) 단위로 요금이 청구, ElastiCache Serverless는 캐시에 저장된 데이터 양을 지속적으로 모니터링하여 분당 여러 번 샘플링하고 시간당 평균을 계산하여 캐시의 데이터 스토리지 사용량을 GB-시간 단위로 결정 ElastiCache Serverless 캐시는 최소 1GB의 데이터가 저장되도록 측정합니다.
    • 요금 청구 방식
      • GB-시간 단위: ElastiCache Serverless에 저장된 데이터는 기가바이트-시간 단위로 요금이 청구됩니다. 즉, 저장된 데이터의 양이 1GB일 경우, 1시간 동안 사용하면 1GB-시간으로 계산됩니다.
      • 최소 저장 용량: ElastiCache Serverless는 최소 1GB의 데이터가 저장되도록 측정합니다. 따라서 데이터가 1GB 미만일 경우에도 요금은 1GB로 청구됩니다.
      • 시간 기가바이트 당 청구 금액 : USD 0.151 / GB-hour [ 108USD, 한달 144,226원]
 
  • ElastiCache 처리 장치(ECPU): vCPU 시간과 전송된 데이터를 모두 포함하는 단위인 ElastiCache Processing Units(ECPU)의 ElastiCache Severless 요청에 대해 비용을 지불합니다. 읽기 및 쓰기에는 전송되는 데이터 킬로바이트(KB)당 1 ECPU가 필요합니다.
    • 요금 청부 방식
      • 3.2KB의 데이터를 전송하는 GET 명령은 3.2 ECPU를 사용합니다.
      • 추가 vCPU 시간이 필요하거나 1KB 이상의 데이터를 전송하는 명령은 그에 비례하여 더 많은 ECUP를 소비합니다.
    • USD 0.0042 / million ECPUs
      • 1KB는 1ECPU 이므로 1백만(million) ECPU 처리량은 1GB의 데이터를 의미합니다. 즉, 0.0042 USD /GB로 단순화
 

ElastiCache에서 비용 및 사용률을 위한 지표 선택

 
비용 지표 는 아래의 게시물 들을 참고하여 선정했습니다.
  1. CPU 사용률(CPUUtilization)
    1. 실제 CPU 사용률을 통해 서버의 가용성에 대해 확인합니다.
      1. 2vCPU 이하의 작은 노드 에서는 CPUUtilization 지표 사용
        1. 레디스는 단일 스레드 이기 때문에, ElastiCache는 EngineCPUUtilizationRedis 프로세스 자체의 부하를 보다 정확하게 파악할 수 있는 메트릭을 제공하며, 이를 통해 Redis 작업 부하를 더 명확하게 파악할 수 있습니다.
        2. 모범 사례로서 EngineCPUUtilization항상 90% 미만인지 확인
        3. CPU 코어가 두 개 이하인 작은 노드의 경우 를 모니터링하는 것이 CPUUtilization필수적
      2. 4vCPU 이상의 대규모 노드에서는 EngineCPUUtilization( Redis OSS 엔진 코어의 사용률) 지표 사용
        1.  Redis SLOWLOG를 사용하여 완료하는 데 더 오래 걸린 명령을 확인할 수 있습니다.
 
  1. 메모리 사용률
    1. 메모리 사용률을 통해 저장된 데이터 청구 금액을 확인합니다.
 
  1. 수신 네트워크 바이트 & 송신 네트워크 바이트
    1. 수신 네트워크 바이트와 송신 네트워크의 시간당 합계를 통해 vCPU 시간과 전송된 데이터를 모두 포함하는 단위인 ElastiCache Processing Units(ECPU) 금액을 추정합니다.
 

지표 수집 및 비용 분석

 
위 정보들을 토대로 ElastiCache OSS 온디맨드를 사용하고 있는 현재 회사의 지표를 모아 봤습니다.
 
아래 지표는 2024년 8월 5일 ~ 2024년 9월 4일 기준인, 최근 한달간 지표입니다. 대부분의 ElastiCache 지표를 모아서 집계 했지만 여기선 가장 작은 단위와 가장 큰 단위만 보겠습니다.
 
이름
5분 평균 CPU 사용률
5분 평균 메모리 사용률
시간 당 평균 메모리 사용 크기(GB)
한달 수신 네트워크 바이트
한달 송신 네트워크 바이트
한달 네트워크 총 사용량(GB)
인스턴스 크기
인스턴스 총 메모리
기존 청구 요금(USD)
A
2.8
1.9
0.114
6202431689
30651140262
34
cache.t4g.micro
512
17.28
B
2.9
0.4
0.148
8200244041
31512153563
37
cache.t4g.medium
3164
67.68
 
서버리스로 넘어갔을 때의 비용 계산 지표를 활용하여, 시간당 평균 메모리 사용량과 한 달간 네트워크 총 사용량을 기준으로 분석해보면, Redis가 리소스를 한 달 동안 최소 사용량만큼만 활용하고 있음을 확인할 수 있습니다.
 
이제 위 정보들을 토대로 Serverless로 바꿨을 때 총 요금을 계산해 보겠습니다.
 
GB-시간 요금 계산 공식:
  • 메모리 사용량 (GB) = 총 메모리 (GB) × 평균 메모리 사용률
  • GB-시간 요금 = 메모리 사용량 (GB) × 0.151 USD/GB-시간
먼저, 각 인스턴스의 메모리 사용량을 구하고 한 달(30일 기준, 720시간) 동안의 GB-시간 요금을 계산합니다.
 
인스턴스
5분 평균 메모리 사용률(%)
시간당 평균 메모리 사용 크기(GB)
실제 청구 시간당 메모리(GB)
한달 사용량(GB-시간)
GB-시간 요금(USD)
한달 네트워크 사용량(GB)
ECPU 요금(USD)
Serverlsess 변경시 총 청구 요금(USD)
A
1.9
0.114
1
720
108.72
34
5.18270709
113.9027071
B
0.4
0.148
1
720
108.72
37
5.584742909
114.3047429
위 지표들을 토대로 계산해 봤을 때 현재 사용중인 인스턴스 크기 cache.t4g.microcache.t4g.medium 를 기준으로 분석해보면
 
  • cache.t4g.micro기준 91 USD, 한화 약 120,000 원 정도 비용이 더 소모됩니다.
  • cache.t4g.medium기준 41 USD, 한화 약 54,000 원 정도 비용이 더 소모됩니다.
 
최근 사용량이 아닌, 가장 트래픽이 높았던 X월 기준의 h ElastiCache를 기준으로도 최대 비용에 대해서도 계산해 봤습니다.
 
X월 기준 메트릭 지표를 집계해 봤을 때,
 
이름
5분 평균 CPU 사용률
5분 평균 메모리 사용률
시간 당 평균 메모리 사용 크기(GB)
한달 수신 네트워크 바이트
한달 송신 네트워크 바이트
한달 네트워크 총 사용량(GB)
인스턴스 크기
인스턴스 총 메모리
GB
기존 청구 요금(USD)
X월 기준
3.2
0.4
0.148
75531105059
75531105059
141
cache.t4g.medium
3164
1024
67.68
인스턴스
5분 평균 메모리 사용률(%)
시간당 평균 메모리 사용 크기(GB)
실제 청구 시간당 메모리(GB)
한달 사용량(GB-시간)
GB-시간 요금(USD)
한달 네트워크 사용량(GB)
ECPU 요금(USD)
Serverlsess 변경시 총 청구 요금(USD)
X월 기준
3.2
1.18656
1.18656
720
108.72
141
21.24383461
129.9638346
가장 많은 트래픽이 집계된 4월의 트래픽으로 계산해 봤을 때도 서버리스로 변경시 총 청구 요금이 62 USD, 한화 약 82,000원 정도 더 비싼걸 확인할 수 있습니다.
 

사용 사례를 통한 비용 비교


 
이제 ElastiCache에 대한 사용 사례와 그에 대한 비교를 통해 어떤 상황에서 ElastiCache Serverless를 사용하는 것이 더 효율적인지 살펴봅니다.
 
  1. 낮은 사용량
    1.  
      평균 1GB의 데이터를 저장하고, 하루에 100GB의 데이터를 처리하는 경우를 가정해본다면
      • ElastiCache Serverless 비용
        • 저장 비용: 1GB * 24시간 * 30일 * 0.151 USD/GB-hour= 108.72 USD / Month
        • 처리 비용: 100GB * 30일 * 0.0042 USD/GB = 12.6 USD / Month
        • 총 비용: 121.32 USD / Month
      • 온디맨드 비용
        • 가장 작은 인스턴스인 cache.t4g.micro를 사용할 경우 월 17.28 USD로 이 경우, 온디맨드 인스턴스가 더 저렴합니다.
        • Serverless를 사용하면 월 104.04 USD 의 추가 비용이 발생합니다.
 
  1. 변동성 높은 작업량
    1.  
      특정 트래픽이 몰리는 시점에는 시간 당 10GB의 데이터를 저장하고 하루 1TB의 데이터를 처리하지만, 그렇지 않을 때는 시간 당 1GB 저장, 100GB 처리 및 트래픽이 몰리는 시간을 하루 8시간이라고 가정 했을 때
       
      • ElastiCache Serverless 비용
        • 저장 비용:
          • 트래픽이 몰릴 때: 10GB * 8시간 * 30일 * 0.151 USD/GB-hour = 316.17 USD / Month
          • 트래픽이 몰리지 않을 때: 1GB * 16시간 * 30일 * 0.151 USD/GB-hour = 72.48 USD / Month
        • 처리 비용: (1000GB * 8시간 + 100GB * 16시간) * 30일 * 0.0042 USD/GB = 1108.8 USD / Month
        • 총 비용: 1,542.45 USD / Month
      • 온디맨드 인스턴스 비용
        • 요구사항을 충족하기 위해 cache.m6g.large를 사용할 경우 0.181 USD/Hour * 24시간 * 30일 = 130.32 USD / Month
        • 이 경우에도 온디맨드 인스턴스가 여전히 더 저렴합니다. Serverless를 사용하면 월 1,412.13 USD의 추가 비용이 발생합니다.
 
  1. 특정 시점에만 작업량이 매우 높은 경우
하루에 단 2시간 동안만 5GB의 데이터를 저장하고 50GB의 데이터를 처리하는 경우
 
  • ElastiCache Serverless 비용:
    • 저장 비용: 5GB * 2시간 * 30일 * 0.151USD/GB-hour = 45.3 USD / Month
    • 처리 비용: 50GB * 30일 * 0.0042 USD/GB = 6.3 USD / Month
    • 총 비용: 51.6 USD / Month
  • 온디맨드 인스턴스 비용
    • 필요한 용량을 위해 cache.t4g.small을 사용해야 한다고 가정하면 $0.047/시간 * 24시간 * 30일 = 33.84 USD / Month
    • 이 경우에도 온디맨드 인스턴스가 더 저렴합니다. Serverless를 사용하면 월 17.76 USD 의 추가 비용이 발생합니다.
 
위 3가지 일반적으로 고민할 수 있는 사례에서 ElastiCache Serverless는 비용 면에서 이점을 가지기 어려웠습니다.
 
Serverless의 주요 이점은 다음과 같은 상황에서 발생할 수 있습니다.
  • 매우 짧은 시간 동안의 급격한 트래픽 스파이크 처리
  • 인프라 관리 부담 감소
  • 정확한 사용량에 따른 과금 (온디맨드는 사용하지 않는 시간에도 과금)
 
위 3가지 상황을 고려하여 Serverless가 이점을 가지는 시나리오를 다시 만들어 보겠습니다.
 
  1. 특정 시점에만 작업량이 매우 높은 경우(ElastiCache가 이점을 가지는 경우)
    1.  
    2. 매우 짧은 시간 동안의 급격한 트래픽 스파이크 & 정확한 사용량에 따른 과금 (온디맨드는 사용하지 않는 시간에도 과금)
      1. 평소에는 1GB 미만의 데이터를 저장하고 시간당 1GB 미만의 데이터를 처리
      2. 하루에 2시간 동안 트래픽이 급증하여 50GB의 데이터를 저장하고 시간당 500GB의 데이터를 처리
    3. 인프라 관리 부담 감소
      1. 평시에는 1GB 미만의 데이터를 처리하지만, 특정 시간에 치솟는 트래픽으로 인하여 CPU 점유율이나 메모리 용량 문제로 서비스에 다운타임이 생길것을 방지하기 위해 확장성과 가용성이 좋은 Serverless를 고민하고 있는 회사가 있다고 가정합니다.
       
      • 온디맨드 인스턴스 사용 시
        • 피크 타임의 요구사항을 충족하기 위해 cache.r6g.2xlarge 인스턴스를 사용해야 합니다.
        • 비용: 시간 당 0.983 USD * 24시간 * 30일 = 707.76 USD / Month
      • ElastiCache Serverless 사용 시
        • 저장 비용
          • 평상시 (22시간): 1GB * 22시간 * 30일 * 0.151 USD/GB-hour = 99.66 USD / Month
          • 피크 타임 (2시간): 50GB * 2시간 * 30일 * 0.151 USD/GB-hour = 453 USD / Month
        • 처리 비용
          • 평상시: 1GB * 22시간 * 30일 * 0.0042 USD/GB = 2.772 USD / Month
          • 피크 타임: 500GB * 2시간 * 30일 * 0.0042 USD/GB = 126 USD / Month
        • 총 Serverless 비용: 681.432 USD / Month
       
      이 시나리오에서는 ElastiCache Serverless를 사용하면 월 26.328 USD 의 비용을 절약할 수 있습니다.
      그리고 위 시나리오를 토대로 계산해본다면,
       
      특정 트래픽이 몰리는 피크 타임에 저장하는 데이터가 47GB를 초과하거나, 처리하는 데이터가 470GB를 초과하면 Serverless가 더 경제적입니다.
       

결론


 
결론적으로 현행 사용중인 ElastiCache를 Serverless로 마이그레이션 하는 것은 비용절감을 위해 도입을 고려했던 초기 안건에 의하면 더 손해이기 때문에 도입하지 않기로 결정했습니다.
 
의미가 없었던 작업은 아니라고 생각 되는 것은,
  • 일부 인스턴스의 경우 조사 과정에서 피크 타임의 메모리 사용률이 더 낮은 인스턴스의 메모리 상한선을 초과하지 않았기 때문에 인스턴스의 크기를 리밸런싱하는 작업을 진행하기로 결정됐습니다.
  • 또한, 레디스를 사용률이 낮은(CPU, 메모리 점유율 기준) 일부 프로젝트에서 레디스를 제거할 수 있다면 제거하는 것으로 조사가 원래 의도했던 바는 아니지만 유의미하게 결론이 나게 됐습니다.
 
다만 ElastiCache Serverless로의 마이그레이션은 단순한 비용 절감 전략을 넘어선 전략적 선택으로 볼 수 있습니다. 이는 다음과 같은 상황에서 커다란 장점을 가질 수 있습니다.
  1. 극단적 트래픽 변동성: 일상적 저사용과 급격한 피크 타임의 극명한 대비
  1. 리소스 한계 상황: 온디맨드 인스턴스의 용량 한계에 근접한 피크 타임의 수요
  1. 초단기 고강도 부하: 매우 짧은 기간 동안의 폭발적 트래픽
 
ElastiCache Serverless는 게임의 이벤트성 트래픽이나 커머스 기업에서 시즌성 행사(블랙 프라이데이 등)과 같은 예측 불가능한 수요 변동에 대응하는 고가용성과 확장성을 가질 수 있는 선택입니다. 이는 단순히 인프라 비용을 줄이는 것이 아니라, 서비스의 가용성과 탄력성을 극대화할 수 있도록 만들어 줄 수 있는 전략적 도구입니다.
 
결론적으로, ElastiCache Serverless는 비용 효율성, 운영 유연성, 그리고 사용자 경험을 다양하게 고려해 봤을 때 전략적으로 선택할 수 있는 선택지 중 하나로 볼 수 있습니다.
 
Share article
RSSPowered by inblog