과거의 유산들/프로젝트

배포 성공!🙌😂1달이나 걸린🤬 elasticbeanstalk 후기 (fastapi사용)

빈나 2024. 1. 11. 18:42
반응형

웹을 만들고 나서 배포하는 법을 유튜브에 검색을 하였다.

코딩 애플 선생님의 elasticbeanstalk영상을 보게 되었다.

https://www.youtube.com/watch?v=cOUhREAWJNw

그래서 정말 쉽게 아마존 웹사이트에서 하라는대로 서버를 띄웠다. 그리고 그 상태로 만든 코드들 zip압축 한 후 업로드 배포를 하니,,,,,

 

결과는 그냥 에러투성이로 돌아가지 않았다.

왜냐하면

 

1.아마존 웹에 띄운 서버에는 내 패키지 리스트가 다운되어 있지 않음

내가 만든 프로젝트에는 fastapi를 활용해 만든 웹이기 때문에 당연히 fastapi가 깔려있는 환경에서 작동이 가능하다.

그러나 나는 그냥 무지성으로 코드 옮겨 넣고 실행을 바랐던 것이다.

따라서 해결책으로 현재 패키지 리스트 확인을 위해

pip freeze > requirements.txt로 패키지 리스트를 텍스트 파일로 만들어 코드 압축 할 때 같이 넣으면

eb가 알아서 패키지 리스트 확인해서 다운을 받는다.

따라서 내 환경과 똑같이 만들 수 있다.

 

2.proctice파일로 어떻게 실행하는지 알려줘야했다.

proctice파일은 우리가 로컬에서 실행할 때 터미널에 치는 코드들을 실행시켜 주는 역할을 한다.

fastapi에서는 uvicorn main:app --reload 했지만 eb에서는 main 대신 application으로 이름을 수정했기에 uvicorn application:app --reload을 해야한다. 또한 --reload대신 포트 번호를 설정하기 위해 

uvicorn application:app --host 0.0.0.0 --port 8000을 해주었다.

 

3.포트번호를 바꾼 이유

포트 번호를 바꾸지 않으면 502 nginx에러가 뜨는데 포트 번호가 서로 일치하지 않는다면 서로 찾지 못해 서버 에러가 뜨는 것이었다.

대략적인 기본 원리가 80번 또는 443번으로 들어오는 네트워크 요청을 nginx가 설정한 포트(5000,8000등)으로 앱을 찾는데 만약 서로 맞지 않는다면 찾을 수가 없어 에러가 뜨는 것이었다.

 

위 3가지 주된 이유로 배포하는데 있어 많은 시간이 걸렸다. 영상에 나오지 않았지만 여러 디테일들이 필요한 작업이었다.

 

배포하는데 결정적인 역할을 해주신 블로그

https://myohyun.tistory.com/328

 

220305금 - elasticbeanstalk 사용해서 api 띄우기

당신은 돈을 내기 위해 태어난 사람 ~(...) EBS도 돈이 나가는구먼. 로드밸런서.. 거 kinesis도 메세지 몇 개 던지지도 않았는데 저렇게 나왔다. 쩝..서울 리전이어서 더 비싼 것도 있는 듯하고. 이래

myohyun.tistory.com

 

그 외에 삽질을 하면서 돈이 빠져 나가게 되었다.

당연히 프리티어 micro만 쓰고 아직 1년도 안 지났는데 너무 황당했다.

 

그 이유는 애플리케이션을 생성과 삭제를 반복하면서 s3버킷에 백업용 데이터가 남아 지출이 발생하고 있었다.

또한 나라마다 애플리케이션을 독립적으로 생성이 가능해서 서울에 하나만 서버를 만들었다고 생각해도 다른 지역에 서버가 있을 수 있다.

나도 모르게 삽질하던 과거의 내가 만든 미국 동부 버지니아에 서버를 만들어 1개 초과를 해서 비용이 발생되고 있었다.

개열받는 버지니아 북부

 

💩

 

반응형