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 기술문서 참고
비용 효율화를 위해 적절한 컨테이너 구성 및 스케일링 전략이 제일 어려운 것 같습니다. ㅠ
읽어주셔서 감사합니다.
레퍼런스
최근댓글