PORTFOLIO/TECHNICAL DECISION-MAKING

[library - 기술적 의사 결정] 프리 티어 한계를 넘어서: 메모리 부족과의 전쟁

jki09871 2025. 1. 8. 12:45

문제

AWS 프리 티어 환경에서 EC2 인스턴스(기본 1GB 메모리)를 사용 중, 스프링부트 애플리케이션 실행 시 메모리 부족으로 인해 성능이 저하되거나 애플리케이션이 비정상적으로 종료되는 문제가 발생.

해결 방안 분석

문제를 해결하기 위해 두 가지 방안을 고려:

  1. Swap 메모리 설정
    • 장점:
      • 비용 추가 없이 현재 인스턴스에서 메모리 부족 문제를 완화할 수 있음.
      • 설정이 간단하고 빠르게 적용 가능.
    • 단점:
      • 디스크 기반으로 메모리를 확장하므로 I/O 성능 저하 발생 가능.
      • 높은 트래픽 상황에서는 여전히 불안정할 수 있음.
    • 설정 방법
  2. 인스턴스 업그레이드
    • 장점:
      • CPU와 메모리 모두 확장 가능, 애플리케이션의 안정성과 성능을 보장.
      • Swap 설정 없이 물리적 리소스 증가로 I/O 병목 문제 해결.
    • 단점:
      • 프리 티어의 무료 범위를 벗어나 추가 비용이 발생.
      • 인스턴스 업그레이드 및 재설정에 시간이 소요될 수 있음.
    • 예상 비용:
      • t2.micro(1GB 메모리)에서 t2.small(2GB 메모리)로 업그레이드 시 시간당 비용 증가.
#Swap 파일 생성 (128M * 16 = 2GB)
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
# Swap 파일 권한 설정
sudo chmod 600 /swapfile
# Swap 파일 영역 설정
sudo mkswap /swapfile
# Swap 파일을 사용할 수 있도록 설정
sudo swapon /swapfile
# 활성화 상태 확인
sudo swapon -s

최종 선택

  • 초기 개발 및 테스트 단계에서는 Swap 메모리 설정을 통해 비용을 최소화하고, 성능 문제를 임시로 해결.
  • 추후 애플리케이션 사용량이 증가하거나 운영 환경으로 전환할 경우, 인스턴스 업그레이드를 통해 안정적인 운영 환경을 확보.