Flask

calico·2025년 10월 20일

Computer Science

목록 보기
37/51

1. Flask란?


  • Flask는 Python 기반의 경량 웹 프레임워크로, 간단하고 유연하게 웹 애플리케이션과 API 서버를 만들 수 있습니다.

  • 2004년 Armin Ronacher가 개발했으며, WSGI(Web Server Gateway Interface)를 기반으로 동작합니다.

  • 특징: "Micro Framework"

    • 핵심 기능만 제공, 나머지는 개발자가 직접 선택·구현
  • 주요 용도: REST API 서버, 간단한 웹 서비스, 머신러닝 모델 배포



2. 실무 활용 포인트


1) 빠른 프로토타입 제작


  • 코드가 간결하고 직관적이라, 초기 API 설계와 테스트에 적합

  • 예: 데이터 분석 결과를 웹에서 바로 확인하는 대시보드

2) 머신러닝 모델 배포


  • pickle, joblib로 저장한 모델을 불러와 HTTP API로 제공

  • 예: /predict 엔드포인트로 입력 데이터를 받아 예측값 반환



3) 유연한 확장


  • ORM(SQLAlchemy), 인증(JWT), 템플릿(Jinja2) 등 필요한 기능만 선택적으로 추가 가능



3. 기본 예시 코드


from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route("/hello", methods=["GET"])
def hello():
    return jsonify({"message": "Hello Flask"})

@app.route("/predict", methods=["POST"])
def predict():
    data = request.get_json()
    result = sum(data["numbers"])
    return jsonify({"result": result})

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

실행


python app.py



접속

  • GET: http://127.0.0.1:5000/hello

  • POST: curl -X POST http://127.0.0.1:5000/predict -H "Content-Type: application/json" -d '{"numbers":[1,2,3]}'



4. 장단점


장점

  • 배우기 쉽고 코드가 직관적

  • 경량 → 불필요한 기능이 없어 빠른 개발 가능

  • 생태계 풍부 → 다양한 확장 라이브러리 존재

  • 레거시 시스템과 호환성 높음

단점

  • 비동기 처리 지원 제한 → 대규모 트래픽 처리에 한계

  • 자동 문서화 기능 없음 → Swagger 등 직접 설정 필요

  • 데이터 검증 로직을 직접 작성해야 함



5. 주의사항


  • 운영 환경 배포: app.run()은 개발용 → 운영에서는 Gunicorn, uWSGI 등 WSGI 서버 사용

  • 보안: 입력 데이터 검증 필수 (SQL Injection, XSS 등 방지)

  • 성능: CPU 바운드 작업은 별도 워커나 비동기 큐(Celery, RQ)로 처리

  • 구조 설계: 프로젝트가 커지면 Blueprint로 모듈화 필요



6. 실무 팁


  • API 문서화: Flask-RESTX, Flask-Swagger 등으로 자동 문서화

  • 데이터 검증: Marshmallow, Pydantic(Flask에서도 사용 가능) 활용

  • 배포: Docker + Gunicorn 조합이 안정적

  • 로그 관리: logging 모듈로 요청/응답 및 예외 기록



정리


  • Flask는 작고 단순하지만 강력한 웹 프레임워크로,
    소규모 서비스나 빠른 프로토타입 제작에 최적입니다.

    • 다만, 대규모 트래픽이나 비동기 처리 성능이 중요한 경우에는 FastAPI 같은 ASGI 기반 프레임워크가 더 적합합니다.



profile
개인 블로그

0개의 댓글