일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 프로그래머스
- Python
- pycon
- 불량 사용자
- trie
- 튜플
- 카카오 인턴
- Spring Boot
- Tistory
- 트라이 #trie #알고리즘
- Open API
- CleanCode
- 알고리즘
- 티스토리
- 호텔 방 배정
- 티스토리 open api
- 가사 검색
- jdbc
- 트라이
- 크레인 인형뽑기 게임
- 보행자 천국
- bulk update
- 징검다리 건너기
- Today
- Total
택시짱의 개발 노트
AWS EC2 freetier instance에 spring boot 배포시 멈춤 현상 본문
해당 포스트에 작성된 문제와 해결 방법은 아래 글을 참고하여 해결 하였습니다~!
https://okky.kr/articles/884329
문제
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 프리티어를 사용하게 되면 기본적으로 가상메모리에 대한 옵션은 항성 적용하는 방향으로 이용해야겠다 라는 생각이 들었다.
'spring' 카테고리의 다른 글
Spring Boot Jdbc Bulk Update 삽질기 (Feat. VALUES Parsing Problem) (1) | 2024.02.15 |
---|---|
Kotlin Spring Boot 중첩 클래스에 @Valid 사용 - feat) 이모지 체크(Emoji Valid) (0) | 2023.11.28 |
Spring Cloud OpenFeign의 Logging 방법 (0) | 2023.07.07 |
spring cloud open feign이란?? (작성중) (0) | 2022.10.23 |
Spring Boot - RestAPI (0) | 2022.07.31 |