ecs-fargate-benchemark 블로그 글에서 ECS Fargate 1 vcpu, 2gb 설정하는 것이 비용 효율화가 좋다고 합니다.

 

그러면 EC2 (t2.small) Fargate (1 vcpu, 2gb) 동일한 성능으로 낼까요?

정답은 X입니다.

 

그 이유는 T type 인스턴스는 독특한 구조를 가지고 있기 때문입니다.

CPU를 사용하지 않을 때 일정 비율로 Credit이 적립되고, CPU를 사용하면 Credit을 소모합니다.


예시를 통해 t2.small(1 vCPU) 기준으로 Credit 적립과 사용에 대해 알아보겠습니다.

t2.small의 vCPU당 기준 사용률은 20%이고, 시간당 적립되는 CPU Credit은 12개 입니다. 


[예시 1] 1시간 동안 15%의 CPU 사용률 사용
1
시간 동안 적립되는 Credit – 1시간 동안 소모되는 Credit (CPU 개수 * CPU 사용률 * 사용시간(분))
= 12 – (1 * 0.15 * 60)
= 12 – 9  = Credit 잔고 (
+3)

[예시 2] 현재 가지고 있는 Credit이 30개 이고 1시간 동안 65%의 CPU 사용률 사용
=1 * 0.65 * 60
= 30-39 =  Credit 잔고 (-9)

 

즉 크레딧 사양이 Standard 인 경우 보유하고 있는 Credit을 모두 소모하게 되므로

기준 사용률 20% 이상으로 CPU를 사용할 수 없게 됩니다.


제가 생각한 결론은 ..

개발환경에서 ECS 기준으로 CI/CD를 구성하고 서비스 구조가 복잡하지 않는 경우, 

Fargate 로 서비스를 구성하고 부하테스트를 통해 적절한 컨테이너 수를 설정하는 것이 좋습니다.

 

그 이유는 Fargate에서 제공되는 CPU는 항상 최대치 까지의 성능을 사용할 수 있으므로,

부하가 발생되는 상황 시 T type 인스턴스와 성능이 동일하지 않을 수 있기 때문입니다.

 

그리고 ECS에서 제공하는 지표로 스케일링 전략을 구성하는 것도 잊지 말아야겠죠??

  • ECS에서 제공하는 3가지 지표 - CPU 사용량, Memory 사용량, Request 수
  • 1개 이상의 지표를 활용해 오토스케일링을 설정하는 것은 AWS 기술문서 참고

비용 효율화를 위해 적절한 컨테이너 구성 및 스케일링 전략이 제일 어려운 것 같습니다. ㅠ

읽어주셔서 감사합니다.

 

레퍼런스 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기