free your time

서비스기획, 항공, 장기렌트

웹 개발을 처음 시작하면 Flask, Waitress, Nginx 같은 용어들이 어렵게 느껴질 수 있습니다.
하지만 이 3가지가 어떻게 연관되어 동작하는지를 이해하면, Flask 웹 애플리케이션을 운영하는 기본 구조를 쉽게 파악할 수 있습니다!

오늘은 Flask, Waitress, Nginx가 각각 무엇인지 그리고 이 3가지가 어떻게 함께 동작하는지 초보자도 이해할 수 있도록 쉽게 설명해볼게요.

1️⃣ Flask – 웹 애플리케이션을 만드는 핵심 프레임워크

Flask는 Python으로 만든 웹 애플리케이션 프레임워크입니다.
👉 쉽게 말하면, 웹사이트를 만들 수 있는 Python 도구라고 보면 됩니다.

Flask의 특징

  • 가볍고 빠름 → 간단한 코드로 웹 애플리케이션을 만들 수 있음
  • REST API 개발에 적합 → 백엔드 서버 만들 때 많이 사용됨
  • 확장성이 뛰어남 → 필요에 따라 기능을 추가 가능

예제 코드 – Flask로 간단한 웹 서버 만들기

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, Flask!"

if __name__ == '__main__':
    app.run(port=5000)

👉 실행하면 http://127.0.0.1:5000/에서 “Hello, Flask!”가 출력됨

하지만! 이 Flask 기본 서버는 개발용이라 성능이 낮고, 운영 환경에서는 직접 사용하기 어렵습니다.
그래서 Flask를 안정적으로 실행하기 위해 Waitress 같은 WSGI 서버가 필요합니다!

2️⃣ Waitress – Flask를 안정적으로 실행하는 WSGI 서버

❓ Waitress는 뭐 하는 역할일까?

Flask에는 자체 실행 서버(app.run())가 있지만, 이 서버는 트래픽이 많아지면 쉽게 느려집니다.
그래서 운영 환경에서는 Flask를 실행할 때 Waitress 같은 WSGI 서버를 사용합니다.

Waitress의 역할

  • Flask 서버를 더 안정적으로 실행 (여러 요청을 동시에 처리 가능)
  • 운영 환경에서 적합한 성능 제공 (Flask 기본 서버보다 더 빠름)
  • Windows에서도 쉽게 사용 가능 (Gunicorn은 Linux 전용이라, Windows 환경에서는 Waitress가 더 좋음)
from waitress import serve
from my_flask_app import app  # Flask 앱을 불러옴

serve(app, host="127.0.0.1", port=5000, threads=8)

👉 실행하면 Flask 서버가 더 안정적으로 실행됨!
하지만! 이렇게 실행하면 웹사이트에 접속하는 사용자가 많아질 경우 속도가 느려질 수 있음.
그래서 트래픽을 관리하고 보안도 강화하기 위해 Nginx를 사용합니다.

3️⃣ Nginx – 트래픽을 관리하는 웹 서버

❓ Nginx는 무엇을 하는 걸까?

Nginx는 웹 브라우저에서 오는 요청을 받아서 적절한 서버로 전달하는 역할을 합니다.
쉽게 말하면, Flask 서버 앞에 서서 요청을 정리해주는 문지기 역할을 합니다! 🚪

Nginx의 역할

  • 사용자 요청을 Waitress(Flask)로 전달
  • 많은 트래픽을 효율적으로 분배
  • 정적인 파일 (이미지, CSS, JavaScript 등) 빠르게 제공
  • 보안 강화 (HTTPS 적용, 방화벽 역할 등)

📌 예제 – Nginx가 Flask 서버로 요청을 넘겨주는 설정
(파일 위치: /etc/nginx/sites-enabled/default 또는 /etc/nginx/nginx.conf)

server {
    listen 80;
    server_name mywebsite.com;

    location / {
        proxy_pass http://127.0.0.1:5000;  # Waitress(Flask) 서버로 요청 전달
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

👉 이렇게 설정하면, mywebsite.com에 접속한 요청이 Flask 서버(Waitress)로 전달됨!

4️⃣ Flask + Waitress + Nginx – 실제로 어떻게 동작할까?

이제 Flask, Waitress, Nginx가 어떻게 연관되어 동작하는지 한 번 정리해볼게요.

📌 요청이 처리되는 과정

✅ 1️⃣ 사용자가 브라우저에서 http://mywebsite.com을 입력
✅ 2️⃣ Nginx가 요청을 받아서 127.0.0.1:5000(Waitress 서버)로 전달
✅ 3️⃣ Waitress가 요청을 받아서 Flask 애플리케이션을 실행
✅ 4️⃣ Flask가 결과를 생성해서 Waitress에 전달
✅ 5️⃣ Waitress가 결과를 Nginx에 넘겨줌
✅ 6️⃣ Nginx가 브라우저에 최종 응답을 반환

🚀 정리 – Flask, Waitress, Nginx는 이렇게 동작한다!

역할설명
Flask웹 애플리케이션을 실행하는 Python 프레임워크
WaitressFlask를 안정적으로 실행하는 WSGI 서버
Nginx트래픽을 관리하고 Flask 서버로 요청을 넘겨주는 웹 서버

📌 운영 환경에서 Flask를 실행하는 최적의 방법 1️⃣ Flask로 웹 애플리케이션 개발
2️⃣ Waitress를 사용해 Flask를 운영 환경에서 실행
3️⃣ Nginx를 앞단에 두고 트래픽 관리 및 보안 강화

이제 Flask, Waitress, Nginx가 어떻게 연관되어 동작하는지 이해하셨나요?
이 방법을 사용하면 Flask 웹사이트를 빠르고 안정적으로 운영할 수 있습니다! 🚀🚀🚀

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다