본문 바로가기
3. 웹개발/3_4 환경설정 & etc

헤로쿠(Heroku)에 스프링 부트 프로젝트 배포 하기

by 갓대희 2022. 3. 28.
반응형

헤로쿠(Heroku)에 스프링 부트 프로젝트 배포 하기

안녕하세요. 갓대희 입니다. 이번 포스팅에선 스프링 부트 프로젝트를 헤로쿠(Heroku)에 배포 해보려 합니다. :- ) 

Heroku, 헤로쿠는 여러 프로그래밍 언어를 지원하는 클라우드 컴퓨팅 플랫폼이다. 이름은 히어로 + 하이쿠에서 따왔다.

Git과 GitHub 등을 지원하고, 많은 서비스를 애드온과 API로 지원한다. 2011년에는 세일즈포스가 인수하였다.

탄력성이 매우 좋은게 장점이다.

참고 : https://namu.wiki/w/Heroku

 

heroku를 통해 spring boot 프로젝트를 배포 해보려 한다.
5개까지 무료로 애플리케이션을 배포 가능하다.

 

0.  Netlify로 배포하는 방법

#1. heroku 회원 가입 

 - 하기 헤로쿠 회원가입을 하자. 회원가입, 이메일 인증 처리만 하면되니 간단하다.

https://www.heroku.com/

 - 회원가입이후 DashBoard에서 Create New App을 클릭한다.

 

#2. App name 및 리전 선택.

1) App name : 본인이 서비스할 서비스 명 (헤로쿠 내에서 고유한 프로젝트명만 사용 가능하다.)
   이를 바탕으로 호스팅 될 URL이 생선된다.
ex) App Name : test
    URL : https://test.herokuapp.com/

 

2) 리전 선택

 - 글 작성하는 현 시점에는 US로 하면 된다.

※ 참고로 US리전을 선택하면, 시간도 US 기준으로 잡혀 있다.

 

#3. heroku CLI 설치

 - 리전 선택까지 완료하면 다음과 같은 화면이 보일 것이다.

   중간의 Heroku CLI를 클릭 하여 본인의 OS 버전에 맞게 설치하면 된다.

 - 또는 현시점 기준으로 다음 URL로 접속하여 설치 가능 하다.

https://devcenter.heroku.com/articles/heroku-cli

 

 - 정상 설치 여부는 다음 명령어로 확인 가능하다.

heroku --version

 

 - heroku와 연결할 project폴더를 생성 한고, 해당 경로로 이동, 헤로쿠와 연결하자.

cd 프로젝트경로/
git init
heroku git:remote -a 본인의앱이름

 

#4. Procfile 생성

 - 해당 경로에 spring boot 프로젝트를 연동하고, 루트 디렉토리에 Procfile를 만들어 다음과 같은 예시로 작성해 준다.

ex) web: java -Dserver.port=$PORT $JAVA_OPTS -jar [스프링부트 jar 파일 경로]

 

#5. 이후 연동 및 배포

 - 이후 변경 사항은 git add > commit > push 처리 하면 된다.

git add.
git commit -am "커밋 메세지"
git push heroku master​

 - 터미널에서 배포 로그도 확인 가능 하다.

 - 배포가 정상적으로 완료되면 명령어를 통해 화면을 확인 가능 하다. 

heroku open

 - 또는 위에서 설명한대로 본인의 헤로쿠App URL로 접속해보자.

만약에 오류가 있었다면, 다음과 같은 화면이 노출 될 것이고, 로그를 확인해보자.

 

※ 헤로쿠는 30분간 아무 트래픽이 없으면 앱을 Sleep 처리 해버린다. 이후 다시 서비스를 호출 할 때 웨이크업 타임이 필요 하다.
(나의 경우 약 30초 정도 소요 되는 것 같다.)

이때문에 30분마다 본인의 헤로쿠 주소를 호출해주는 서비스도 있다. (물론 내가 별도의 aws 서비스 등으로 호출할 수도 있을 것 같다.)
http://kaffeine.herokuapp.com/

https://www.heroku.com/pricing

하지만, heroku 가격정책을 보면 한달에 550시간을 무료로 사용할 수 있다고 한다. 신용카드를 등록하면 1000시간까지 사용할 수 있다.

 

cron등을 이용햐여 새벽시간을 제외 하고, 일 약 15시간 정도만 깨워져 있는 방법을 사용 해도 되지 않을까 싶다.

반응형

댓글0