최근 운영 중인 서비스를 배포 중인 AWS 계정의 프리 티어가 종료되면서 AWS 비용을 절감해야할 일이 생겼다.
이것저것 알아보던 도중 RI(예약 인스턴스)와 Savings Plan를 알게 되었다.
두 기능 모두 EC2나 RDS 인스턴스에 대해 사용시간 만큼 비용을 지불(온디맨드)하는 것이 아닌, 몇 년치를 한 번에 결제해서 온디맨드에 비해 더 저렴한 가격에 구매하는 방법이다.
현재 내가 사용 중인 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는 RI가 아닌 Savings Plan을 적용시키기로 했다. (하단 Savings Plan에서 설명)
RDS
그동안 RDS의 경우 프리티어(db.t2.micro) 인스턴스를 사용하고 있었는데, 프리티어가 종료되면서 이를 RI로 돌리려고 한다.
(RDS는 Savings Plan이 없다)
AWS 콘솔에서 RDS -> 예약 인스턴스 -> DB 예약 인스턴스 구매를 클릭한다.
제품 설명: [원하는 데이터베이스 시스템]
DB 인스턴스 클래스: [원하는 인스턴스 유형]
배포 옵션: 단일 AZ DB 인스턴스 (다중 AZ 인스턴스를 사용하는 경우에는 다중 옵션 클릭, 대신 돈이 2배로 나간다)
기간: 1년 이상 (3년 이상도 있다)
오퍼링 유형: No Upfront(선결제 없음)
예약 ID: [원하는 ID]
DB 인스턴스 수: 1(원하는 인스턴스 수만큼 설정)
옵션을 최대한 꼼꼼히 확인하고 제출하자. 제출을 클릭하는 순간부터 1년치 예약이 시작되니 주의하자.
다 작성하고 제출을 클릭하면 다음과 같이 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 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 요율을 확인할 수 있다.
본인 플랜에 해당하는 옵션을 선택하면 아래 표에서 예약 시 인스턴스 가격을 확인할 수 있다.
나의 경우 t3.micro = 0.0079 USD인데, 인스턴스가 3개이므로, 0.0079 * 3 = 0.0237 USD를 입력했다.
이제 모든 내용을 다 입력하고 '장바구니에 추가'를 클릭하고 '주문 제출'을 클릭하면 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 연결 오류 해결 방법 (24) | 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 |