이 글은 제가 작업했던 내용을 정리하기 위해 수기 형식으로 작성 된 글입니다.
2022.12.09 - [[신.만.추]] - 신입이 만드는 추천시스템-1(개요)
2022.12.09 - [[신.만.추]] - 신입이 만드는 추천시스템-2(데이터 수집, 스크래핑)
2022.12.09 - [[신.만.추]] - 신입이 만드는 추천시스템-3(셀레니움 최소화)
2022.12.09 - [[신.만.추]] - 신입이 만드는 추천시스템-4(한국어 전처리 및 워드임베딩)
2022.12.10 - [[신.만.추]] - 신입이 만드는 추천시스템-5(아이템 벡터화)
2022.12.10 - [[신.만.추]] - 신입이 만드는 추천시스템-6(웹서버 구축)
2022.12.10 - [[신.만.추]] - 신입이 만드는 추천시스템-7(검색성능향상)
2022.12.10 - [[신.만.추]] - 신입이 만드는 추천시스템-8(포트포워딩)
- 플라스크로 단일서버 구축하기
- 검색성능 향상
- 포트포워딩으로 외부 접속 허용하기
- uWSGI와 gunicorn
저번에 작성했던 글에서 포트포워딩을 통해 flask서버에서 외부접속을 허용했었다. 이번에는 서비스-Flask서버 간에 직접적으로 연결되는게 아닌 WSGI(Web Service Gateway Interface)를 활용하여 여러 사용자의 검색요청에 대해 처리해보도록 하겠다.
4. uWSGI와 gunicorn
검색을 통해 여러 정보들을 살펴보았을 때, WSGI의 경우 nginx나 Apache와 병행해서 사용한다. 이는 웹사이트의 로드를 조절하는 nginx 또는 Apache를 통해 조절 된 요청을 WSGI를 통해 처리하기 위함이다.
하지만 내가 구축했던 추천시스템의 경우 이미 웹사이트는 완성되어 있었고, 거기에 추가적인 기능으로 추천시스템을 붙이기만 하는 것이라서 단순 요청에만 응답하면 되는 시스템이었다.
따라서 nginx나 Apache를 활용하지 않아도 무관하다고 판단했다.
그리고나서 Flask 서버에 사용되는 WSGI 중 uWSGI나 gunicorn에서 어떤걸 적용할지 고민했다.
처음에는 잘 알려진(검색결과에 자주 등장하는) uWSGI를 적용하려 하였다.
그러다 gunicorn이라는 WSGI가 있다는 것을 알게 되었고 두개를 비교해서 살펴보게 되었다.
uWSGI
- pure C언어로 구현 됨
- 무거운 서비스
- 설정해야 할 요소들 많음
gunicorn
- 설치 간편
- 가벼운 서비스
- 커맨드창에서 간단한 명령어로 실행 가능
정말 간단하게 비교해 보았지만, 가벼우면서 사용이 편한 점이 매우 마음에 들어 해당 플라스크 서비스의 WSGI는 gunicorn으로 결정하게 되었다.
gunicorn의 경우 설치와 적용이 정말 편하다.
# gunicorn 설치
$pip install gunicorn
# 서버의 파일 이름이 application.py인 경우
$gunicorn application:app -b 0.0.0.0:{포트포워딩 된 내부포트} -w 2 --timeout=30
- gunicorn application:app -b 0.0.0.0:{포트포워딩 된 내부포트} -w 2 --timeout=30
- -b : 모든 ip에 대해서 포트포워딩 된 내부포트로 접속 가능하게 만듬
- -w : 프로세스의 개수
위와 같이 설치 후 서버 파일이 있는 폴더로 이동하여 명령어를 실행 시켜주면 된다.
참조링크
'[신.만.추]' 카테고리의 다른 글
신입이 만드는 추천시스템-10(엘라스틱서치에 관하여) (0) | 2022.12.11 |
---|---|
엘라스틱서치 설치 및 환경구성 (0) | 2022.12.10 |
신입이 만드는 추천시스템-8(포트포워딩) (0) | 2022.12.10 |
신입이 만드는 추천시스템-7(검색성능향상) (0) | 2022.12.10 |
신입이 만드는 추천시스템-6(웹서버 구축) (0) | 2022.12.10 |