AWS를 이용하여 지금껏 만들었던 Spring-boot 프로젝트를 배포해보고자 한다. AWS는 1개의 계정에 대해 1년간 무료티어를 제공하는데 시도해볼 엄두가 나질 않다가 수업을 통해 시도해볼 수 있었다.
AWS가 무료티어를 제공하기는 하지만 공식문서를 제대로 읽지 않고 관리하지 않는다면 과금이 될 수 있다.
물론 나도 벌써 200원어치 요금이 부과되었다🤣🤦♀️
📌필수 선택 항목
여기에 추가적으로 키페어를 생성하면 된다.
키페어 유형은 RSA
로 파일형식은 .pem
으로 생성하면 인스턴스 생성은 완료✔
보안 그룹에는 인바운드 그룹
과 아웃바운드 그룹
이 있는데 우리가 사용하는 포트 번호를 설정하는 것이다.
초기 설정은 22번 포트만 설정되어 있지만 내가 올릴 웹 페이지 포트인 8080과 DB 포트 3306를 추가적으로 설정하였다.
인스턴스를 생성하면 IP주소가 발급되는데 발급받은 주소를 고정하지 않으면 인스턴스를 중지했다가 시작할 때마다 다른 IP주소가 설정된다.
이를 방지하기 위해 탄력적 IP를 생성하여 해당 인스턴스에 연결하면 처음 발급받은 주소를 삭제할 때까지 사용할 수 있다.
❗주의할 점
앞서 이야기했듯이 AWS 무료티어를 사용하고 있지만 어떻게 관리하느냐에 따라 과금이 될 수도 있다.
그리고 나 또한 몇 일 만에 과금이 되기 시작했다.
과금된 이유를 찾아보니 탄력적 IP를 할당받고 연결한 인스턴스를 종료하였더니 과금이 되었다.
결론적으로 탄력적 IP를 발급받고 사용하지 않으면 과금이 된다.
그러니까 계속 사용할 거 아니면 탄력적 IP 발급을 받지 말고 만약 인스턴스를 중지하거나 종료하고 나서도 탄력적 IP연결을 해지하고 릴리즈까지 해줘야 과금이 되지 않는다.
다행히 나는 200원을 내고 알게 되었지만 서버를 쓸 때는 항상 조심해야 된다는 것을 깨달았다..🤔
Spring-boot 프로젝트를 서버에 올리려면 jar파일
이 필요하다.
빌드 설정을 통해 clean build
를 수행하면 해당 프로젝트의 build-libs
에 jar파일이 생성된 것을 확인할 수 있다.
생성된 파일을 .pem파일이 위치한 폴더로 이동한 후 scp명령어를 통해 빌드를 수행한다.
scp -r -i (pem파일이름) (jar 파일 이름) ubuntu@(IP Addr):/home/ubuntu
인스턴스에 접속한 다음 mariaDB를 설치한다.
$sudo apt-get install mariadb-server
$sudo apt-get install mariadb-client
$sudo mysql_secure_installation
$sudo mysql -u root -p
위의 과정을 거치면 데이터베이스 설치 후 접속까지 가능하다.
빌드한 jar파일 위치에서 인스턴스 연결을 한 다음 jdk설치 후 파일을 실행시킬 수 있다.
$ sudo apt-get update
$ sudo apt-get install openjdk-11-jdk
$ java -jar (jar파일이름)
마무리
항상 겁내 하던 서버 배포를 시도해보아서 재미있었지만 새벽에 과금이 되고 있다는 메일을 받고는 어이가 없었다.
하지만 이 기회로 어떻게 AWS의 EC2를 사용해볼 수 있어서 유익하였고 앞으로 구성해나갈 프로젝트를 로컬에 한정되지 않고 구현해나가며 더 많은 경험을 할 수 있을 것 같다.