작성 주식 뉴스 분석 프로젝트 <news crawl><4>

프로젝트 개요 및 각 글들의 링크: https://namth.tistory.com/18

 

핵심적인 로직들을 작성하였으므로 이제 http 요청에 응답 가능하게 웹 서버를 작성하고,
배포를 위해 dockerfile을 작성할 것이다.


 

웹 서버


웹 서버 프레임워크는 Flask를 사용하여 작성하였다.
구동은 gunicorn으로 구동할 예정이다.

POST body의 데이터에서 크롤링할 주제의 이름과 언어의 코드를 가져온다. (subject, source_lang)

라우팅 되는 함수의 데코레이터 중 abstract_request 함수가 있는데, 원래는 cors 및 jwt토큰 검사를 위해 request객체를 추출하는
함수였지만, 여기서는 제대로 사용하지 않고 있다. (modules/req_valid.py)


 

Dokcerfile 작성


GCP cloud run으로 배포하기 위하여 웹서버를 docker image로 만들어야 했다.

GCP cloud run을 사용한 이유는 우선 회사에서 사용을 자주 해봐서 익숙하고,
사용한 만큼 요금이 부과되어서 요금이 적게 든다. 또한 요청이 줄거나 증가하면 인스턴스(서버)의 개수를 조정하여 부하를 맞춰준다.






실행에 필요한 모듈 목록은 requirements.txt에 있으므로 해당 파일 읽어 모듈을 설치하고
nltk의 경우 따로 데이터가 더 필요하여 추가적으로 데이터를 다운로드하였다.

모델의 경우 다운로드를 위해 스토리지에 업로드 후 객체를 공개로 전환하여 다운로드가 가능하게 만들었다.

Flask와 gunicorn을 사용해야 성능이 제대로 나오므로 gunicorn을 이용하여서 서버를 실행시켰다.

 

개발 시 만나는 출력문

 

 

배포(gunicorn) 시 출력문

참고자료

알게 된 점 기록

# 2022.09.30 수정