최적의 EC2 인스턴스 크기를 선택하여 최고 성능을 달성하는 방법
워크로드의 CPU, 메모리, 스토리지, 네트워크 및 비용 신호를 AWS 인스턴스 제품군에 매칭하여 EC2 인스턴스 크기를 선택하세요.
최적의 EC2 인스턴스 크기를 선택하여 최고 성능을 달성하는 방법
올바른 Amazon EC2 인스턴스 크기를 선택하는 것은 성능 위험과 낭비되는 비용 사이의 균형입니다. 인스턴스가 너무 작으면 부하가 걸릴 때 앱 속도가 느려집니다. 너무 크면 워크로드가 사용하지 않는 CPU, 메모리 또는 네트워크 용량에 대해 비용을 지불하게 됩니다.
범용부터 컴퓨팅 최적화 및 메모리 최적화까지 다양한 인스턴스 제품군 간의 미묘한 차이를 이해하는 것이 AWS에서 효율적인 클라우드 리소스 관리를 위한 첫 번째 단계입니다.
1. EC2 인스턴스 제품군 이해
AWS는 EC2 인스턴스를 기본 리소스 할당(CPU, 메모리, 스토리지 또는 네트워킹)에 따라 제품군으로 구성합니다. 워크로드의 주요 리소스 요구 사항을 올바른 제품군에 매칭하는 것은 기본 성능에 매우 중요합니다.
A. 범용 인스턴스(M, T 제품군)
이러한 인스턴스는 컴퓨팅, 메모리 및 네트워킹 리소스의 균형을 제공하며 많은 웹 서버, 중소 규모 데이터베이스 및 개발 환경에 이상적입니다.
- M 제품군(예:
m6i,m7g): 균형 잡힌 워크로드를 위한 안정적이고 확장 가능한 성능을 제공합니다. - T 제품군(예:
t3,t4g): 이들은 버스트 가능 인스턴스입니다. 기본 수준의 CPU 성능을 제공하지만 필요할 때 CPU 크레딧을 사용하여 해당 기준 이상으로 버스트할 수 있습니다. 트래픽 패턴이 변동하는 워크로드(예: 트래픽이 적은 웹 애플리케이션 또는 지속적인 높은 CPU가 필요하지 않은 백그라운드 서비스)에 탁월합니다.
T 인스턴스에 대한 팁: CPU 크레딧 잔액을 면밀히 모니터링하세요. 인스턴스가 지속적으로 크레딧이 부족하면 기본 성능으로 제한됩니다. 이 경우 M 제품군 인스턴스로 마이그레이션해야 합니다.
B. 컴퓨팅 최적화 인스턴스(C 제품군)
애플리케이션이 CPU 집약적인 경우(예: 고성능 웹 서버, 배치 처리, 비디오 인코딩 또는 과학적 모델링) C 제품군(c6i, c7g)은 컴퓨팅 성능에 대해 최고의 가격/성능 비율을 제공합니다.
C. 메모리 최적화 인스턴스(R, X 제품군)
이들은 대규모 관계형 데이터베이스, 인메모리 캐시(Redis 또는 Memcached 등) 및 대규모 데이터 세트에 대한 빠른 액세스가 필요한 고성능 분석 엔진과 같은 메모리 집약적인 작업을 위해 설계되었습니다.
- R 제품군(예:
r6i,r7a): 높은 메모리 대 vCPU 비율.
D. 스토리지 최적화 인스턴스(I, D 제품군)
로컬 스토리지의 매우 큰 데이터 세트에 대한 매우 높은 순차 읽기/쓰기 액세스가 필요한 워크로드(예: NoSQL 데이터베이스(Cassandra, MongoDB) 또는 데이터 웨어하우징 애플리케이션)에 사용됩니다.
2. 워크로드 요구 사항 분석
선택한 제품군 내에서 올바른 크기를 선택하려면 애플리케이션이 실제로 필요한 것이 무엇인지 정량화해야 합니다. 여기에는 일반적으로 기존 환경에서 또는 부하 테스트 중에 주요 성능 지표(KPI)를 모니터링하는 것이 포함됩니다.
A. CPU 사용률 분석
애플리케이션이 CPU 바운드인지 확인합니다. 지속적으로 높은 CPU 사용률(일관되게 70-80% 이상)은 더 많은 처리 능력이 필요함을 나타냅니다. 버스트 가능 워크로드의 경우 평균 CPU 사용률을 CPU 크레딧 사용량과 비교하여 모니터링합니다.
실행 가능한 단계: 대상 환경이 지속적인 애플리케이션(예: 기본 API 게이트웨이)인 경우 T 인스턴스를 피하고 M 또는 C와 같은 안정적인 제품군을 선택합니다.
B. 메모리 소비(RAM)
메모리는 Java 애플리케이션이나 대규모 캐시와 같은 애플리케이션에서 병목 현상이 발생하는 경우가 많습니다. 과도한 스와핑 또는 페이징(디스크 공간을 가상 메모리로 사용)이 관찰되면 인스턴스에 메모리가 부족한 것입니다.
핵심 지표: 최대 부하에서 애플리케이션이 적극적으로 사용하는 RAM 비율을 측정합니다. 데이터베이스 또는 캐싱 소프트웨어의 요구 사항(예: 메모리가 중요한 경우 R 제품군)에 맞는 메모리 대 vCPU 비율을 가진 인스턴스를 선택합니다.
C. 스토리지 및 I/O 요구 사항
애플리케이션이 디스크에서 자주 읽거나 쓰는 경우(예: 트랜잭션 데이터베이스) 로컬 디스크 크기보다는 초당 입출력 작업(IOPS) 및 처리량에 중점을 둡니다.
- 인스턴스 스토리지(임시): 일부 인스턴스(I 제품군 등)는 고성능 로컬 NVMe 스토리지를 제공합니다. 임시 데이터에 탁월하지만 중지/종료 시 손실됩니다.
- Elastic Block Store(EBS): 영구 스토리지의 경우 인스턴스 유형이 필요한 EBS 볼륨 성능 계층(예:
gp3대io2Block Express)을 지원하는지 확인합니다.
D. 네트워크 대역폭
상당한 데이터 전송을 처리하는 애플리케이션(예: 미디어 처리, 대규모 데이터 스트리밍)의 경우 네트워크 처리량이 중요해집니다. 많은 최신 인스턴스는 향상된 네트워킹(ENA)을 지원하지만 달성 가능한 최대 대역폭은 인스턴스 크기에 따라 확장됩니다.
- 팁: 더 작은 인스턴스는 종종 네트워크 대역폭이 제한됩니다. 높은 처리량이 필요한 애플리케이션을 다룰 때는 항상 네트워크 성능 사양을 확인하세요.
3. 크기 조정 전략: 테스트에서 프로덕션까지
크기 조정 프로세스는 반복적이어야 하며 데이터에 의해 주도되어야 합니다.
1단계: 작은 인스턴스로 기준 설정
선택한 제품군에서 m6g.large 또는 이에 상응하는 인스턴스로 작게 시작합니다. 애플리케이션을 배포하고 예상되는 최대 트래픽을 모방하는 표준화된 부하 테스트를 실행합니다.
2단계: 병목 현상 식별 및 수직 확장
CloudWatch 지표(CPU 사용률, 메모리 사용률, 네트워크 인/아웃, 디스크 읽기/쓰기 IOPS)를 사용하여 제약 조건을 찾습니다.
| 발견된 병목 현상 | 제안된 조치 | 대상 제품군/크기 증가 |
|---|---|---|
| 높은 CPU % | 더 많은 처리 능력 필요 | 다음으로 큰 크기 또는 C 제품군 인스턴스로 이동 |
| 높은 메모리 % | 더 많은 RAM 필요 | 다음 크기로 이동, 잠재적으로 R 제품군 인스턴스 |
| EBS 대기 시간 높음 | 스토리지 느림 | EBS 볼륨 성능 증가 또는 로컬 스토리지가 필요한 경우 I 제품군 인스턴스로 이동 |
3단계: 수직 확장 예
m6i.xlarge(4 vCPU, 16GiB RAM)로 시작하여 리소스를 두 배로 늘려야 한다고 결정한 경우:
- 수직 확장:
m6i.2xlarge(8 vCPU, 32GiB RAM)로 이동. - 수평 확장(모범 사례): 무상태 서비스를 실행하는 경우 로드 밸런싱을 도입하고 두 개의
m6i.xlarge인스턴스를 배포하는 것이 선호되는 방법이며, 이는 중복성과 확장성을 제공합니다.
수직 확장에 대한 경고: 쉽지만 애플리케이션이 모든 새 리소스를 균일하게 활용하지 않는 경우 훨씬 더 큰 인스턴스 크기로 이동하면 예기치 않은 오버헤드 또는 리소스 불균형이 발생할 수 있습니다. 상당한 수직 점프 후에는 항상 테스트하세요.
4. AWS Graviton 프로세서 활용
인스턴스를 선택할 때 프로세서 아키텍처를 고려하세요. AWS Graviton 프로세서는 Arm 아키텍처를 사용하며 m7g 또는 c7g와 같은 g 접미사가 있는 제품군에 나타납니다. 운영 체제, 런타임, 라이브러리 및 컨테이너 이미지가 Arm을 지원하는 경우 종종 강력한 가격 대비 성능을 제공합니다.
스택이 호환되는 경우 x86이 기본이라고 가정하지 말고 부하 테스트에 Graviton을 포함시키세요.
지속적인 적정 크기 조정 유지
최적의 EC2 인스턴스 크기를 선택하는 것은 경험적 데이터에 의해 주도되는 지속적인 최적화 프로세스입니다. 기본 리소스 요구 사항(CPU, 메모리, 스토리지)을 올바른 EC2 제품군에 맞추는 것부터 시작하세요. 그런 다음 부하 테스트 중에 CloudWatch와 같은 모니터링 도구를 사용하여 최고 성능 목표를 충족하는 데 필요한 해당 제품군 내의 정확한 크기를 경험적으로 결정합니다. 과잉 프로비저닝을 피하고 수직 및 수평 확장 전략을 모두 신중하게 테스트함으로써 AWS에서 애플리케이션이 효율적이고 비용 효율적으로 실행되도록 보장합니다.