EKS Graviton 마이그레이션 - 비용절감 프로젝트 #1

2025. 4. 22. 16:37·AWS/EKS
이 글은 AWS 인프라 운영 중 경험한 실제 비용절감 사례를 기록한 시리즈입니다.

Graviton 이란?

AWS Graviton은 AWS에서 자체적으로 설계한 ARM 아키텍처 기반의 클라우드 전용 프로세서다. 기존 인텔(x86) 프로세서 대비 높은 성능 효율성과 낮은 운영 비용을 제공하는 것이 특징이다. 

왜 Graviton 기반 인프라로 전환해야 하는가?

최근 클라우드 인프라 운영에서 비용 효율성과 성능 최적화는 중요한 화두로 자리 잡고 있다. 기존의 x86 아키텍처 기반 인스턴스는 높은 운영 비용과 에너지 소모라는 부담이 있었다. 이를 해결하기 위해 AWS가 제공하는 ARM 아키텍처 기반 Graviton 프로세서를 도입하여 비용을 절감하면서도 성능 효율성을 동시에 얻을 수 있다.


Graviton으로 어떻게 마이그레이션 할까?

Graviton으로 마이그레이션 하는 입장에서는 처음으로 드는 생각은 CPU 아키텍처가 다르다는 부분을 가장 먼저 생각 할 것이다.

그럼 과연 어떻게 작업을 진행해야 서버를 Graviton으로 이전할 수 있을지 경험을 공유하고자 한다. 

Graviton 마이그레이션 및 CI/CD 구축 방법

1. Graviton 기반 Kubernetes 노드그룹 구축

  • AWS Graviton 인스턴스를 활용하여 EKS 클러스터의 신규 노드그룹을 구성했습니다.

2. Jenkins 파이프라인 및 ARM64 Agent 구성

  • Jenkins 환경에서 ARM64 Agent를 별도의 서버로 구성하여 인텔 및 ARM64 빌드를 분리했습니다.
  • 병렬 빌드 전략을 적용하여 ARM64 빌드 추가로 인해 발생하는 빌드 시간 증가 이슈를 해결했습니다.

Jenkins EC2 생성 (Agent graviton)

Jenkins Agent 구성

핵심 옵션
- Tool Locations : Agent 서버 JDK 버전을 파이프라인에 지정하는 플러그인

agent.jar 를 다운받을 수 있는 가이드가 나오는데 한가지 선택해서 사용하면 됩니다.

2-2. agent.jar service 등록 (utuntu graviton image)

  • /etc/systemd/system 경로에 jenkins-agent.service 아래와 같이 생성
[Unit]
Description=Jenkins Agent
After=network.target

[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu
ExecStart=/usr/bin/java -jar /home/ubuntu/agent.jar -jnlpUrl https://[jenkins-url]/computer/graviton-agent-1/jenkins-agent.jnlp -secret [secrets] -workDir "/home/ubuntu"
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
  • 서버가 재시작되어도 agent가 항상 실행될 수 있도록 서비스 작업
# systemd에 유닛 파일 리로드
sudo systemctl daemon-reexec
sudo systemctl daemon-reload

# 서비스 등록 및 시작
sudo systemctl enable jenkins-agent.service
sudo systemctl start jenkins-agent.service

# 상태 확인
sudo systemctl status jenkins-agent.service

 

3. Docker Manifest를 이용한 멀티 아키텍처 이미지 관리

  • Docker Manifest 기능을 활용해 동일한 이미지 태그로 인텔 및 ARM64 이미지를 관리하여, 아키텍처에 따라 자동으로 적절한 이미지를 선택하게 했습니다.
  • 이를 통해 모든 환경에서 일관된 이미지 태그를 제공하고 운영의 복잡성을 감소시켰습니다.

4. 무중단 마이그레이션 및 신속한 롤백 전략 구축

  • Route53 가중치를 활용하여 롤백과 장애대응을 신속하게 할 수 있었습니다.


정리

  • Graviton 전환 후 EC2 비용을 연간 26,000달러 절감
  • Jenkins 파이프라인과 Docker Manifest를 활용한 멀티 아키텍처 구성으로 운영 환경의 일관성과 효율성을 동시 확보
  • ARM64 빌드 환경과의 호환성을 철저히 관리하여 운영 안정성을 높이고, 장애 대응을 위한 무중단 배포 및 롤백 전략을 구축하여 서비스 가용성을 크게 향상시켰습니다.
  • 다행스럽게 Java 기반으로 개발되어 있어 우려하던 라이브러리 호환성은 없었습니다.

'AWS > EKS' 카테고리의 다른 글

EKS 무중단 업그레이드 - Route53 가중치 라우팅  (0) 2025.06.18
Karpenter로 EKS EC2 비용 최적화하기 - 비용절감 프로젝트 #2  (1) 2025.05.02
keda 활용해서 프로매태우스 매트릭을 손쉽게 사용하기  (0) 2025.04.18
'AWS/EKS' 카테고리의 다른 글
  • EKS 무중단 업그레이드 - Route53 가중치 라우팅
  • Karpenter로 EKS EC2 비용 최적화하기 - 비용절감 프로젝트 #2
  • keda 활용해서 프로매태우스 매트릭을 손쉽게 사용하기
J cloud
J cloud
AWS 기술 정리 블로그
  • J cloud
    AWS with J
    J cloud
  • 전체
    오늘
    어제
  • 공지사항

    • 공지
    • 분류 전체보기 (10)
      • AWS (10)
        • VPC (1)
        • EC2 (1)
        • EKS (4)
        • S3 (1)
        • AmazonQ (1)
        • Cloudwatch (2)
      • Devops (0)
        • Jenkins (0)
        • CICD (0)
      • Programing (0)
      • Troubleshooting (0)
  • 링크

  • 인기 글

  • 태그

    custom-metrics
    EKS
    AL2
    AL2023
    aws
    KEDA
    1.31
    amazonqcli
    비용최적화
    s3
  • 최근 글

  • 최근 댓글

  • 블로그 메뉴

    • 방명록
  • hELLO· Designed By정상우.v4.10.3
J cloud
EKS Graviton 마이그레이션 - 비용절감 프로젝트 #1
상단으로

티스토리툴바