파이썬 이것저것/파이썬 백엔드

[python] Flask 배포하기

agingcurve 2024. 8. 3. 12:31
반응형

서버와 SGI

  서버란 실제로 사용자의 요청을 받고 응답을 주는 엔진엑스(Nginx), 아파치(Apache) 등을 말하며, 네트워크 통신의 전반적인 부분을 담당한다.

Nginx, 아파치와 같은 웹서버와 플라스크 애플리케이션 애플리케이션 사이에서는 통신이 필요하다.

서버 게이트웨이 인터페이스(SGI) 바로 통신 규약, 규약을 통해 서버는 사용자의 HTTP 요청을 애플리케이션에 전달하고, 애플리케이션의 응답을 다시 사용자에게 전달한다.

플라스크에서의 SGI 그중에서도 플라스크 애플리케이션과 서버 사이의 통신 방식만을 정의한다.

 

Flask run 만으로도 내부적으로 간단한 WSGI 서버를 실행시킨다.

그러나 이것은 운영 환경에서 사용하기엔 부족한 면이 많음

 - 성능 이슈 : 플라스크의 내장 서버는 단순하고 가볍기 때문에 많은 트래픽을 처리 하기엔 부족함

 - 보안 문제 : 플라스크의 내장 서버는 보안 기능이 부족해, 직접 인터넷에 노출하는 것은 위험함

 - 확장성과 유지보수 : 복잡한 운영 환경에서는 서버 소프트웨어가 제공하는 다양한 기능(SSL, 로드밸런싱 ) 필요함

 

운영 환경에서는 서버와 함께 SGI 사용하여 안정성, 확장성, 보안성을 높이는 것이 좋음

SGI WSGI(Web Server GateWay Interface) ASGI(Asynchronous Server Gateway Interface) 타입이 나뉘게

WSGI : 동기적인 애플리케이션을 위한 표준이며, 예를 들어, 플라스크와 장고가 기본적으로 WSGI 사용함

ASGI : 비동기적인 애플리케이션을 위한 표준, Fastapi Django Channels 같은 에플리케이션에서 아용됨

 

Gunicorn

파이썬 HTTP 서버로, 플라스크 애플리케이션을 실행하기 위해 많이 선택된다. Gunicorn 외에도 플라스크 애플리케이션을 운영 환경에서 실행하기 위한 여러 WSGI 서버 옵션이 있음

uWSGI, Daphne, mod_wsgi 등도 있음

 

애플리케이션 실행

gunicorn "app:app"

 

 app:app에서 번째 app 파일 이름 (app.py에서 .py 제외한 부분) 나타내고, 번째 app 플라스크 인스턴스를 나타냄

 

 

 - 워커 프로세스 설정

 gunicorn -w 4 "app:app"

 

워커란 Gunicorn 서버가 동시에 처리할 있는 요청의 수를 결정하는 프로세스임, 플라스크 애플리케이션의 동시성을 다루는 사용되며, 워커는 독립적으로 요청받아 처리할 있는 별도의 프로세스임, 여러 워커를 사용하면 동시에 여러 요청을 처리할 있으므로 애플리케이션의 처리 능력이 향상된다. 그러나 워커 수를 무작정 늘리는 것이 최선은 아님, 워커가 많을 수록 많은 자원을 사용하게 되므로 서버의 사양에 맞게 적절한 수를 설정

 

 

 

 

'파이썬 이것저것 > 파이썬 백엔드' 카테고리의 다른 글

[python] Flask Restapi 구현  (0) 2024.07.27
[Python] Flask 세션과 쿠키  (0) 2024.07.21
[Flask] Flask + mysql 연결  (0) 2024.07.21