Python Flask

2010년 Armin Ronacher가 만든 Python 웹 프레임워크이다.
“마이크로 프레임워크"라고 불리는 Flask는 핵심 기능만을 가볍게 유지하면서도 필요에 따라 확장할 수 있는 유연한 구조를 제공한다.

주요 개념

  1. 라우팅: URL과 함수를 연결하여 요청을 처리한다.
  2. 템플릿 엔진: Jinja2를 사용하여 동적 HTML 생성을 지원한다.
  3. WSGI: Web Server Gateway Interface를 통해 웹 서버와 애플리케이션 간 통신을 처리한다.
  4. 확장성: 다양한 확장 모듈을 통해 기능을 추가할 수 있다.

특징

  1. 간결성: 최소한의 코드로 웹 애플리케이션을 구현할 수 있다.
  2. 유연성: 프로젝트 구조나 데이터베이스 선택 등에 있어 개발자에게 많은 자유를 제공한다.
  3. 마이크로 프레임워크: 핵심 기능만 제공하여 가볍고 빠른 개발이 가능하다.
  4. 컨텍스트 기반 설계: request, session 등의 글로벌 객체를 컨텍스트를 통해 안전하게 관리한다.
  5. Python 기반: 파이썬의 강력한 생태계를 활용할 수 있다.

장점

  1. 학습 용이성: 간단한 구조로 초보자도 쉽게 배울 수 있다.
  2. 빠른 프로토타이핑: 간단한 프로젝트를 빠르게 구현할 수 있다.
  3. 높은 자유도: 개발자가 원하는 대로 구조를 설계할 수 있다.
  4. 확장성: 필요에 따라 다양한 확장 모듈을 추가할 수 있다.

단점

  1. 기능의 제한: Django에 비해 기본 제공 기능이 적다.
  2. 대규모 프로젝트 관리: 큰 프로젝트에서는 구조화에 추가 노력이 필요할 수 있다.
  3. 성능 최적화: 대규모 트래픽 처리 시 추가적인 최적화가 필요할 수 있다.

개발 특성

  1. 모듈화: 앱 단위로 프로젝트를 구성하여 모듈화된 개발이 가능하다.
  2. RESTful API 개발: API 서버 구축에 적합하다.
  3. 마이크로서비스: 독립적인 서비스 컴포넌트 개발에 유용하다.

성능과 기능

  1. 경량화: 최소한의 오버헤드로 빠른 응답 시간을 제공한다.
  2. 확장 가능한 성능: 적절한 최적화를 통해 높은 성능을 달성할 수 있다.
  3. 내장 개발 서버: 테스트와 개발을 위한 서버를 제공한다.
  4. 디버깅 지원: 개발 모드에서 상세한 오류 정보를 제공한다.

서버 구현 예제

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(debug=True)

이 예제는 간단한 Flask 애플리케이션을 생성하고 루트 URL에 접속 시 “Hello, World!“를 반환한다.

자주 사용되는 패키지

  1. Flask-SQLAlchemy: 데이터베이스 ORM
  2. Flask-WTF: 폼 처리
  3. Flask-RESTful: RESTful API 개발
  4. Flask-Login: 사용자 세션 관리
  5. Flask-Migrate: 데이터베이스 마이그레이션
  6. Flask-Caching: 캐싱 지원
  7. Flask-CORS: 크로스 오리진 리소스 공유
  8. Flask-Mail: 이메일 전송
  9. Flask-Admin: 관리자 인터페이스
  10. Flask-SocketIO: 웹소켓 지원

참고 및 출처

Fetching Title#kn0h