[스터디] Fly.io로 백엔드 서버 배포 후기

Hyelin Kim·2023년 3월 17일
1

기록

목록 보기
3/5

요약

🙃 일단 배포는 했지만...

🌕 Fly.io를 사용한 이유

그룹스터디 프로젝트중 서버 배포 단계에 들어갔다.

같은 배포 서비스로 Qoddi를 고려해보기도 했지만,
Fly.io를 사용하게 된 이유는 검색 레퍼런스가 상대적으로 많았기 때문이다.

🌖 Fly.io란?

배포를 쉽게 해준다는 설명은 있지만, 좀 더 자세한 내용을 작성하고 싶다.

🚀 Fly.io 배포 과정

알고있다면 좀 더 수월했을수도
Docker, 네트워크(Http, Https, ...)

1. flyctl 설치

ubuntu 22.04 ver

flyctl global 설치

flyctl 최단 경로 등록하기

2. 백엔드 서버 파일에서 배포 진행

Fly.io 배포를 위한 로그인

Fly.io launch 실행하기

3. .env에서 사용했던 변수 fly.io에 등록

flyctl secrets set [변수명]="내용"
flyctl secrets --app [app-name] set [변수명]="내용"

4. 배포 상태 확인

Healthy라면 축하드려요!

문제 해결

1. port 문제

2. mongoDB 접속 문제

변수 등록을 잊지 말자

3. unhealthy

  1. dorckerfile 확인

  2. build 잘 되어 있는지 확인

  3. port 확인하기

4. Cors Error 문제

배포는 잘 되었는데 프론트에서 접속이 금지 되었다.

해결 : Origin headers 설정 문제

싱글벙글 Access-control-allow-Origin

💡 요약: request, response 요청에 모두 설정 해줘야 한다.

왜 발생했을까?

https://developer.mozilla.org/ko/docs/Web/HTTP/CORS#access-control-allow-origin

http요청은 리소스를 공유하기 전 사전요청을 수행한다.
(리소스 전송전, 올바른 요청인지 미리 헤더로 확인하는 작업)

문제를 일으킨 헤더는 요청 자격 증명을 위한 header이므로
특정 IP를 허락할 경우, 다시 같은 URL로 반납을 해야한다.

즉, http 통신 과정에서 preflight 자격증명이 필요하기 때문에 해당 header를 백에서도 response에 헤더를 설정해서 응답을 해야한다는 의미다.

🙂 Fly.io의 장점

1. 빠른 Https 배포
2. 생각보다 넉넉한 free tier
3. 꽤 편리한 배포 과정

😶 Fly.io의 단점

1. 8080이 최선 일까?
2. 필요하지만 없는 일부 기능
그 외 : 포트변경, 생각보다 불친절한 문서... 남아있는 개발 이슈

+ 나름 크리티컬한 단점 :: 가격 🥲

해당 글을 작성하고 한 3달 쯤 되는 시점...
데이터베이스를 사용하면서 과금이 3만원 정도 발생했다.
알고보니 Fly.io의 경우, AWS의 RDB서비스를 사용한다는 것을 알게되었다.

⚠️ 목적을 다한 프로젝트는 최대한 빨리 배포를 내리자

profile
마시는 차를 좋아하는 개발자

0개의 댓글