AWS Graviton 인스턴스란? 성능, 비용, 호환성까지 실사용 후기
AWS에서 제공하는 Graviton 인스턴스는 예전부터 알고는 있었지만, 실제로 손이 가지는 않았다.
처음엔 ARM 기반이라는 말만 듣고 “호환성 이슈나 있을 텐데 굳이?”라는 생각이었다.
하지만 최근 회사 프로젝트에서 운영비를 절감해야 했고, 마침 AWS가 콘솔 내에서 Graviton 추천 메시지를 계속 띄워주길래 본격적으로 테스트에 들어갔다.
Graviton, 뭐가 다른가?
Graviton 인스턴스는 AWS에서 직접 설계한 ARM 기반의 CPU를 탑재한 EC2 인스턴스다.
내가 테스트한 건 Graviton2 (2020년 출시) 기반의 t4g, m6g, c6g 타입이었다.
최근엔 Graviton3 시리즈도 출시됐지만, 비용 절감을 고려할 땐 Graviton2도 충분했다.
AWS에 따르면 Graviton 인스턴스는 x86 인스턴스 대비 최대 40% 비용 절감이 가능하다고 되어 있다.
하지만 이건 어디까지나 이론상의 이야기다. 실제로는 어떤 환경에서, 어떻게 설정하느냐에 따라 차이가 크다.
그래서 나는 두 가지 환경에서 직접 테스트를 진행했다.
Node.js 기반 REST API 서버
Python 기반 FastAPI 컨테이너 서비스
두 서비스 모두 ECS Fargate와 EC2 기반 운영을 병행하고 있었고, 기존에는 t3, c5, m5 계열 인스턴스를 사용 중이었다.
EC2 Graviton 테스트 환경 세팅
Graviton 인스턴스를 처음 쓸 때 가장 먼저 확인한 건 운영체제 호환 여부였다.
다행히 최근 대부분의 리눅스 배포판은 ARM64 아키텍처를 완벽히 지원한다.
내가 주로 사용하는 건 Amazon Linux 2와 Ubuntu 22.04였는데, 아무 문제 없었다.
특히 apt, yum 패키지 설치도 x86과 큰 차이가 없었고, Docker, Nginx, Node.js, PostgreSQL까지 모두 정상 작동했다.
테스트에서 주의한 부분은 다음과 같다.
- ARM 아키텍처를 위한 별도 빌드 확인
- Node.js는 공식적으로 ARM64 지원이 잘 되어 있었고,
- Python도 대부분의 패키지가 문제 없이 설치됐다.
- 하지만 psycopg2, uvloop 같은 일부 바이너리 패키지는 ARM에서 빌드 이슈가 잠깐 발생하기도 했다.
이 부분은 pip wheel이나 Docker multi-arch 빌드를 통해 해결할 수 있었다.
부하 테스트: Graviton2 vs x86 (동일 조건)
테스트는 Apache Benchmark (ab)와 wrk 도구로 진행했고, 각각의 인스턴스에서 CPU 점유율, 응답 속도, 처리량을 비교했다.
테스트 인스턴스:
- c6g.large (Graviton2, 2 vCPU, 4GB RAM)
- c5.large (Intel Xeon, 2 vCPU, 4GB RAM)
테스트 결과 요약:
즉, Graviton2는 x86보다 평균 7~10% 더 빠르고, 비용은 20% 이상 저렴했다.
웹 서버 기준으로는 거의 완벽한 대체가 가능하다고 판단했다.
Docker 환경 전환 팁
Docker 기반의 마이크로서비스 아키텍처를 사용한다면, Graviton으로 전환 시 이미지 아키텍처 문제를 조심해야 한다.
기존에 amd64만 지원하던 이미지들은 arm64에서 실행이 안 될 수 있다.
이 문제를 해결하는 방법은 두 가지였다.
- 멀티 아키텍처 이미지 사용 (multi-platform)
- 예: node:18-alpine, python:3.11-slim 등은 대부분 ARM64를 기본으로 지원함
- 도커 빌드 시 플랫폼 지정
- docker buildx build --platform linux/arm64 -t myimage:arm64 .
빌드 시간이 조금 더 걸리는 대신, 이 방식으로는 거의 모든 이미지를 ARM에 맞게 만들 수 있었다.
또한 GitHub Actions나 AWS CodeBuild 같은 CI에서도 buildx를 활성화하면 자동으로 ARM 아키텍처 빌드를 수행할 수 있었다.
장기 운영 시 비용 절감 효과
한 달 동안 EC2 인스턴스 5개를 Graviton으로 전환했더니, 예상보다 더 큰 비용 차이가 났다.
아래는 CloudWatch 비용 대시보드에서 확인한 실제 차이:
- 기존 x86 EC2 월 요금: 약 $220
- Graviton2 EC2 월 요금: 약 $174
→ 한 달에 $46 절감 (약 21%)
서비스 규모가 커질수록 이 차이는 더 커질 수 있다.
특히 오토스케일링 환경에서 유휴 상태가 많을수록 Graviton의 효율이 확실히 드러난다.
완전히 전환하기 전에 체크할 것
- 어플리케이션 바이너리 의존성
- ARM에서 컴파일되지 않는 의존성이 있을 수 있다.
- Python C 확장, 일부 Java native 라이브러리 등.
- 운영툴 호환성
- APM, 모니터링 에이전트, 보안툴 등 상용 소프트웨어 중 일부는 x86 전용.
- 리전 지원 여부
- Graviton은 대부분 리전에서 지원되지만, Fargate ARM은 일부 리전 제한이 있다.
웹·마이크로서비스엔 Graviton이 진짜 가성비 갑
직접 한 달 이상 운영하면서 느낀 점은 명확하다.
“x86이 당연히 더 좋다”는 편견은 이제 버려도 된다.
ARM 기반이지만, Graviton2는 대부분의 웹 서버와 마이크로서비스에 충분히 빠르고 안정적이다.
게다가 비용까지 절감되니, 중소규모 서비스에서는 최적의 선택지가 될 수 있다.
단, 본격적인 전환 전에는 꼭 애플리케이션 호환성과 운영툴 호환성을 꼼꼼히 체크하는 걸 추천한다.
이것만 준비되면 Graviton은 훌륭한 대안이 된다.
댓글