Grafana k6로 EC2 비용 절감: CPU 성능 벤치마킹 가이드
EC2 인스턴스의 CPU 성능을 측정하기 위해 Grafana k6를 활용하여 부하 테스트를 수행
몬테카를로 시뮬레이션을 통해 CPU 집약적 워크로드의 성능을 벤치마킹하고, 7종의 EC2 인스턴스에 적용
CloudWatch를 사용하여 인스턴스별 CPU 사용률을 비교 분석하고, 세대별 성능 차이를 정량적으로 확인
Graviton 인스턴스가 x86 인스턴스 대비 저렴한 가격으로 제공되며, 가격 대비 성능(Price-Performance)을 고려한 최적의 인스턴스 선택을 제시
EC2 인스턴스 타입 선택의 어려움과 해결책
본문에서는 700개 이상의 EC2 인스턴스 타입(Instance Type)이 존재하며, vCPU 수와 메모리 용량만으로는 실제 워크로드 성능을 예측하기 어렵다고 지적한다. CPU 아키텍처(CPU Architecture), 세대, 워크로드 특성에 따라 성능이 달라지기 때문이다.
Grafana k6를 활용한 부하 테스트(Load Test)를 통해 실제 워크로드 환경에서 성능을 측정하는 방법을 제시
몬테카를로 시뮬레이션(Monte Carlo Simulation)을 CPU 벤치마킹 워크로드로 활용하여, CPU의 순수 연산 능력을 측정
테스트 결과, 인스턴스 세대가 높을수록 동일 워크로드에서 CPU 사용률이 감소하는 경향을 확인
Grafana k6를 활용한 부하 테스트 아키텍처
본 글에서는 Grafana k6를 사용하여 EC2 인스턴스(EC2 Instance)의 성능을 측정하는 아키텍처를 설명한다. 테스트 대상 워크로드는 Nginx, Gunicorn, Flask로 구성되어 있으며, 각 구성 요소는 다음과 같은 역할을 수행한다.
Nginx: 클라이언트 요청을 받아 Flask 애플리케이션으로 전달하는 리버스 프록시(Reverse Proxy)
Gunicorn: Nginx로부터 전달받은 요청을 Python 애플리케이션에 전달하고, 여러 워커 프로세스를 생성하여 요청을 병렬 처리하는 WSGI 서버(WSGI Server)
Flask: 몬테카를로 시뮬레이션(Monte Carlo Simulation)을 실행하는 Python 웹 프레임워크(Python Web Framework)
이러한 아키텍처는 CPU 집약적인 워크로드의 성능을 측정하기에 적합하며, k6를 통해 부하를 제어하고 성능 지표를 수집한다.
k6 스크립트 설계 원칙 및 주요 기능
본문에서는 k6 스크립트(k6 Script)를 설계할 때 두 가지 주요 원칙을 강조한다. 첫째, 점진적 부하 증가(Gradual Load Increase)를 통해 초기 트래픽 급증으로 인한 측정값 왜곡을 방지한다. 둘째, thresholds 설정을 통해 지연 시간(Latency)과 응답 실패율(Response Failure Rate)의 임계값을 정의하여 테스트 성공 여부를 객관적으로 판단한다.
자바스크립트(JavaScript) 기반 시나리오 작성: 개발자 친숙한 언어로 테스트를 작성하여, 학습 비용을 절감
Stages 기능: 시간에 따라 가상 사용자(VU) 수를 점진적으로 늘리거나 줄여, 현실적인 트래픽 패턴 재현
Thresholds 기능: 성능 기준 미달 시 CI/CD 파이프라인을 자동 중단하여, 성능 회귀를 자동 감지
CloudWatch를 활용한 성능 분석
본문에서는 Amazon CloudWatch를 사용하여 EC2 인스턴스(EC2 Instance)의 성능 지표를 모니터링하고 분석하는 방법을 설명한다. CloudWatch는 AWS 리소스와 애플리케이션의 지표, 로그, 이벤트를 실시간으로 모니터링하고 시각화하는 서비스이다.
CPU 사용률(CPU Utilization) 지표를 활용하여 인스턴스 타입별 성능 비교
EC2 인스턴스는 CPU 사용률, 네트워크 I/O, 디스크 활동 등 주요 지표를 CloudWatch로 자동 전송
CloudWatch 콘솔에서 CPU 사용률 그래프를 통해 인스턴스 세대별 성능 차이를 시각적으로 비교
결과적으로, CloudWatch를 통해 추가적인 에이전트 설치 없이도 인스턴스 성능을 쉽게 파악하고 분석할 수 있다.
EC2 인스턴스 비용 최적화를 위한 고려 사항
본문에서는 EC2 인스턴스(EC2 Instance) 선택 시 성능뿐만 아니라 비용 효율성(Cost Efficiency)을 함께 고려해야 함을 강조한다. Graviton 인스턴스는 x86 인스턴스 대비 저렴한 가격으로 제공되지만, EC2 세대 표기법이 다르므로 주의해야 한다.
Graviton 인스턴스: x86보다 한 세대 앞선 숫자로 매칭되며, 동급 x86 대비 최대 20% 저렴
AWS Pricing Calculator 및 Cost Explorer: 인스턴스별 시간당 비용을 비교 분석하여, 가격 대비 성능(Price-Performance) 관점에서 최적의 선택지 탐색
실측 대상의 현실성: 몬테카를로 시뮬레이션은 CPU 벤치마크용 예시이므로, 실제 서비스 성능을 알고 싶다면, 동일한 방식으로 측정
결론적으로, 성능 테스트 결과와 함께 비용 분석을 병행하여, 최적의 EC2 인스턴스 타입(EC2 Instance Type)을 선택하는 것이 중요하다.