[AWS] EC2: 크레딧과 무제한 버스트 모드
EC2, RDS 등의 리소스를 사용하다보면 "t"로 시작하는 인스턴스 타입들을 흔히 볼 수 있다.
이 t 시리즈 인스턴스는 기본 비용이 저렴한 것도 특징이지만, "크레딧"과 "버스트 모드"라는 성능/비용 체계를 갖고 있다는 것이 가장 주요한 특징이라고 할 수 있다.
그런데 이게 마냥 좋은건 아니라서, 싸다고 무작정 사용할 것이 아니다.
제한 모드와 무제한 버스트 모드
t 시리즈 인스턴스는 사실, 완전한 의미에서의 프로비저닝 리소스가 아니다.
vcpu가 2개라고 써있어도 그 스펙을 항상 100% 활용할 수 없는, 할 수 있더라도 비효율적인 인스턴스 타입인 것이다.
예를 들어, t3.large 타입의 기본 사용률은 30%다.
제한 모드를 사용한다면 기본 사용률을 초과했을때 쓰로틀링이 걸리고, 무제한모드를 쓴다면 추가 비용이 과금된다.
여기서 "표준"이 제한 모드고, "무제한"이 무제한 모드다.
근데 무제한모드의 추가 비용은 그닥 저렴하지 않다.
그래서 t 시리즈는 사용량이 불규칙한 경우에만 효율적인 타입이라고 할 수 있다.
EC2는 표준/무제한 중에 선택할 수 있지만 기본값이 무제한 모드다.
반면 RDS는 무제한 모드만을 제공한다.
무제한모드의 비용 계산 방식
예를 들어, t3.large 타입의 기본 사용률은 30%다.
이 말은 인스턴스가 24시간 동안 평균 30% 이하의 CPU 사용률로 실행되는 경우에는 추가 비용이 발생하지 않는다는 뜻이다.
하지만 평균 사용률이 30%를 넘는다면 그에 대한 추가 비용이 발생한다.

추가 비용은 다음과 같다.
대략 1개 cpu 시간당 0.05달러 정도다. 실제 사용량에 곱해서 세밀하게 계산될 것이다.
https://aws.amazon.com/ko/ec2/pricing/on-demand/#T2.2FT3.2FT4g_Unlimited_Mode_Pricing
버스트 모드와 손익분기점
아무튼, 그래서 t 시리즈 인스턴스는 항상 저렴한 것은 아니다. 사용률이 상당히 높고 항상 바쁘게 돌아야 한다면 m이나 r 시리즈 인스턴스를 쓰는 것이 결과적으로 저렴할 수 있다.
손익분기점은 인스턴스 타입마다 다른데, 보통은 cpu 사용량이 50-60%을 넘는다면 t 시리즈를 쓰지 않는 것이 좋다.
t3.large의 예를 들면, m5.large. a이 비용적으로 더 저렴해지는 손익분기점이 42.5%다.
크레딧 시스템
제한모드와 무제한모드 양쪽에 적용된다.
과금 기준이 30%라고 가정했을 때, 어느 날은 사용량이 2%인데 다음 날 사용량이 40% 나왔다고 추가비용이 과금된다면 좀 억울할 것이다.
평균을 낸다면 21% 정도밖에 안되기 때문이다.
이런 경우에 대응하기 위해서 t 시리즈에는 크레딧이라는 것이 존재한다.
기준치보다 적게 썼다면 "크레딧"을 충전해주고, 그 크레딧으로 나중에 발생하는 추가 사용량을 갈음하는 것이다.
이를 통해 좀 더 탄력적이고 납득 가능한 사용량 관리가 가능하도록 해준다.
vcpu 1개를 100% 쓰는 것을 크레딧 1개라고 부른다.
unlimited 모드로 인한 추가 비용 과금은 이 크레딧이 고갈되었을때부터 발생한다.
모니터링
서비스를 시작하는 처음에는 t 시리즈가 대부분 적합하겠지만, 사용량이 증가한다면 t 시리즈를 버려야 하는 시점이 오게 될 수도 있다.
그래서 이것도 모니터링이 중요하다.
당연히 가장 먼저 확인해야할 것은 CPU 사용률일 것이다.
이 정도면 뭐, 괜찮아 보인다. 가끔 스파이크가 튀는 지점이 있지만, 대체로는 30% 정도에 상각한다.
그리고 t 시리즈를 사용하게 되면, 각 리소스 페이지에 크레딧 사용량 지표를 알아서 추가해준다.
다음은 EC2 콘솔의 모니터링 탭에 있는 지표다.
충전된 양과 사용된 양이 동시에 나온다.
RDS에는 추가 지표 2가지가 더 딸려나온다.
이 2가지가 실질적으로 사용률을 초과해서 "충전된" 크레딧을 보여주는 지표다.
이게 0인게 가장 좋은 사용 패턴이고, 값이 의미있게 찍힌다면 버스트 초과 요금이 발생한다는 것이다.
그러면 비용을 분석해서 t 시리즈의 사용을 재고해볼 필요가 있다.