Ann's log

[Node.js] Fly.io로 Node.js 서버 배포하기 본문

Node.js

[Node.js] Fly.io로 Node.js 서버 배포하기

-Ann- 2022. 11. 23. 21:45

 

Fly.io Logo Image

 

지금까지 Node.js 서버와 PHP 프로젝트를 배포할때 Heroku를 사용했었는데,

Heroku의 무료 플랜이 없어진다는 이메일을 보고 Heroku를 대체할 수 있는 서비스를 찾아 보게 되었다.

찾아 보니까 내 생각보다 다양한 서비스가 있다는 것을 알게 되었지만, 어떤 것을 사용해야 할지 정하는게 어려웠다...

일단은 사람들이 많이 사용하고 있어서 정보를 찾기가 쉬운지, 무료로 좋은 플랜을 제공 해주는지 등등의 조건을 따져봤다.

여러 조건을 따진 결과, Fly.io를 선택하게 되었다.

Fly.io에서는 무료 플랜인 Hobby plan으로 다음을 제공 해준다.

  • Up to 3 shared-cpu-1x 256mb VMs
  • 3GB persistent volume storage (total)
  • 160GB outbound data transfer

 

(Deta라는 서비스는 완전 무료로 서비스를 제공 해줘서 제일 사용해 보고 싶었는데, 아직 사용하고 있는 사람들이 그렇게 많지 않고 여러 제약조건이 있어서 포기.ㅜㅜ 그래도 나중에 다른 간단한 프로젝트 만들 때 한번 활용해 보고 싶다.) 

 

 

서버 배포 방법

1. Fly.io 회원가입 하기 (깃허브 계정과 연동 가능 함.)

https://fly.io/

 

Deploy app servers close to your users · Fly

We have the hardware Purpose-Built Cloud We run physical servers in cities close to your users. As close to the metal as you can get without paying shipping. Leaflet Stamen

fly.io

 

2. flyctl 설치하기

flyctl은 Fly.io 플랫폼을 사용할 수 있게 해주는 command-line 유틸리티이다.

mac에서는 터미널에서 다음 명령어를 입력하면 설치할 수 있다.

brew install flyctl

(다른 운영체제에서 설치하는 방법은 여기 참고.)

 

3. 로그인 하기

터미널에서 다음 명령어를 입력하면 로그인 창이 뜬다.

flyctl auth login

 

4. 카드 정보 입력하기

로그인 하고 나면 카드 정보를 입력하라고 뜬다...ㅎㅎ

무료 플랜 사용량을 넘으면 돈을 내야 하기 때문에 카드 정보를 무조건 입력 해야 다음 단계로 넘어갈 수 있다.

 

5. Fly.io에 앱 런칭 하기

터미널에서 배포할 프로젝트의 위치로 이동하고, 다음 명령어를 입력한다.

flyctl launch

 

그러면 app name을 입력하고, 지역을 선택하라고 나온다.

그리고 fly.toml 설정 정보를 물어 보는 질문을 하는데, 프로젝트 구성 환경에 맞게 대답하면 된다.

그러면 배포 과정이 진행되고, 맨 마지막에 v0 deployed successfully 라고 뜨면 완료 된다.

 

여기서 fly.toml 파일이란, 나의 app을 배포하기 위한 default configuration 정보를 담고 있는 파일이라고 한다.

fly.toml 파일을 열어서 확인 해보면 내가 설정해준 app name이 적혀져 있는 것을 볼 수 있다.

 

그리고 Fly.io 페이지에서 보면 다음과 같이 내가 배포한 app이 떠있는 것을 확인할 수 있다.

app 이름을 클릭하면 application information에서 배포한 서버 주소를 볼 수 있다.

 

 

+ 환경 변수 설정하기

일단 여기까지 하면 기본적인 서버 배포는 완료되었지만,

나는 이전에 Heroku를 사용할 때도 환경 변수를 사용해서 AWS rds와 s3 정보를 설정했기 때문에 여기서도 환경 변수를 설정하는 과정이 필요 했다.

Fly.io로 배포한 app에서는 다음과 같이 환경 변수를 설정해주면 된다고 한다. (출처)

flyctl secrets set 환경변수이름=값

 그리고 설정된 환경 변수 목록은 다음 명령어로 확인할 수 있다.

fly secrets list

아니면 배포한 프로젝트 dashboard 페이지에서 확인도 가능함.

 

 

+ 프로젝트 수정 후 재배포

flyctl deploy

 

 

+ 혹시 host 관련 에러가 발생하면 다음 페이지 참고하기

https://fly.io/docs/getting-started/troubleshooting/#host-checking

 

The Fly Global Application Platform

Documentation and guides from the team at Fly.io.

fly.io

 

 

서버 배포 후, 혹시 몰라서 다음날에도 확인해 보니까 서버가 잘 돌아가고 있었다.

Heroku로 이전에 한 번 배포 해봤던 서버라서 그럴수도 있지만, Heroku로 서버 배포했을 때보다 배포 과정이 더 쉽고 편하다는 생각이 들었다. 

그리고 Heroku로 배포한 서버는 일정 시간 동안 서버를 사용하지 않으면 서버를 다시 깨우는 시간이 오래 걸렸는데,

Fly.io로 배포한 서버는 그런게 없어서 확실히 로딩 시간이 짧아서 좋았다.

예전에 만들어 둔 프로젝트 서버라서 자주 사용하게 되진 않을 것 같지만, 혹시 요금이 부과되지 않을지 잘 확인해 봐야겠다. 😵

 

 


참고:

https://fly.io/docs/languages-and-frameworks/node/

https://zeddios.tistory.com/1375

Comments