예약 인스턴스(RI)와 Auto-Scaling이란?
AWS를 사용할 때 오래 사용할 인스턴스는 예약 인스턴스를 사용하여 이용합니다.
예약 인스턴스는 약정 기간을 정해놓고 미리 지불하여 사용하는 인스턴스를 말합니다. (꼭 미리 결제할 필요는 없지만 선결제가 할인율이 가장 큽니다.)
예약 인스턴스에 대한 내용은 아래 블로그에 잘 정리되어 있습니다.
Auto-Scaling 이란 트래픽에 따라 서버의 수를 늘리고 줄이는 자동 조정을 하는 AWS 기술입니다.
예를 들어 하나의 인스턴스의 CPU 사용률이 5분 동안 80% 이상을 넘어서면 Auto Scaling 그룹에서는 똑같은 인스턴스를 하다 더 생성합니다.
이후 하나 더 생성된 인스턴스를 통해 분산처리가 되어 CPU가 정상 범위로 내려오면 생성된 인스턴스를 제거하여 비용을 절감할 수 있습니다.
Auto Scaling에 대한 자세한 내용은 아래 블로그에 잘 정리되어 있습니다.
예약 인스턴스(RI)와 Auto-scaling 동시 사용 시 비용 산정
제가 궁금했던 점은, 예약 인스턴스와 Auto-Scaling 그룹에 대해서 동시에 사용할 수 있는 방법이 있는지가 궁금했습니다.
즉, Auto-scaling을 적용하면 인스턴스의 상태에 따라 동적으로 EC2가 추가되거나 삭제되는데 이때 발생하는 비용에 대해서도 예약 인스턴스를 적용할 수가 있을까 하는 의문이었습니다.
해당 내용을 구글링 했을 때 아래와 같은 StackOverflow 글을 발견할 수 있었습니다.
이중 제 궁금증을 해결해주는 답변을 볼 수가 있었습니다.
위 글의 내용을 정리해보면 아래와 같습니다.
- 예약 인스턴스를 사용할 때 특정 인스턴스를 지정할 수 없다. AWS의 결제 시스템은 AWS 계정에서 실행 중인 모든 인스턴스를 확인 후 예약 인스턴스로 지정한 속성과 일치하는 인스턴스에 할인율을 적용하거나 선결제인 경우 비용을 청구하지 않는다.
- 속성은 인스턴스의 타입, OS 시스템, 가용 영역을 확인하여 체크한다.
- 이는 예약 인스턴스가 Auto Scaling을 통해 시작되었는지 여부에 관계없이 적용된다.
- 예를 들어 예약 인스턴스 1개를 구매했고 Auto Scaling 그룹이 위에서 말한 속성과 일치하는 인스턴스를 추가한다면 해당 그룹의 인스턴스 중 하나가 무료로 사용되거나 할인율이 적용된 가격이 적용된다.
- 만약 Auto Scaling 그룹에 minimum 1과 maximum 4가 선언되어 있는 경우 항상 1개 이상의 예약 인스턴스가 수행되고 있기 때문에 예약 인스턴스의 혜택을 항상 받게 된다. 그렇지만 1개 이상의 인스턴스가 가용될 경우 추가되는 인스턴스의 비용은 정상적으로 청구된다.
- 항상 지속적으로 사용될 모든 인스턴스에 대해 예약 인스턴스를 사용하는 것이 좋다.
결론
일단, 저는 예약 인스턴스를 구매해본 적이 없기 때문에 어떤 특정 인스턴스를 지정해서 예약 인스턴스를 사용하는 것인 줄 알았는데, 그게 아니라 예약 인스턴스는 인스턴스의 속성을 지정해두고 해당 속성에 맞는 인스턴스가 자동으로 할인이 적용되는 개념인지를 알게 되었습니다.
그렇다면 Auto-Scaling을 적용할 때는 항상 가용 중인 인스턴스의 개수, 즉 minimum 만큼의 예약 인스턴스를 구매하고 Auto Scaling을 통해 추가되는 인스턴스에 대해서는 정상 과금을 처리하는 것이 가장 비용을 절약하는 방법일 것 같습니다.
그렇지만 Auto Scaling이 자주 발생하는 경우에는 과금이 많이 나올 수 있기 때문에 이럴 때에는 minimum 값을 늘리고, 예약 인스턴스의 개수도 같이 늘려줘야 할 것 같습니다. 아니면 애초에 Auto Scaling 그룹의 인스턴스의 Maximum만큼의 예약 인스턴스를 구매한 뒤에 할인된 가격으로 항상 가동하는 것도 방법일 수 있겠습니다.
어떤 방법이 좋은 방법인지는 제가 경험이 없어서, 혹시 Auto Scaling과 RI를 통한 서비스 운영 경험이 있으신 분은 댓글로 알려주시면 감사하겠습니다. :)
'서버 인프라, 백엔드 > 아마존 (AWS)' 카테고리의 다른 글
AWS : EC2 / S3 / CloudFront 트래픽 요금 분석 (2) | 2021.12.13 |
---|---|
AWS : A 레코드와 Cname의 차이 (0) | 2021.12.08 |
AWS : Route 53 요금 및 비용 산정 (10) | 2021.04.06 |
AWS : HTTP에서 HTTPS로 redirection 설정하기 (http_x_forwarded_proto + EC2 +ELB) (3) | 2021.03.19 |
AWS - EC2 Backup 방법 (snapshot) (2) | 2021.02.12 |