본문 바로가기
DevOps/CI·CD

[CI·CD] Heroku에 배포하기

by 일상 속 둔치 2020. 8. 17.

 

웹 사이트를 개발하고 사용자들에게 오픈하려면 접속 가능한 서버를 돌려놓아야한다.

 

내 컴퓨터를 방화벽 등 any로 오픈하고 24시간 켜놓을 수 있지만,,, 그렇게 원하는 사람은 많지 않을 것이다.

 

그래서 우리는 AWS, AZURE 같은 클라우드 서비스를 이용해 서버를 대여하여 배포하거나

 

파이어베이스, 헤로쿠 같은 웹 호스팅 서비스를 이용한다.

 

그럼 그 2개의 장단점은 무엇일까?

 

 

1. 클라우드 서비스 (AWS, AZURE)

 

대표적으로 EC2를 들어보자

 

EC2 같은 경우는 특정 OS가 깔린 VM(서버)를 통째로 빌려서 컴퓨터처럼 사용하는 것이다.

 

Putty 같은 ssh툴을 이용해서 CLI로 컨트롤 할 수 있다. (인터페이스 버전도 있다)

 

그래서 EC2를 이용하면 필요한 프로그램들을 다 설치해주어야한다.

 

본인이 원하는대로 커스터마이징(?)을 할 수 있는 것이 장점이다

 

그리고 고성능 처리를 위한 머신러닝 서버 등 고사양 서버 이용이 가능하다.

 

반면 초급자는 설정 같은 것이 하기 어려울 수 있고 가격도 상당히 비싸다

 

 

2. 호스팅 서비스

 

오늘 설명할 Heroku를 보자.

 

Heroku 같은 경우는 EC2와 다르게 VM을 주는 것이 아니라 내 프로젝트를 띄어주는 것이다.

 

그래서 따로 미들웨어나 여러 프로그램 설치 없이 사용할 수 있다.

 

그냥 프로젝트만 전송해주면 웹 사이트를 띄어준다.

 

장점은 간단하고 VM을 통째로 빌리는게 아니라 가격도 상대적으로 저렴하다.

 

단점은 서버 설정을 하거나 서비스 아키텍처 등을 자유롭게 할 수는 없고

 

배포 서버 접속이 불가하다. (호스팅 서비스마다 다를 수 있음)

 

 

자 그럼 Heroku에 대해서 알아보자.

 

Heroku는 호스팅 서비스이며 무료라는 장점이 있다!

 

물론 제약 사항은 있다.

 

하루에 깨어있는 시간 Max가 16시간이다.

* 유료 버전은 항상 깨어있다.

 

30분간 서비스 트래픽이 없다면 sleep 모드에 들어가게 된다.

 

그리고 sleep 모드에 들어가고 wakeup 될때 서버가 다시 일어나면서 응답시간이 느리다.

* wakeup 상태면 응답시간은 빠르다

 

 

서론이 좀 길었다.

 

Springboot를 heroku에 배포해보자.

 

정말 간단하다.

 

1. Heroku 로그인

https://dashboard.heroku.com/

 

Heroku

 

dashboard.heroku.com

에 로그인을 한다.

 

2. New를 눌러 관리할 앱을 생성한다

 

3. 앱 안에 들어가서 Deploy 카테고리를 눌러준다.

총 배포하는 방법은 3가지이다. CLI로 배포하는 법이 있고, Github과 연동하는 법이 있다. 그리고 마지막은 도커 같이 컨테이너 기반으로 배포하는 법이 있다.

 

오늘은 개인적으로 Github 연동이 제일 쉬웠기 때문에 해당 방법으로 포스팅 하려고 한다.

* CLI 배포법은 커맨드라인을 따라 치면 되는데 원리는 내 앱을 올릴 Heroku repository 주소를 받고 원래 레포지토리에 해당 remote 설정하고 내 프로젝트를 git push를 하여 레포지토리에 올리는 방식으로 build를 한다. Heroku repository에만 올리면 Heroku가 알아서 빌드하고 배포해준다.

 

 

4. Deployment method 중 GitHub을 클릭하고 GitHub 계정을 연동해준다.

 

5. (Optional) 브랜치에 Push하면 자동으로 Build 하는 설정이다. 필요하면 해주자.

* 해당 설정을 하지 않으면 아래의 Deploy Branch 버튼을 눌러 수동 배포해주면 된다.

 

6. Deploy Branch 버튼을 눌러 배포하자.

 

7. {appname}.herokuapp.com 에 접속해서 정상 접속 되는 것을 확인해보자!

 

나는 배포하면서 gitignore에 .jar를 추가해놓아서 그래들-래퍼가 올라가지 않아 실행이 되지 않았었다.

 

해당 jar를 읽어서 빌드할 수 있게 ignore에서 해제해주자!

 

이제 무료로 (하루 16시간) 웹 서비스를 할 수 있게 되었다.

 

- 끝 -

'DevOps > CI·CD' 카테고리의 다른 글

[CI/CD] 배포 전략 (Rolling, Blue Green, Canary)  (0) 2020.08.03

댓글