택시짱의 개발 노트

AWS EC2 freetier instance에 spring boot 배포시 멈춤 현상 본문

spring

AWS EC2 freetier instance에 spring boot 배포시 멈춤 현상

택시짱 2022. 12. 4. 18:08

해당 포스트에 작성된 문제와 해결 방법은 아래 글을 참고하여 해결 하였습니다~!

https://okky.kr/articles/884329

 

OKKY - AWS EC2 프리티어 쓰시는분들 참고하세요!

일기장에 기록해둔건데 프리티어 쓰시는 분들에겐 좋은 정보일것 같아 남깁니다.제 일기장에서 긁어온거라 폼이 많이 깨지긴 했는데 감안하고 봐주세요!   AWS 프리티어 EC2를 사용 중 겪은 문제

okky.kr

 

문제

spring boot와 AWS 프리티어 EC2를 사용하여 겪은 문제이다.

Git Action을 이용하여 CI/CD를 구축 후 git action에서 아래 script를 EC2 인스턴스에서 실행하는 과정중에 계속 인스턴스가 멈추는 현상이 발생 했다.

#!/bin/sh

echo "##################################"
echo "###### git checkout release ######"
echo "##################################"
git checkout release

echo "###########################"
echo "######### git pull ########"
echo "###########################"

git pull origin release

echo "##############################################"
echo "#### Grant execute permission for gradlew ####"
echo "##############################################"
chmod +x gradlew

echo "#################################"
echo "######### make jar file #########"
echo "#################################"
./gradlew clean build     # <<<< 문제 발생의 원인

echo "##################################"
echo "######### docker compose #########"
echo "##################################"
docker-compose up --build -d --force-recreate%

원인을 하나씩 찾아 가던 과정 중에 spring boot를 build하는 구문에서 memory가 부족하여 인스턴스가 계속해서 멈추는 것을 확인하게 되었다. 

인스턴스의 유형은 t2.micro를 이용중 스펙은 아래와 같다.

 

해결 방법

1. 인스턴스 변경 - 비용 문제로 인해 포기

RAM의 크기가 더 큰 인스턴스의 유형으로 바꿀까 생각 했으나.. 비용 청구에 대한 부담이 있어 포기.

 

2. jar file build의 주체를 변경 - 성공

jar file build를 EC2인스턴스가 아닌 외부에서 진행 후 EC2 인스턴스에서는 jar file을 실행 하기만 하는 방법.

해당 방법은 성공 했었다. 

 

3. 가상 메모리를 이용 - 성공

두 번째 방법으로 몇일 동안 서버 배포를 진행 하고 있었는데 2번째 방법은 local에서 코드 작업물을 push하기 전에 build를 진행해서 jar file까지 같이 github에 올렸기에 code 작성 이외에 +@의 과정이 꽤나 번거로웠다.

 

그렇게 몇일을 더 방법을 찾다가 가상메모리를 이용하는 방법을 찾게 되엇다.

자세한 방법은 링크를 참고 해주세요 - https://okky.kr/articles/884329

 

느낀점

spring을 사용하기 전에는 python 기반 web framework를 주로 사용하여 build 과정을 생각하지 않았었다. 이전에는 프리티어에서도 서버 구축하는데 큰 문제를 느끼지 못했음..

학교에서 가상 메모리에 대한 부분은 배웠으나 지금까지 써먹어 본적은 없었다.

 

그리고 다음에 EC2 프리티어를 사용하게 되면 기본적으로 가상메모리에 대한 옵션은 항성 적용하는 방향으로 이용해야겠다 라는 생각이 들었다.

반응형
Comments