AWS EC2 freetier instance에 spring boot 배포시 멈춤 현상
해당 포스트에 작성된 문제와 해결 방법은 아래 글을 참고하여 해결 하였습니다~!
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 프리티어를 사용하게 되면 기본적으로 가상메모리에 대한 옵션은 항성 적용하는 방향으로 이용해야겠다 라는 생각이 들었다.