강의에서는 백엔드 배포 방법으로 Heroku, Cloudtype, AWS를 제안해주었고 그중에 실 강의로는 Heroku와 AWS를 진행해주었다.
각기 장단점이 존재했는데 Heroku는 배포가 매우 간단한데 월 5000원이 들어간다는 단점이 있었다.
클라우드타입(Cloudtype)은 배포가 편리하고 무료플랜이 있는데 무료플랜 시 하루에 한번 서버가 잠깐 꺼진다고 한다 ㄷㄷㄷ
AWS는 aws elastic beanstalk라는 서비스로 무료 배포가 가능한데 배포과정이 번거롭고 배포 중 에러발생률이 높다.
처음엔 무료이기도하고 그래도 개발 배우는데 aws 한번 써봐야지~라는 생각으로 aws 배포를 시도했으나 계속해서 발생하는 에러로 결국 포기하게 되었다. 그렇게 차선책으로 선택하게 된 Cloudtype.
하루 한번 꺼진다고는 하지만 현재는 공부단계이므로 큰 문제가 되지 않을거라고 판단했다. 무엇보다 장점은 배포과정이 매우 수월하다는 것.
먼저 백엔드 작업물을 깃허브에 올려준다. 그리고 Cloudtype를 git을 통해 가입! (netlify와 과정은 비슷하다)
그러면 내 깃 프로젝트를 선택해서 가져올 수 있다. 배포하려는 프로젝트를 가져와준다.
프로젝트 선택과 언어/프레임웍을 선택해준다. 나는 node.js프로젝트를 진행했으므로 node.js로 선택. 버전도 잘 맞춰준다.
버전은 node -v를 쳐보면 알 수 있다.
evviroment variables 입력이 중요한데 이게 이전 포스팅에서 언급한 DB uri 주소이다.
변수명과 uri 주소를 잘 넣어주면 된다.
포트는 내가 설정해놓은 서버 포트 넘버를 적어주면 되고 나머지 부분들은 node.js 프로젝트의 경우 위와 같이 적어주면 된다.
참고로 중요한 부분이 health check인데 처음에 path정보 없으면 되지 않을까해서 / 만 입력하고 진행해봤었는데 에러가 났었다. 여기는 진행하는 api 리소스 path 중 아무거나 하나 넣어줘야 한다. gpt왈 경로 체크를 위해 넣어주는 부분이며 여러 경로가 존재하더라도 하나만 체크용으로 넣어주면 된다고 함. 이번 예제는 tasks라는 경로만 있기 때문에 저렇게 넣어주었다.
*다른 프로젝트로 시도했을 때 계속 시작중만 떴던 경우도 있었다. 그럴 땐 health check를 / 로 하는 것도 방법.
참고로 개발버전이 아닌 실제 배포 이후에는 nodemon이 아닌 node app.js처럼 기본 서버 연결 명령어로 해야함
이렇게 잘 세팅 후 배포하기를 눌렀는데 아니나다를까 에러가 발생했다. 로그를 살펴보니 db의 화이트리스트에 서버 ip 주소가 추가되지 않아서라고 한다;; (뭐가 이릴 복잡한겨..)
MongooseServerSelectionError: Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you're trying to access the database from an IP that isn't whitelisted. Make sure your current IP address is on your Atlas cluster's IP whitelist:
gpt에게 물어서 해결점을 찾아보았다.
mongoDB Atlas로 들어가서 network access를 들어가서 ip주소를 열어주어야 했다.
0.0.0.0/0 을 입력해주면 일단 문제를 해결할 수 있었다. (보안상에 문제는 있을 수 있다고 한다. 당장은 보안에 문제될 프로젝트를 진행하는 부분이 없기 때문에 이번 예제는 일단 이렇게 진행하기로)
그렇게 세팅 후 다시 배포를 진행해주고 조금 기다렸더니 이렇게 백엔드도 배포가 정상적으로 잘 되었다!
'나의 개발 일지' 카테고리의 다른 글
[node.js 스터디] 회원가입, 로그인 기능 구현하기 (0) | 2024.10.14 |
---|---|
[Netlify] 프론트엔드 무료 배포 + 도메인 얻는 방법 (0) | 2024.10.12 |
mongoDB Atlas로 DB 무료로 배포하기 (2) | 2024.10.11 |
[Node.js 스터디] 할일 앱 만들기 - 프론트엔드 부분 작업 (4) | 2024.10.09 |
[Node.js 스터디] mongoDB와 연결한 백엔드 설정 (feat. cors에러 해결 방법) (2) | 2024.10.09 |