Flask (플라스크)
Flask 프레임워크란?
웹 개발에 특정 라이브러리나 도구가 필요하지 않는 마이크로 프레임워크이다.
쉽고 빠른 방법으로 더 낮은 기능을 가진 경량 애플리케이션을 개발하는 것이다.
Flask 장점
- 단순하고 간단하게 일부를 쉽게 안전하게 변경할 수 있다.
- 대규모 네트워크에 배포할 수 있는 모듈 식의 응용 프로그램이나 서버를 만들 수 있다.
- 파이썬을 잘 이해하면 쉽게 응용 프로그램을 개발할 수 있다.
- 확장성이 뛰어나다.
Flask 단점
- 표준화 되어 있지 않기 때문에 Django 등의 프레임워크 전환이 어려울 수 있다.
- 개발 확장과 배포를 위해서 라이브러리 및 확장을 많이 검색해봐야 한다.
FastAPI
FastAPI is a mordern, fast(high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints.
- 특징
- Starlette 프레임워크를 기반으로 비동기 API 서버를 지원
- Pydantic 라이브러리와의 호환으로 데이터 검증 지원
- OpenAPI 지원을 통해 자동 스웨거 생성 가능
- 성능적인 측면에서는 Node와 Go에 필적할만한 수준
FastAPI 프레임워크란?
python 3.6+ 버전으로 API를 빌드하는데 도움이 되는 현대적인 프레임워크이다.
가장 빠른 파이썬 프레임워크 중 하나로 간주된다.
개발자가 유발하는 버그가 적고 빠르게 개발할 수 있다.
- 빠른 개발
- 버그 감소
- 높고 빠른 성능
FastAPI 특징
- API 문서 자동 생성 (Swagger와 ReDoc 스타일 동일)
- 의존성 주입 위주의 설계를 통한 DB 등에 대한 관리 편리
- 비동기 동작으로 빠른 성능 보장
- Pydantic을 사용한 Validation 체크
- 뛰어난 공식 문서 가이드
FastAPI 장점
- 웹 서버 WSGI (Web Server Gateway Interface) 및 비동기 ASGI (Asynchronous Server Gateway Interface)을 완벽하게 지원함
- OpenAPI, JSON 스키마 등의 제공
- graphene-python이라는 Python 라이브러리로 GraphQL API를 쉽게 구축 가능함
- Oauth 2.0 및 외부 공급자와 잘 통합된다.
- 더 적은 노력과 디버깅 시간으로 애플리케이션을 생성하는 데 도움이 되는 자동 완성 기능을 제공
- 중첩된 JSON 요청에도 개발자의 데이터 유형을 검증하는 도움이 됨
FastAPI 단점
- FastAPI는 새로운 프로임워크라서 커뮤니티 등의 교육 정보가 매우 적다.
- 응용 프로그램을 개발할 때 FastAPI 응용 프로그램에서 모든 것을 같이 패키징 해야 하기 때문에 기본 파일이 매우 길거나 복잡해질 수 있다.
Django (장고)
Django 프레임워크란?
- Django는 무료 오픈 소스인 python 웹 프레임워크이다.
- Adrian Holovaty와 Simon Willison이 2003년에 만들어졌다.
- Django 주요 목표 중 하나가 복잡한 데이터베이스 기반의 웹 사이트를 개발할 수 있도록 하는 것
- 적은 코드, 낮은 결합 및 재사용성, 연결 가능성 등 빠른 개발에 도움이 됨
Django 장점
- MVC (모델-뷰-컨트롤러) 아키텍처를 활용한 데이터 베이스 접근 용이성
- ORM (객체 관계형 맵핑), 관계형 데이터베이스, 웹 템플릿, URL 디스패처 등의 여러 가지 구성
- Django의 contib 패키지를 활용하여 여러 애플리케이션을 번들로 묶어 재사용 가능하게 함
- CSRF (사이트간 요청 위조), 사이트 간 스크립팅, SQL Injection 등의 보안 모듈 제공
- 구글 사이트맵, GIS 애플리케이션 생성하는 도구
- 강력한 API 제공하며 인증 및 권한 규칙 기능을 제공
Django 단점
- Django 프레임워크의 규칙이 별도로 존재하지 않는다.
- 소규모 프로젝트에는 적합하지 않다.
- 단일 패키지로 간주해야 하는 모놀리식 아키텍처이다.
- 많은 기능과 구성으로 인해 빠른 학습이 어렵다.
- 개별 프로세스에 대한 요청은 Django 개발 프로세스를 느리게 할 수 있다.
생산적인 측면
Flask에서의 Swagger
FastAPI에서는 별도의 스웨거 파일 정의 없이 자동으로 생성.
요청과 응답 부분에 pydantic 모델을 사용하며 배포시 자동으로 json 형태 변환되어 스웨거의 요청과 응답 모델에 자동으로 매핑
→ 의사소통 비용 절감을 가져다 줌.
→ 개발자가 문서를 따로 신경 쓰지 않아도 되기에 생산성을 높일 수 있다.
비동기적인 측면
Flask는 프로세스를 동기적(Synchronous)으로 처리하기 때문에 업로드된 데이터 처리 또는 이메일 전송과 같이 다소 오래 걸리는 작업이나 무거운 연산 같은 경우 사용자는 웹 서버의 처리가 모두 마무리될 때까지 기다려야 한다.
Asyncio FastAPI는 python 3.4부터 추가된 asyncio를 이용하여 비동기 프로그래밍이 가능하다. I/O 작업을 많은 코드 수정 없이 쉽게 비동기로 처리할 수 있으며 속도 또한 uvicorn에 uvloop를 사용 시 gevent 보다 월등히 빠르다.
💡 uvicorn ?
uvicorn은 async/await을 기반한 비동기 프로그래밍 지원, 퍼포먼스가 가장 좋다고 알려진 ASGI이다.
본 페이지 내, 실행 결과에 대해 확인하기 위한 용도로 설치
- Flask
- 짧은 기간 안에 완벽하게 작동하는 간단한 서비스를 만들고 싶다
- 파이썬 백엔드 프레임워크를 입문한지 얼마 되지 않아 웹 구조를 파악하며 개발하고 싶다
- FastAPI
- 비동기 처리를 이용하여 빠른 서비스를 구현하고 발전 가능성을 보고 있다
- 내 웹사이트와 서비스가 느리게 동작하는 것을 도저히 내 눈으로 볼 수 없다
- 대용량 트래픽을 관리해야 하는 프로젝트를 진행하려 한다
Django vs Flask vs FastAPI 비교
패키지
Django 라이브러리에는 전체 스택 웹 개발 프레임워크로 간주될 수 있는 2500개 이상의 패키지가 있다.
Flask < FastAPI < Django 순이다.
커뮤니티
Django 프레임워크는 다양한 용도로 사용되기 때문에 Flask, FastAPI 보다 먼저 출시되어 가장 많은 커뮤니티를 보유하고 있다.
Flask도 여러 교육 정보가 있으며 FastAPI가 최신 프레임워크로 외부 정보 수가 매우 적다.
FastAPI < Flask < Django 순이다.
성능
FastAPI는 고성능에 중점을 두고 있기 때문에 모든 프레임워크 중에서 가장 빠른 프레임워크이다.
Flask는 마이크로 프레임워크 기능으로 Django 보다는 더 높은 성능을 제공한다.
Djagno < Flask < FastAPI 순이다.
유연성
업데이트 변경 사항이 필요할 경우 응용 프로그램 일부를 변경할 수 있는데 Flask가 거의 모든 부분에서 지원하고 있으므로 가장 유연하다고 볼 수 있다.
Djagno < FastAPI < Flask 순이다.
참고 블로그
'CS' 카테고리의 다른 글
[CS] 캐시가 뭘까요 (0) | 2023.06.14 |
---|