새소식

300x250
2. 웹개발/환경설정 & etc

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

  • -
728x90

헤로쿠(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시간 정도만 깨워져 있는 방법을 사용 해도 되지 않을까 싶다.

300x250
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.