티스토리 뷰

AWS에서 선택 가능한 EC2 인스턴스 타입은 범용, 컴퓨팅 최적화, 메모리 최적화, 가속화된 컴퓨팅, 스토리지 최적화로 나눌 수 있습니다. 이번 글에서는 범용 타입에서도 버스터 가능한 인스턴스 타입을 소개합니다. 


 

버스트(burst) 가능한 인스턴스 타입은 현재(2021-05-06) 기준으로 T2, T3, T3a, T4g 네 가지 타입이 존재하고 각각의 타입은 CPU와 메모리에 따라서 nano, micro, small, medium, large, xlarge, 2xlarge로 나누어집니다. T 타입 인스턴스에는 CPU credits이라는 개념이 존재하는데 CPU 유휴시간에 따라 credits을 획득하고, CPU가 사용되면 사용률에 따라 획득한 크레딧을 소모하게 되는 구조입니다. 이 의미를 상세히 이해하기 위해서는 T 타입 인스턴스와 버스트의 의미를 좀 더 살펴볼 필요가 있습니다.

우선 T3a.xlarge와 m5.xlarge의 스펙 비교를 해봅시다. 아래 이미지를 먼저 살펴봐주세요. 두 타입 모두 vCPU 4개에 16 GiB 메모리를 쓸 수 있죠. 네트워크 성능 차이는 있지만 일단 그 부분은 배제하고 똑같은 코어 개수와 메모리지만 가격차이가 꽤 심합니다. t3a.xlarge가 약 22% 정도 저렴합니다. 한 달이면 무려 $29.95 차이가 발생합니다. 인스턴스 1개의 차이가 이 정도니까 수평 확장이 설정되어 있다면 그 차이는 더욱 커집니다. ( 에... 물론 두 개 인스턴스 타입을 이렇게 비교하는 건 무리가 있습니다. CPU 종류에서 꽤 차이가 있기 때문인데 여기서는 일단 살짝 덮어두도록 합시다. 개념적인 이야기만 하고 있으니까요 )

t3a.xlarge vs m5.xlarge

 

그럼 T타입의 인스턴스는 왜이렇게 저렴할까요? 바로 기본 성능 자체가 제한되어 있기 때문입니다. CPU를 맘껏 쓸 수가 없어요. 이게 무슨 소리냐고요? 한글이 참 어렵죠. 일단 하나씩 살펴봅시다.아래 그림에서 아주 잘 표현되어 있습니다. t3.nano의 CPU credits 변화입니다.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/standard-mode-examples.html

 

P1 구간은 CPU 사용률이 없습니다. 그렇기 때문에 24시간 동안 최대로 획득 가능한 144 크레딧이 쌓이게 됩니다. 다음으로 P2 구간에서 CPU 사용률은 2.5%로 t3.nano의 baseline(5%) 보다 더 적게 사용 중인데요, 이때는 소비되는 크레딧보다 획득하는 크레딧이 더 많은 상태입니다. 그렇기 때문에 최종적으로 소비는 발생하지 않고 오히려 획득해야 하지만 t3.nano에서 쌓아둘 수 있는 최대인 크레딧인 144 한계이므로 12시간 동안 balance에는 변화가 없습니다.

P3 구간은 CPU 사용률이 7%로 baseline(5%) 보다 높습니다. 이때는 시간당 획득하는 크레딧보다 사용되는 크레딧이 더 많기 때문에 balance가 내려가는 것을 확인할 수 있죠. 다음 P4 구간은 사용률이 2.5%로 baseline(5%)보다 낮아져서 다시 크레딧이 쌓이기 시작합니다. balance가 122까지 증가합니다.

한편, P5 구간에 들어오면서 2시간 동안 CPU 사용량이 높게 유지되면서 크레딧 사용량이 급격히 증가합니다. 다시말해 CPU 사용률이 높을수록 소진되는 크레딧의 양이 증가하게 됩니다. 공식문서는 다음과 같이 설명하고 있습니다.

CPUCreditUsage:
The number of CPU credits spent by the instance for CPU utilization. One CPU credit equals one vCPU running at 100% utilization for one minute or an equivalent combination of vCPUs, utilization, and time (for example, one vCPU running at 50% utilization for two minutes or two vCPUs running at 25% utilization for two minutes).

이렇게 급격히 높은 CPU 사용량을 유지하다가 그 동안 획득해 놓은 balance를 모두 소진하고 나면 성능은 급격히 떨어져서 CPU 사용량은 baseline(5%) 이상 올라가지 못하게 됩니다. 이게 바로 T타입 인스턴스의 가장 큰 특징입니다.

다음으로 P6 구간은 CPU 사용률이 baseline(5%)과 동일한 5% 입니다. 이때는 획득하는 크레딧과 소비되는 크레딧이 동일하기 때문에 balance는 0으로 계속 유지됩니다. 이후 P7 구간은 CPU가 유휴상태로 들어가서 획득된 크레딧이 온전히 쌓이게 되고 balance가 증가하는것을 확인 할 수 있습니다.

총 보유하고 있는 크레딧 balance와 소비되는 크레딧, 새로 획득하는 크레딧, 최대 획득된 이후 버려지는 크레딧을 하나의 그림으로 표현하면 아래와 같습니다. 직관적으로 아주 잘 나타내고 있습니다.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html

 

위의 그림을 보충 설명하자면 3가지를 기억하면 됩니다. 1) 시간의 흐름에 따라 조건이 충족되면 CPU credits을 벌게 되고, 2) 조건이 되면 CPU Credits을 사용하게 됩니다. 3) 벌 수 있는 Credits의 용량은 인스턴스 타입에 따라 최대치가 정해져 있으며 그 이상 쌓이지 않습니다.

위에서 다룬 예제는 t3.nano 기준이라 시간당 획득하는 크레딧이 6개, 최대 획득 가능한 크레딧은 144개였는데 다음표를 통해 다른 인스턴스 타입은 어떻게 다른지 확인할 수 있습니다.

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html

 


 

# 마무리

T 타입의 인스턴스는 쉽게 이야기하면 마치 인스턴스의 scale-up으로 표현할 수 있습니다. 인스턴스의 스펙을 (수직) 확장하기 위해서는 머신을 중지(STOP) 해야 하는 게 일반적인데요, T 타입은 baseline을 정해두고 CPU 사용률을 제한하다가 일시적으로 스파이크 치는 트래픽을 대응하기 위해 순간적으로 CPU 사용률을 높일 수 있습니다. 마치 scale-up 하는 것처럼요. 하지만 스케일업도 위에서 살펴본 것처럼 획득한 크레딧 내에서 일시적으로 가능한 수준입니다. 평소 트래픽이 많고 CPU 부하가 일정 수준 이상으로 유지되는 서비스라면 T 타입 인스턴스는 적합하지 않죠. 주기적인 배치 작업이나 특정 시점에만 트래픽이 몰리는 서비스, 혹은 밤에는 사용률이 거의 없다가 낮이 돼야 사용률이 올라가는 그런 서비스에 아주 적합하겠습니다. 

인스턴스 종류가 워낙 많아서 선택하는 것도 쉬운 일은 아니지만 서비스에 맞는 타입을 고르지 않으면 낭비되는 리소스가 발생하고 비용과 직결되는 부분이기 때문에 깊은 고민이 필요합니다. 인스턴스 비용은 AWS가 아닌 다른 퍼블릭 클라우드에서도 아주 많은 부분을 차지하니까요. 누군가에게는 도움이 되셨기를 바랍니다.

 

댓글
댓글쓰기 폼