danuri
오늘의 기록
danuri
전체 방문자
오늘
어제
  • 오늘의 기록 (307)
    • java (150)
      • java (33)
      • spring (63)
      • jpa (36)
      • querydsl (7)
      • intelliJ (9)
    • kotlin (8)
    • python (24)
      • python (10)
      • data analysis (13)
      • crawling (1)
    • ddd (2)
    • chatgpt (2)
    • algorithm (33)
      • theory (9)
      • problems (23)
    • http (8)
    • git (8)
    • database (5)
    • aws (12)
    • devops (10)
      • docker (6)
      • cicd (4)
    • book (44)
      • clean code (9)
      • 도메인 주도 개발 시작하기 (10)
      • 자바 최적화 (11)
      • 마이크로서비스 패턴 (0)
      • 스프링으로 시작하는 리액티브 프로그래밍 (14)
    • tistory (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

태그

  • S3
  • CICD
  • 트랜잭션
  • Saving Plans
  • mockito
  • Java
  • RDS
  • Thymeleaf
  • AWS
  • POSTGIS
  • 자바 최적화
  • Bitmask
  • docker
  • connection
  • ChatGPT
  • 등가속도 운동
  • PostgreSQL
  • Jackson
  • 도메인 주도 설계
  • Database
  • DDD
  • JPA
  • Security
  • SWAGGER
  • Kotlin
  • reactive
  • 마이크로서비스패턴
  • Spring
  • gitlab
  • nuribank

최근 댓글

최근 글

hELLO · Designed By 정상우.
danuri

오늘의 기록

[AWS] RI & Savings Plan로 AWS 비용 절감
aws

[AWS] RI & Savings Plan로 AWS 비용 절감

2022. 12. 11. 12:01

최근 운영 중인 서비스를 배포 중인 AWS 계정의 프리 티어가 종료되면서 AWS 비용을 절감해야할 일이 생겼다.
이것저것 알아보던 도중 RI(예약 인스턴스)와 Savings Plan를 알게 되었다.

두 기능 모두 EC2나 RDS 인스턴스에 대해 사용시간 만큼 비용을 지불(온디맨드)하는 것이 아닌, 몇 년치를 한 번에 결제해서 온디맨드에 비해 더 저렴한 가격에 구매하는 방법이다.

 

AWS 클라우드 아키텍처
AWS 클라우드 아키텍처

 

현재 내가 사용 중인 AWS 클라우드 아키텍처다. 여기서 나는 EC2 인스턴스 3개(배포용 2개 + 테스트용 1개)에 Savings Plan을, RDS 인스턴스 1개에 대해 RI를 적용했다.

 

RI

예약 인스턴스(Reserved Instance)라고 한다. 1년 혹은 3년 동안 EC2 혹은 RDS 인스턴스의 특정 유형(ex. t2.micro)을 예약하여 사용하는 방법이다.

예를 들어, t2.micro 인스턴스 3개를 1년치 예약한다고 하자.
그럼 1년 동안은 실행 중인 t2.micro 인스턴스 3개에 대해 추가 비용 없이 사용할 수 있다(이미 비용을 지불했기 때문).
그리고 특정 인스턴스 3개를 일일이 지정해줄 필요가 없다. 자동으로 t2.micro 인스턴스를 인식해서 알아서 예약해준다.
중요한 것은 특정 인스턴스가 아니라 t2.micro이다.
즉, 기존 t2.micro 인스턴스를 삭제하고 새로운 t2.micro 인스턴스를 생성해도 새로운 인스턴스는 자동으로 예약 인스턴스에 포함된다.
-> 나는 이 부분이 많이 헷갈렸었다. 다른 분들은 나처럼 헷갈리지 말길...

또 하나 알아둬야 할 것은 결제 유형이다. 예약 인스턴스는 3가지 결제 방식을 지원한다.
1. 전체 선결제(All Upfront) - 비용을 모두 선결제, 가장 저렴하다.
2. 부분 선결제(Partial Upfront) - 일부는 선결제, 일부는 선결제 없음(No Upfront)보다 저렴한 가격에 매월 시간당 사용료 지불
3. 선결제 없음(No Upfront) - 온디맨드보다 저렴한 가격에 매월 시간당 사용료 지불

한 번에 선결제 해도 상관없다면 전체 선결제가 가장 저렴한 방식이지만, 그럴 형편이 되지 않는 경우 부분 선결제나 선결제 없음 옵션도 고려해보자.

나같은 경우 AWS 비용을 크레딧(충전 캐시같은 느낌)으로 내고 있는데, 크레딧은 선결제가 되지 않는다... (선결제는 무조건 카드로 가능)
그래서 어쩔 수 없이 선결제 없음 옵션을 선택했다.

 

EC2

EC2는 예약 인스턴스를 적용할 수 있다. 그러나, Savings Plan이 나온 뒤로 요즘은 RI 보다 더 유연한 Savings Plan을 많이 사용하는 추세이다. AWS에서도 공식적으로 EC2 + Savings Plan을 추천하고 있다.

EC2 예약 인스턴스 페이지에 접속하면 상단에 파란 문구로 Savings Plan을 추천한다.

EC2 예약 인스턴스 화면
EC2 예약 인스턴스 화면

 

따라서, 나도 EC2는 RI가 아닌 Savings Plan을 적용시키기로 했다. (하단 Savings Plan에서 설명)

 

RDS

그동안 RDS의 경우 프리티어(db.t2.micro) 인스턴스를 사용하고 있었는데, 프리티어가 종료되면서 이를 RI로 돌리려고 한다.
(RDS는 Savings Plan이 없다)

AWS 콘솔에서 RDS -> 예약 인스턴스 -> DB 예약 인스턴스 구매를 클릭한다.

DB 예약 인스턴스 구매
DB 예약 인스턴스 구매

 

제품 설명: [원하는 데이터베이스 시스템]
DB 인스턴스 클래스: [원하는 인스턴스 유형]
배포 옵션: 단일 AZ DB 인스턴스 (다중 AZ 인스턴스를 사용하는 경우에는 다중 옵션 클릭, 대신 돈이 2배로 나간다)
기간: 1년 이상 (3년 이상도 있다)
오퍼링 유형: No Upfront(선결제 없음)
예약 ID: [원하는 ID]
DB 인스턴스 수: 1(원하는 인스턴스 수만큼 설정)

 

옵션을 최대한 꼼꼼히 확인하고 제출하자. 제출을 클릭하는 순간부터 1년치 예약이 시작되니 주의하자.

다 작성하고 제출을 클릭하면 다음과 같이 RDS 인스턴스를 예약할 수 있다.

RDS 예약 인스턴스
RDS 예약 인스턴스

 

 

Savings Plan

RI와 컨셉은 비슷하다. 1년 혹은 3년 동안 EC2 인스턴스의 특정 유형(ex. t2.micro)을 예약하여 사용하는 방법이다. 할인률은 RI와 거의 동일하다.

RI와의 차이점은 특정 기간에 특정 인스턴스 유형(t2.micro)을 예약하는 것이 아닌 특정 인스턴스 패밀리(t2)를 예약하는 것이다.
따라서 인스턴스 패밀리(t2) 안에서 여러 인스터스 크기(micro, small, large, ...)를 사용할 수 있어서 RI 보다 유연하다.

Savings Plan은 세 가지 종류를 제공한다.
1. Compute Savings Plans - 온디맨드 가격에 최대 66%, 여러 지역에 걸쳐 적용 가능, 인스턴스 패밀리에 제한이 없다.
2. EC2 Instance Savings Plans - 온디맨드 가격에 최대 72%, 단일 지역에 적용 가능, 인스턴스 패밀리가 고정이다.(크기는 변경 가능)
3. SageMaker Savings Plans - AWS SageMaker 서비스 사용에 적용된다. (나에게는 해당x)

나는 운영 중인 인스턴스 3개가 모두 t3.micro로 t3 패밀리 하나이기 때문에, 가장 저렴한 EC2 Instance Savings Plans를 적용시키기로 했다.

 

EC2

나는 배포용 인스턴스 2개와 테스트용 인스턴스 1개에 Savings Plan을 적용시켰다. (모두 t3.micro)

AWS 콘솔에서 EC2 -> Savings Plans -> Purchase Savings Plans를 클릭하자.

그러면 AWS 비용 관리 화면이 나오는데 Savings Plan 구매를 클릭하면 다음 화면이 나온다.

Savings Plans 구매 화면
Savings Plans 구매 화면

 

Savings Plan 유형: EC2 Instance Savings Plans
기간: 1년 (3년도 있다)
리전: Asia Pacific (Seoul)
인스턴스 패밀리: t3
시간당 약정: $0.0237 (밑에서 설명)
결제 옵션: 선결제 없음
시작 날짜: 따로 지정할 수 있음 (선택 사항)
구매 요약: 예약 비용이 얼마가 나오는지 확인할 수 있다.

Savings Plan에서 시간당 약정은 직접 입력해 주어야 한다. 처음에 엄청 당황했었는데, 의외로 단순하다.
시간당 약정 부분의 '여기에서' 링크를 클릭하거나, 아래 링크에 접속하자.
https://aws.amazon.com/ko/savingsplans/compute-pricing/

 

AWS Savings Plan 요율
AWS Savings Plan 요율

 

링크에 접속하면 AWS Savings Plan 요율을 확인할 수 있다.
본인 플랜에 해당하는 옵션을 선택하면 아래 표에서 예약 시 인스턴스 가격을 확인할 수 있다.

나의 경우 t3.micro = 0.0079 USD인데, 인스턴스가 3개이므로, 0.0079 * 3 = 0.0237 USD를 입력했다.

 

이제 모든 내용을 다 입력하고  '장바구니에 추가'를 클릭하고 '주문 제출'을 클릭하면 Savings Plan을 사용할 수 있다.

EC2 Savings Plan
EC2 Savings Plan

 

절감액 계산

RDS

db.t2.micro 1개 
온디맨드 - 월 18달러
1년 선결제 없음 예약 - 월 15달러
월 3달러, 16% 절감

EC2

t3.micro 4개 -> 온디맨드 월 37달러 / 3개로 변경, 1년 예약 월 16달러(1년 191달러) -> 21달러 56% 절감
t3.micro 3개
온디맨드 - 월 28달러
1년 선결제 없음 예약 - 월 17달러
월 11달러 39% 절감

 

1달에 RDS 월 3달러, EC2 월 11달러 정도 절감할 수 있었다. 1년동안 절감한다고 생각하면 상당히 비용을 아꼈다고 생각한다.

이 밖에 필요 없는 인스턴스 중지 혹은 종료하기, 인스턴스 유형 낮추기, EC2 스토리지 줄이기 등 비용 절감에 대한 다양한 방법들이 많으니, AWS 청구서를 꼼꼼히 살펴 보며 어디에서 비용이 빠져나가는지 파악할 필요가 있다.

 


 

참고자료

https://www.grumatic.com/ko/rireserved-instance-vs-savings-plan/

 

 

 

 

저작자표시 비영리 동일조건

'aws' 카테고리의 다른 글

[AWS] RDS Connection timed out 연결 오류 해결 방법  (27) 2022.11.12
[AWS] RDS "Too many connections"  (2) 2022.08.01
[AWS] S3 버킷 퍼블릭 엑세스 설정  (0) 2022.07.25
[AWS] CloudWatch logs - 로그 파일 수집  (4) 2022.01.21
[AWS] EC2, ufw enable 후 ssh 접속 불가 문제  (6) 2022.01.13
    'aws' 카테고리의 다른 글
    • [AWS] RDS Connection timed out 연결 오류 해결 방법
    • [AWS] RDS "Too many connections"
    • [AWS] S3 버킷 퍼블릭 엑세스 설정
    • [AWS] CloudWatch logs - 로그 파일 수집
    danuri
    danuri
    IT 관련 정보(컴퓨터 지식, 개발)를 꾸준히 기록하는 블로그입니다.

    티스토리툴바