Blog / Node.js / Node.js 웹 애플리케이션을 Heroku에 Deploy 하기

Node.js 웹 애플리케이션을 Heroku에 Deploy 하기

간단한 API 서버를 Node.js로 만들고 Heroku를 이용해서 서비스를 띄워보는 과정.
해보니 정말 간단해서 깜짝 놀랐다. 사이트에 나와 있는대로 따라하면 2~3분도 안 걸린다.

사전 조건: Node.js와 git이 로컬 환경에 설치되어 있고 PATH가 설정되어 있어야 한다.


1. Express 앱 생성

Eclipse의 nodeclipse 플러그인, IntelliJ, 또는 WebStorm에서 새 프로젝트 만들기로 Node.js(Express) 프로젝트를 선택하면 간단한 껍데기 앱이 생성된다.

bash
npm install   # 필요한 모듈 설치
npm start     # 앱 구동

Express 앱 구동 화면
Express 앱 구동 화면

http://localhost:3000 접속 시 위와 같이 뜨면 정상.


2. Procfile 생성

Express 앱의 루트 디렉터리에 Procfile이라는 이름의 파일을 생성하고 아래 내용을 입력한다.

text
web: node ./bin/www

web: 다음의 내용은 Heroku 서버에서 앱을 Deploy할 때 수행되는 명령어다.
foreverpm2를 사용한다면 해당 명령어로 대체하면 된다.


3. package.json 의존성 확인

Heroku에서 Deploy 시 package.json의 내용을 기반으로 라이브러리를 설치하므로, 모든 의존성이 정확히 명시되어 있어야 한다.

로컬 개발 환경에서 전역 설치해 놓으면 package.json에 적시 안 되어 있어도 앱은 잘 돌아가는 경우가 있어 이 부분을 주의!

라이브러리 설치 시 항상 -save 옵션을 사용한다.

bash
npm install 라이브러리_명 --save

package.json 의존성 확인
package.json 의존성 확인


4. Heroku 계정 생성

heroku.com 에 접속하여 Sign up으로 계정을 만든다.

Heroku 가입 화면
Heroku 가입 화면


5. Heroku 앱 생성

로그인 후 대시보드 우측 상단의 New 버튼을 클릭하여 앱을 생성한다.

  • 앱 이름: 소문자만 허용
  • 서버 위치: 유럽 / 미국 중 선택

Heroku 앱 생성 화면
Heroku 앱 생성 화면

앱 생성 후 대시보드에서 해당 앱의 Deploy 탭을 선택하면 배포 방법이 친절하게 설명되어 있다.
원리: Heroku에서 제공하는 Git Repository를 remote로 설정하고 소스를 push하면 pipeline을 통해 프레임워크를 자동 식별하고 Deploy한다.


6. Heroku CLI 설치

https://devcenter.heroku.com/articles/heroku-command-line 에서 운영체제에 맞는 CLI 툴을 설치한다. (여기서는 Windows 10)

Heroku CLI 설치 화면
Heroku CLI 설치 화면

별도 콘솔 프로그램 없이 Windows 프롬프트에서 heroku 배치파일 명령어로 실행한다.


7. Heroku CLI 로그인 및 앱 확인
bash
heroku login          # Heroku 계정으로 로그인
heroku apps           # 생성해 둔 앱 목록 확인

8. Git Repository 설정 및 소스 커밋

Express 앱 소스 디렉터리로 이동 후 아래 명령어를 순서대로 실행한다.

bash
git init                                          # 로컬 Repository 초기화
heroku git:remote -a heroku에_생성해놓은_앱_이름  # Heroku Git을 remote로 설정
git add .
git commit -am "init commit"                      # 로컬 Repository에 커밋

git 커밋 화면
git 커밋 화면


9. Heroku에 Push & Deploy
bash
git push heroku master

소스가 전송되면서 프레임워크를 자동 탐지하고 Deploy되는 과정이 로그로 출력된다.

Deploy 로그 화면
Deploy 로그 화면

https://앱_이름.herokuapp.com 으로 접속하면 정상적으로 뜬다.
포트 번호를 따로 붙이지 않아도 80포트로 서비스되도록 자동 설정된다.


10. 사용 소감

설정이 매우 간단하고 생산성은 좋으나, 정식 서비스 사용 시 아래와 같은 한계점이 있다.

  • 서버가 해외(유럽/미국)에 있어 국내 서버와 I/F 시 응답 속도가 느림
  • PostgreSQL DB 호스팅도 제공하지만 무료 플랜에서는 사용하기 어려울 정도로 느림
  • 일정 시간 접속이 없으면 웹 서버가 Sleep 모드로 전환되어 재접속 시 응답이 지연됨
  • 제대로 쓰려면 유료 전환이 필요

프로토타입이나 테스트 용도로는 매우 적합하다.

Written by
author
풍우래기

여행을 좋아하는 집돌이 개발자입니다.

블로그에 새로운 글이 발행되었습니다.