{{ bookSummary.author }} 지음 {{ bookSummary.publishingCompany }} | {{ bookSummary.date }}
{{ bookSummary.bookType }}
한빛미디어
2024-07-01
by 빌 루바노빅
3
636
세바스티안 라미레즈Sebastián Ramírez가 2018년에 발표한 모던 파이썬 웹 프레임워크, FastAPI는 Flask (플라스크)와 Django (장고)를 따라 빠르게 성장했다. 깃허브 스타 수를 기준으로 보면, 2023년 말에 FastAPI가 Flask를 앞지르면서 두 번째로 인기가 많은 파이썬 웹 프레임워크가 됐다.
이러한 FastAPI의 급격한 성장과 인기 상승을 고려할 때, 기존 Flask나 Django 사용자들이 FastAPI에 관심을 가지는 것은 당연한 일이다. 이에 이번 글에서는 Flask나 Django 같은 인기 있는 파이썬 웹 프레임워크를 사용한 경험이 있는 개발자를 위해 FastAPI의 유사점과 차이점을 짚어보고자 한다. 애플리케이션을 Flask나 Django에서 FastAPI로 마이그레이션할 계획이 있거나, 마이그레이션에 대해 궁금한 점이 있을 때 보다 유용할 것이다.
Flask는 마이크로프레임워크microframework라고 자처한다. 이 프레임워크는 기본 뼈대를 제공하고 필요에 따라 서드파티 패키지를 다운로드해 보완한다. Django보다 덩치가 작으며, 처음 시작할 때 더 빨리 배울 수 있다. Flask는 ASGI가 아닌 WSGI를 기반으로 하는 동기식 프레임워크다. 다만 Quart쿼트라는 새로운 프로젝트가 Flask의 자리를 대신하며 ASGI 지원을 추가하고 있다. Flask와 FastAPI가 웹 라우팅을 어떻게 정의하는지 맨 위부터 살펴본다.
1) 경로
Flask와 FastAPI는 모두 최상위 수준에서 데코레이터를 사용해 경로를 웹 엔드포인트와 연결한다.
기본적으로 FastAPI는 f"Hello? {who}?" 같은 문자열을 JSON으로 변환해 웹 클라이언트에 반환한다. 반면 Flask의 jsonify() 함수는 인수를 JSON 문자열로 변환해 반환하고, 그 문자열이 JSON임을 나타내는 HTTP 응답 헤더와 함께 반환한다.
딕셔너리(다른 데이터 타입은 제외)를 반환하는 경우, 최신 버전의 Flask는 자동으로 JSON으로 변환해 반환한다. jsonify()를 호출하면 딕셔너리를 포함한 모든 데이터 유형에 대해 명시적으로 작동한다.
2) 쿼리 매개변수
아래 예시를 통해 FastAPI 쿼리 매개변수는 who를 쿼리 매개변수 (URL에서 ? 뒤 문자열)로 전달하고, Flask는 request 객체에서 요청 값을 가져오는 것을 확인할 수 있다. 이 경우, args는 쿼리 매개변수가 포함된 딕셔너리를 생성한다.
3) 본문
Flask는 쿼리 매개변수를 JSON 형태로 입력받아 request.json에 저장한다.
4) 헤더
쿼리 매개변수와 마찬가지로, Flask는 request 객체에 요청 데이터를 보관한다. 이번에는 headers dict 속성이다. 헤더 키는 대소문자를 구분하지 않아야 한다.
Django는 Flask나 FastAPI보다 더 크고 복잡하며, ‘마감 기한이 있는 완벽주의자’를 타깃으로 한다. 내장된 객체 관계형 매퍼 object-relational mapper (ORM)는 주요 데이터베이스를 백엔드로 사용하는 웹사이트에 유용하다. 이 프레임워크는 툴킷보다는 모놀리스에 가깝다. 마이크로프레임워크에 복잡성이 추가될지와 학습 곡선이 적정한지 여부는 애플리케이션 요구사항에 따라 다르다.
Django는 전통적인 WSGI 애플리케이션이었지만, 버전 3.0에서 ASGI에 대한 지원이 추가됐다. Flask 및 FastAPI와 달리, Django는 데코레이터를 사용하지 않고 단일 URLConf 테이블에서 (URL을 뷰 함수view functions라는 웹 함수와 연결하는) 경로를 정의하기를 선호한다. 이 경우 모든 경로를 한 곳에서 쉽게 볼 수 있지만, 함수만 볼 때는 어떤 URL이 함수와 연결됐는지 확인하기가 더 어려워진다.
FastAPI는 여느 웹 프레임워크처럼 웹 애플리케이션의 구축을 돕는다. 모든 프레임워크가 기능, 생략, 기본값을 통해 일부 작업을 더 쉽게 수행할 수 있도록 설계된다. 이름에서 나타나듯 FastAPI는 웹 API 개발을 목표로 하지만 기존 웹 콘텐츠 애플리케이션에도 사용할 수 있다. FastAPI 웹사이트에서는 FastAPI의 장점을 다음과 같이 설명한다.
다음은 FastAPI가 주로 사용하는 기능이다.
FastAPI는 위 기능을 조합해 웹 애플리케이션, 특히 RESTful 웹 서비스를 위한 쾌적한 개발 환경을 제공한다.
프레임워크
장점
단점
세 프레임워크는 모두 기본적인 웹 서버 작업을 처리하지만 학습 곡선이 다르다. FastAPI의 경우, Django나 Flask보다 경로를 지정하는 구문이 더 깔끔하고, ASGI를 지원하므로 타 웹 프레임워크보다 더 빠르게 실행할 수 있는 장점이 있다.
위 콘텐츠는 『처음 시작하는 FastAPI』에서 내용을 발췌하여 작성하였습니다.
이전 글 : 비트코인의 3가지 핵심 개념 : 공개 장부, 암호화 알고리즘, 분산 네트워크
다음 글 : Redis(레디스), 고성능 인메모리 데이터 저장소의 특징과 활용
최신 콘텐츠
인기 콘텐츠