Python Flask
2010년 Armin Ronacher가 만든 Python 웹 프레임워크이다.
“마이크로 프레임워크"라고 불리는 Flask는 핵심 기능만을 가볍게 유지하면서도 필요에 따라 확장할 수 있는 유연한 구조를 제공한다.
주요 개념
- 라우팅: URL과 함수를 연결하여 요청을 처리한다.
- 템플릿 엔진: Jinja2를 사용하여 동적 HTML 생성을 지원한다.
- WSGI: Web Server Gateway Interface를 통해 웹 서버와 애플리케이션 간 통신을 처리한다.
- 확장성: 다양한 확장 모듈을 통해 기능을 추가할 수 있다.
특징
- 간결성: 최소한의 코드로 웹 애플리케이션을 구현할 수 있다.
- 유연성: 프로젝트 구조나 데이터베이스 선택 등에 있어 개발자에게 많은 자유를 제공한다.
- 마이크로 프레임워크: 핵심 기능만 제공하여 가볍고 빠른 개발이 가능하다.
- 컨텍스트 기반 설계: request, session 등의 글로벌 객체를 컨텍스트를 통해 안전하게 관리한다.
- Python 기반: 파이썬의 강력한 생태계를 활용할 수 있다.
장점
- 학습 용이성: 간단한 구조로 초보자도 쉽게 배울 수 있다.
- 빠른 프로토타이핑: 간단한 프로젝트를 빠르게 구현할 수 있다.
- 높은 자유도: 개발자가 원하는 대로 구조를 설계할 수 있다.
- 확장성: 필요에 따라 다양한 확장 모듈을 추가할 수 있다.
단점
- 기능의 제한: Django에 비해 기본 제공 기능이 적다.
- 대규모 프로젝트 관리: 큰 프로젝트에서는 구조화에 추가 노력이 필요할 수 있다.
- 성능 최적화: 대규모 트래픽 처리 시 추가적인 최적화가 필요할 수 있다.
개발 특성
- 모듈화: 앱 단위로 프로젝트를 구성하여 모듈화된 개발이 가능하다.
- RESTful API 개발: API 서버 구축에 적합하다.
- 마이크로서비스: 독립적인 서비스 컴포넌트 개발에 유용하다.
성능과 기능
- 경량화: 최소한의 오버헤드로 빠른 응답 시간을 제공한다.
- 확장 가능한 성능: 적절한 최적화를 통해 높은 성능을 달성할 수 있다.
- 내장 개발 서버: 테스트와 개발을 위한 서버를 제공한다.
- 디버깅 지원: 개발 모드에서 상세한 오류 정보를 제공한다.
서버 구현 예제
이 예제는 간단한 Flask 애플리케이션을 생성하고 루트 URL에 접속 시 “Hello, World!“를 반환한다.
자주 사용되는 패키지
- Flask-SQLAlchemy: 데이터베이스 ORM
- Flask-WTF: 폼 처리
- Flask-RESTful: RESTful API 개발
- Flask-Login: 사용자 세션 관리
- Flask-Migrate: 데이터베이스 마이그레이션
- Flask-Caching: 캐싱 지원
- Flask-CORS: 크로스 오리진 리소스 공유
- Flask-Mail: 이메일 전송
- Flask-Admin: 관리자 인터페이스
- Flask-SocketIO: 웹소켓 지원