인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

learnlearnlearn님의 프로필 이미지

작성한 질문수

풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]

flask 백엔드 서버와 gunicorn 설정하기1

안녕하세요 배포 관련 질문이 있습니다.

작성

·

57

·

수정됨

0

파이썬 백엔드 강의를 다 들은 상태인데요
medel
controller
view
static
templates
server.py
구조로 되어있을텐데요

이를테면 spring에서 war로 만들어서 tomcat에서 실행시키잖아요

그것처럼 flask도 이 강의 flask 부분을 따라하면
기존 강의의 위처럼 되어있는 구조
(

medel
controller
view
static
templates
server.py
)

에서 flask 식으로 빌드가 가능한건가요?
아직 못 들어봐서 이전 강의 구조 그대로 이어서 배포가 가능한가 싶어서요

spring 은 maven 생성하면 자동으로 properties 나 pom.xml 같은 구조가 기본적으로 갖춰지는데
일반적으로 플라스크는 원래 프로젝트 폴더를 먼저 생성하고 빌드를 위한 구조를 갖추게 하는건가요?

자세한 건 강의보고 따라 하겠지만.. 틀을 잘 모르겠습니다..

---------------------------------------------------------
조금 더 공부하고 찾아보았는데요
1. 기존 구조에서 pip freeze > requirements.txt 를 하여
requirements.txt 파일이 프로젝트 폴더에 추가되게 한다.
2. wsgi.py 파일을 추가해준다
from server.py import app
if name == "__main__":
app.run()
3. gunicon 을 사용하여 프로젝트를 돌려준다.
혹시 이렇게 하는 것인가요?
부족한 것이 있을까요 ?

답변 1

0

잔재미코딩 DaveLee님의 프로필 이미지

안녕하세요. 플라스크나 FastAPI 는 매우 간단합니다.

기본적으로 Flask는 Spring처럼 강제된 디렉토리 구조가 없고, 개발자가 자유롭게 구조를 정할 수 있습니다. 제시해주신

medel  
controller  
view  
static  
templates  
server.py  

와 같은 구조도 Flask 앱으로 전환하여 배포하는 데 전혀 문제가 없습니다.

다음과 같이 진행할 수 있습니다:

  1. requirements.txt 생성
    pip freeze > requirements.txt 명령어로 현재 사용 중인 패키지 목록을 기록해두면, 나중에 동일한 환경을 재현하거나 배포 환경에서 설치할 때 편리합니다.

  2. WSGI 파일 작성
    보통 wsgi.py 같은 파일을 만들어서 WSGI 서버(예: gunicorn)가 앱을 올바르게 임포트할 수 있도록 합니다.
    다만,

    from server.py import app
    

    보다는

    from server import app
    

    처럼 작성하는 것이 일반적입니다. 이 파일은 gunicorn이나 다른 WSGI 서버가 앱을 찾을 수 있도록 하는 역할을 합니다.

  3. Gunicorn 사용
    배포 환경에서 Flask 앱을 서비스할 때는 gunicorn을 많이 사용합니다. 예를 들어,

    gunicorn wsgi:app
    

    와 같이 실행하여 앱을 구동할 수 있습니다.

추가적으로 고려할 사항은:

  • 환경 변수 및 설정 관리
    개발, 테스트, 프로덕션 환경마다 다른 설정을 적용할 필요가 있으므로, config 파일이나 환경 변수를 활용하는 것이 좋습니다.

  • 애플리케이션 팩토리 패턴과 블루프린트
    프로젝트가 커지면 Flask의 애플리케이션 팩토리 패턴과 블루프린트를 사용하여 모듈화하는 것이 유지보수에 도움이 됩니다.

요약하면, 기존 강의 구조를 그대로 유지하면서 Flask로 전환하여 배포하는 방법(즉, requirements.txt 생성, wsgi.py 작성, gunicorn으로 실행하는 방식)은 충분히 유효하며, 크게 부족한 부분은 없습니다.

 

참고로 도커 강의에서도 flask 와 FastAPI 로 도커로 간단히 배포하는 방법을 설명드리고 있어서 이 부분도 이후에 참고가 되실 것 같습니다. ~~~

감사합니다.

learnlearnlearn님의 프로필 이미지

넘 자세한 설명 감사드립니다.!!