일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 공간분석
- 딥러닝
- 예제소스
- 3유형
- K최근접이웃
- 성능
- 캐글
- 2유형
- 인공지능
- KNN
- QGIS설치
- Kaggle
- streamlit
- 빅데이터분석기사
- fastapi
- Ai
- 머신러닝
- ㅂ
- webserving
- CUDA
- gradio
- 공간시각화
- dl
- 1유형
- GPU
- ml 웹서빙
- 실기
- qgis
- pytorch
- DASH
- Today
- Total
에코프로.AI
[Python 모델 서빙] FastApi vs Flask vs Django 비교 본문

데이터 분석 결과를 웹으로 서빙할 때 FastAPI, Flask, Django는 각각 고유한 특징과 장단점을 가지고 있습니다. 이들을 비교해보겠습니다.
FastAPI
FastAPI는 현대적이고 빠른 (고성능) 웹 프레임워크로, Python 3.6+ 버전의 표준 타입 힌트에 기반하여 API를 구축하는 데 사용됩니다
- 장점
- 높은 성능: 비동기 처리를 지원하여 매우 빠른 속도를 제공합니다
- 자동 API 문서화: Swagger UI를 통해 API 문서를 자동으로 생성합니다
- 타입 힌팅: 코드의 가독성을 높이고 개발자 간 협업을 용이하게 합니다
- 간편한 데이터 검증: Pydantic을 사용하여 데이터 모델을 쉽게 정의하고 검증할 수 있습니다
- 단점
- 상대적으로 새로운 프레임워크로, 커뮤니티와 리소스가 다른 프레임워크에 비해 적을 수 있습니다
Flask
Flask는 간결하고 유연한 마이크로 웹 프레임워크입니다
- 장점
- 간단하고 직관적인 API로 빠른 개발이 가능합니다
- 유연성이 높아 개발자가 원하는 대로 구조를 설계할 수 있습니다
- 작은 프로젝트나 프로토타입 개발에 적합합니다
- 단점
- 대규모 프로젝트에서는 구조화에 추가적인 노력이 필요할 수 있습니다
- 기본적으로 제공되는 기능이 적어 추가 라이브러리 설치가 필요할 수 있습니다
Django
Django는 풀스택 웹 프레임워크로, 많은 기능을 기본적으로 제공합니다
- 장점
- 강력한 ORM을 제공하여 데이터베이스 작업을 쉽게 할 수 있습니다
- 관리자 인터페이스가 기본으로 제공되어 데이터 관리가 용이합니다
- 보안 기능이 내장되어 있어 안전한 웹 애플리케이션 개발이 가능합니다
- 단점
- 학습 곡선이 높을 수 있으며, 작은 프로젝트에는 과도할 수 있습니다
- 상대적으로 무거워 성능면에서 FastAPI나 Flask보다 떨어질 수 있습니다
1. 성능
- FastAPI
- ASGI 기반이며, Starlette와 Pydantic으로 구동됩니다.
- 비동기(Asynchronous)를 기본으로 하여 속도가 빠르고, 실시간 애플리케이션이나 마이크로서비스에 적합합니다.
- Flask
- 동기(Synchronous)를 기본으로 하는 WSGI 기반.
- 일반적인 웹 애플리케이션에는 적합하지만, 동시성이 필요한 작업에서는 성능이 떨어질 수 있습니다.
- Django
- 동기를 기본으로 하지만, 최근에는 ASGI를 지원합니다.
- 무거운 구조로 인해 API 중심 프로젝트에서는 성능이 FastAPI보다 떨어질 수 있습니다.
WSGI, ASGI 란???
WSGI(Web Server Gateway Interface)와 ASGI(Asynchronous Server Gateway Interface)는 파이썬 웹 애플리케이션과 웹 서버 간의 표준 인터페이스를 제공하는 프로토콜입니다.
WSGI는 2003년에 파이썬 표준으로 도입된 동기식 웹 서버 게이트웨이 인터페이스입니다.
ASGI는 WSGI의 후속작으로, 비동기 프로그래밍을 지원하기 위해 만들어졌습니다
Starlette,Pydantic 란?
Starlette는 경량 ASGI 프레임워크/툴킷으로, Python에서 비동기 웹 서비스를 구축하는 데 이상적입니다
Pydantic은 Python용 데이터 검증 및 설정 관리 라이브러리입니다
2. 개발 속도
- FastAPI
- Pydantic을 이용한 자동 데이터 검증 및 OpenAPI 스펙 지원 덕분에 API 개발에 최적화되어 있습니다.
- Django보다 보일러플레이트 코드(반복적인 코드)가 적습니다.
- Flask
- 가볍고 최소한의 기능만 제공하며, 필요한 기능은 직접 추가해야 합니다.
- 작은 프로젝트에서는 빠르게 개발이 가능하지만, 규모가 커질 경우 확장에 시간이 더 걸립니다.
- Django
- ORM, 인증, 관리자 페이지 등 필요한 기능이 기본으로 제공되므로 빠르게 복잡한 애플리케이션을 구축할 수 있습니다.
- 초기 설정은 시간이 더 걸릴 수 있습니다.
ORM?
ORM(Object-Relational Mapping)은 객체와 관계형 데이터베이스 사이의 매핑을 자동화하는 기술입니다
3. 사용 사례
- FastAPI
- API 및 마이크로서비스 구축에 적합.
- 머신러닝 모델 배포, 데이터 처리 파이프라인, 비동기 작업이 필요한 애플리케이션에 유리.
- Flask
- 웹 애플리케이션, API 또는 경량 서비스를 구축할 때 유용.
- 커스터마이징이 필요한 간단한 프로젝트에 적합.
- Django
- 대규모 데이터베이스 중심 웹 애플리케이션에 적합.
- 전자상거래, 콘텐츠 관리 시스템(CMS), 멀티 유저 플랫폼 등에 유리.
마이크로서비스 ?
소프트웨어 개발을 위한 아키텍처 접근 방식으로, 하나의 큰 애플리케이션을 작고 독립적인 서비스들의 모음으로 구성하는 방식입니다.
4. 학습 난이도
- FastAPI
- Python을 알고, 타입 힌트와 비동기 프로그래밍에 익숙하다면 배우기 쉬움.
- 명확하고 자세한 문서를 제공하여 초보자도 쉽게 접근 가능.
- Flask
- 간단하고 직관적인 구조로 초보자도 쉽게 배울 수 있음.
- 웹 개발 입문자에게 적합.
- Django
- 방대한 기능과 규칙적인 구조로 인해 학습 난이도가 다소 높음.
- 기본 제공 기능들을 제대로 활용하려면 시간을 투자해야 함.
5. 생태계와 확장성
- FastAPI
- 비교적 새로 등장했지만 빠르게 성장 중.
- SQLModel, Pydantic, 비동기 ORM 등 최신 라이브러리와 잘 통합됨.
- Flask
- 성숙한 생태계를 갖추고 있으며, 필요한 기능을 확장할 수 있는 다양한 확장 프로그램이 제공됨.
- ORM, 인증 등은 직접 추가해야 함.
- Django
- 가장 큰 Python 웹 개발 생태계 중 하나로, 대부분의 기능이 기본 제공되거나 서드파티 앱으로 지원됨.
- "배터리 포함(batteries-included)" 방식으로 외부 라이브러리 의존도를 줄여줌.
"배터리 포함(batteries-included)" 방식 ?
프트웨어 개발 철학 중 하나로, 프로그래밍 언어나 프레임워크가 기본적으로 많은 기능과 도구를 내장하고 있어 별도의 설치나 구성 없이 바로 사용할 수 있는 상태를 의미합니다.
6. 커뮤니티와 문서
- FastAPI
- 아직 커뮤니티 규모는 작지만 빠르게 성장 중.
- 훌륭한 문서를 제공.
- Flask
- 오래된 프레임워크로 커뮤니티가 크고, 관련 자료와 확장 프로그램이 풍부함.
- Django
- 가장 큰 커뮤니티 중 하나를 보유.
- 방대한 공식 문서와 튜토리얼, 서드파티 지원이 뛰어남.
7. 확장성과 규모
- FastAPI
- 비동기 작업을 기본으로 지원하므로 매우 확장성이 높음.
- 클라우드 기반 마이크로서비스 아키텍처에 적합.
- Flask
- 잘 확장할 수 있지만, 큰 프로젝트의 경우 설정 및 추가 작업이 필요.
- Django
- 대규모 단일 애플리케이션에는 적합하지만, 마이크로서비스 아키텍처로 확장하려면 최적화가 필요할 수 있음.
각 프레임워크의 추천 사용 시점
- FastAPI:
- 고성능 API나 비동기 작업이 필요한 프로젝트.
- 예: 머신러닝 API, 실시간 서비스, 경량 마이크로서비스.
- Flask:
- 작은 규모의 애플리케이션이나 커스터마이징이 중요한 프로젝트.
- 예: 프로토타이핑, 간단한 웹 애플리케이션.
- Django:
- 대규모 데이터베이스 중심 애플리케이션.
- 예: 전자상거래, 소셜 네트워크, 콘텐츠 관리 시스템.
결론
- FastAPI: 현대적인 Python 비동기 기능이 필요한 고성능 API 중심 프로젝트.
- Flask: 가볍고 유연한 애플리케이션을 빠르게 만들고 싶을 때.
- Django: 복잡하고 기능이 많은 대규모 웹 애플리케이션에 적합
공식사이트 및 튜토리얼
끝~

'AI Miscellany' 카테고리의 다른 글
Windows 작업표시줄 날짜/시간 visible 설정 (0) | 2024.12.27 |
---|---|
[재정데이터] 재정(財政) 데이터 란? (3) | 2024.11.25 |
[GitHub] GitHub를 사용한 webpage 호스팅 (Feat.resume) (2) | 2024.11.03 |
[데이터분석 협업] - 구글드라이버 & Jupyter & Colab(Feat.GitHub) (3) | 2024.10.10 |
[GitHub] GitHub으로 협업하기 (1) | 2024.09.28 |