Amazon ECS 태스크 크기 결정하기
Amazon ECS 태스크 크기 결정하기
Amazon ECS에서 컨테이너를 배포할 때 가장 중요한 선택 중 하나는 컨테이너와 태스크 크기예요. 예약(reservation)과 한도(limit) 개념, 그리고 상태 비저장(stateless) 및 기타 애플리케이션에 맞는 크기 선택 방법을 알아봐요.
출처: 문서
본문
Amazon ECS에서 컨테이너를 배포할 때 가장 중요한 선택 중 하나는 컨테이너와 태스크 크기예요. 컨테이너와 태스크 크기는 확장과 용량 계획에 필수적이에요. Amazon ECS는 용량에 대해 CPU와 메모리 두 가지 리소스 지표를 사용해요.
- Amazon ECS는 CPU를 전체 vCPU의 1/1024 단위로 측정해요(1024 단위 = 전체 vCPU 1개).
- Amazon ECS는 메모리를 메가바이트 단위로 측정해요.
태스크 정의에서 리소스 예약(reservation)과 한도(limit)를 선언할 수 있어요.
- 예약(reservation) — 태스크가 필요로 하는 최소 리소스 양을 선언해요. 태스크는 요청한 최소한의 리소스를 받아요. 애플리케이션은 예약한 양보다 더 많은 CPU나 메모리를 사용할 수도 있지만, 이는 함께 선언한 한도에 따르게 돼요. 예약량보다 많이 사용하는 것을 버스팅(bursting) 이라고 해요. 버스팅은 선언한 한도 안에 머물면서 예약보다 더 많은 리소스를 사용하는 것을 의미해요.
- Amazon ECS는 예약을 보장해요. 예를 들어 Amazon EC2 인스턴스로 용량을 제공한다면, Amazon ECS는 예약을 충족할 수 없는 인스턴스에는 태스크를 배치하지 않아요.
- 한도(limit) — 컨테이너나 태스크가 사용할 수 있는 최대 CPU 단위 또는 메모리 양이에요. 컨테이너가 이 한도보다 더 많은 CPU를 사용하려 하면 Amazon ECS가 이를 제한(throttle)해요. 컨테이너가 이 한도보다 더 많은 메모리를 사용하려 하면 Amazon ECS가 컨테이너를 중지해요.
이 값들을 고르는 것은 어려울 수 있어요. 애플리케이션에 가장 잘 맞는 값은 애플리케이션의 리소스 요구 사항에 크게 의존해요. 하중 테스트(load testing) 가 성공적인 리소스 요구 사항 계획의 핵심이에요. 하중 테스트는 애플리케이션의 요구 사항을 더 잘 이해하는 데 도움을 줘요.
상태 비저장 애플리케이션 (Stateless applications)
로드 밸런서 뒤의 애플리케이션처럼 수평적으로 확장되는 상태 비저장(stateless) 애플리케이션의 경우, 먼저 애플리케이션이 요청을 처리할 때 얼마나 많은 메모리를 소비하는지 결정하는 것을 권장해요.
이를 위해 ps나 top 같은 전통적인 도구를 사용할 수 있어요. CloudWatch Container Insights 같은 모니터링 솔루션도 사용할 수 있어요.
CPU 예약을 결정할 때는 애플리케이션을 어떻게 확장해 비즈니스 요구 사항을 충족시킬지 고려해요.
- 작은 CPU 예약(예: 256 CPU 단위, 즉 1/4 vCPU)을 사용하면 비용을 최소화하는 세밀한 방식으로 확장(scale out)할 수 있어요. 하지만 수요가 급증할 때 충분히 빠르게 확장하지 못할 수도 있어요.
- 큰 CPU 예약을 사용하면 더 빠르게 확장(scale in/out)할 수 있어요. 수요 급증에 더 빠르게 대응하는 데 도움이 돼요. 하지만 큰 CPU 예약은 비용이 더 많이 들어요.
기타 애플리케이션 (Other applications)
싱글턴 워커나 데이터베이스 서버처럼 수평적으로 확장되지 않는 애플리케이션의 경우, 사용 가능한 용량과 비용이 가장 중요한 고려 사항이에요.
하중 테스트가 트래픽을 서비스하고 서비스 수준 목표(SLO)를 충족하는 데 필요하다고 보여주는 것에 따라 메모리와 CPU 양을 선택해요. Amazon ECS는 애플리케이션이 적절한 용량을 가진 호스트에 배치되도록 보장해요.