본문 바로가기
개발자, 코딩

[Spring]스프링 프로젝트 Heroku 에 deploy하기.

by The Career 2021. 12. 18.
반응형

 

스프링 프로젝트 Heroku(헤로쿠)를 통해 배포할 수 있다는 것을 알게 되어서 한번 시도해보았다.

이번엔 스프링 프로젝트를 헤로쿠에 올리는 방법에 대해서 정리해본다. 대부분은 스프링 부트에 관련된 글이 많아서 스프링을 설명한 글이 많지 않았다. 스프링 부트는 .jar로 배포되기 때문에 조금(?) 방식이 다른 느낌이다.


Heroku(헤로쿠)란?

헤로쿠는 컴퓨터 클라우드  플랫폼이다. 무료 버젼으로도 WAS를 구성할 수 있기 때문에 간단한 포트폴리오, 이력서용 웹 등으로 많이 사용된다. Git과 연동하여 Auto-deploy도 지원하는 듯해서 무료이지만 가볍게 사용하기 좋은 장점이 있는 것 같다.

 

🕐 무료 플랜

 

헤로쿠는 기본 월 550시간 무료 사용이며, 일정시간 요청이 없으면 서버가 Sleep 상태로 전환된다. 이 때 요청이 들어오면 서버가 wake 상태가 되는데 10~30초 정도 시간이 소요된다고 한다. 신용카드를 등록하면 월 1000시간까지 무료라고 하는데, 일단 550시간도 충분할 것 같기도 하고, 신용카드를 등록했다가 혹시 모를 요금폭탄(?)에 대비하여 그냥 기본 무료플랜만 사용하기로 한다. 

 


👌🏼 회원가입 하기

 

 

Heroku | Login

 

id.heroku.com

 

위 링크를 통해 회원가입을 진행한다. 회원가입은 큰 어려움은 없으며, 중간에 이메일 인증까지 해주면 완료된다. 첫 로그인시 추가 로그인 인증을 선택하는 화면이 나오는데, 중요한 서버는 아니므로 Pass!

 

💻 새로운 App 생성하기

로그인 후 상단에 New 버튼으로 Create new app 을 선택한다.

 

 

region은 미국/유럽 2가지만 선택가능하다. 사실 거리상 어디든 멀기 때문에 기본 선택은 미국으로 선택

 

 

생성 후 생성된 app의 Deploy 항목에서 웹 프로젝트 배포 방법에 대한 설명이 나와있다.

대략적으로 헤로쿠 CLI를 설치하여 직접 배포하는 방법, 헤로쿠 자체 Git 사용, Git hub와 연동하는 방법 3가지를 지원하는 것 같다. 이번에는 헤로쿠 CLI로 직접 upload 후 배포한다.

 

 

The Heroku CLI | Heroku Dev Center

Last updated December 02, 2021 The Heroku Command Line Interface (CLI) makes it easy to create and manage your Heroku apps directly from the terminal. It’s an essential part of using Heroku. Download and install The Heroku CLI requires Git, the popular v

devcenter.heroku.com

위 url을 통해 헤로쿠 CLI를 다운로드 하여 설치한다. 

 

설치 후 heroku help 명령어를 통해 사용방법을 찾아볼 수 있다.

 

👨🏻‍💻 스프링 프로젝트 deploy

스프링 프로젝트 기본 설정 후 배포를 위해 system.properties와 Procfile을 root에 생성하였다.

system.properties는 java 11버젼을 사용하기 때문에 추가해주어야한다는 설명이 있어서 추가하였는데, 이하 버젼이라면 별도로 추가는 필요가 없어보인다.

 

system.properties

java.runtime.version=11

 

Procfile

web: java -Dserver.port=$PORT $JAVA_OPTS -jar target/*.war

위 내용을 추가 후 배포용 war 파일을 만들어야한다.

 

maven 으로 생성한 배포용 war 파일

이제 배포를 위한 모든 준비가 끝났다. 터미널로 스프링 프로젝트가 위치한 폴더로 이동한다. 그리고 헤로쿠 명령어로 deploy 명령어를 날려주면 배포완료!

 

heroku war:deploy war-file-path -a app-name

 

war-file-path 에는 maven 으로 생성한 war 파일의 경로를 작성한다.(나의 경우엔 /target/name.war)

그리고 app-name엔 아까 헤로쿠에서 설정한 app name을 작성한다.

 

마지막에 Done을 확인하면 배포가 완료된것이다.

 

 

httsp://앱 이름.herokuapp.com 에서 배포가 완료된 것을 확인할 수 있다.

간혹 접속을 하는데 에러가 떨어지는 경우, 헤로쿠 로그를 참조해야할 경우가 있다.

 

heroku logs -tail -a 앱이름

위 명령어로 https 관련 로그를 확인 할 수 있다.

 

 

🙏🏼 결론

RDBMS는 지원하지 않는 것 같아 아쉽지만, 무료 플랜에 이정도 기능을 제공하는 거라면 상당히 만족스럽다.

개인 포트폴리오 사이트로 활용하면 좋을 듯 하다.

 

반응형