Post

프레임워크 - FastAPI에 대하여




FastAPI란?(Feat. ChatGPT)

파이썬 웹 프레임워크다. 높은 성능(빠른 속도), 빠른 개발, 직관적인 사용법과 같은 특징이 있다. 핵심 기능 중 하나는 비동기 처리, Pydantic 라이브러리를 통한 자동적인 데이터 검증, 자동 API 문서 생성과 같은 것이 있다.

Depends 데코레이터를 통해 의존성 주입(Dependency Injection)을 사용하여 애플리케이션 내 객체의 인스턴스화 및 재사용을 관리할 수 있다.

단점으로는 HTTP요청마다의 단일 인스턴스는 지원하지만 싱글턴 인스턴스는 지원하지 않는다고 한다. 그래서 싱글턴 클래스를 직접 생성하거나 다른 DI 라이브러리를 사용해야 할 수 있다고.

또 다른 문제는 요청 검증과 관련이 있는데, FastAPI는 Pydantic을 사용하여 요청 검증을 처리하지만, 유효성 검사 메시지를 유효성 검사 지점에서 응답으로 직접 전달하는 명확한 방법이 없다고 한다. Pydantic이 RequestValidationError를 통해 전달하는 메시지를 사용하거나 사용자 정의 검증기를 작성해야 하는데, 이러한 제한은 특히 대규모 프로젝트에서 많은 데이터 클래스를 사용하는 경우 효율적이지 않을 수 있다고 한다.

타 파이썬 웹 프레임워크와의 간단한 비교

Django(종합적인 기능 포함)

“배터리 포함(batteries-included)” 접근 방식과 관리자 패널과 같은 내장 기능을 통해 복잡한 애플리케이션의 빠른 개발을 가능하게 한다. 대규모 프로젝트와 복잡한 요구 사항에 적합하며, 모듈식 아키텍처 덕분에 효과적으로 확장할 수 있다.

반면 Django는 광범위한 기능 세트와 관례로 인해 초보자에게 학습 곡선이 가팔라질 수 있으며, 작고 간단한 프로젝트에는 불필요한 복잡성이 생길 수 있다.

빠른 개발과 보안이 중요한 대규모 웹 애플리케이션에 적합.

Flask(경량+확장)

Flask는 경량의 마이크로 웹 프레임워크로, 최소한의 오버헤드로 웹 애플리케이션을 구축할 수 있다. Flask는 간단하고 이해하기 쉬운 API와, 유연성을 제공하지만 더 복잡한 프로젝트에서는 개발자가 추가 계획과 구조를 직접 구현해야 할 수 있다.

간단하고 유연한 소규모 프로젝트에 적합.

FastAPI(고성능, 동시성)

웹 API의 단순화 및 가속화에 중점을 뒀으며 뛰어난 성능, 비동기 지원, 자동 API 문서 생성 등으로 인해 확장성이 높고 효율적인 웹 서비스 구축에 적합하다. 그러나 비동기 프로그래밍에 익숙하지 않은 개발자는 FastAPI의 비동기 기능에 적응하는 데 학습 곡선을 경험할 수 있다​​.

높은 성능과 비동기 처리가 필요한 API 중심의 프로젝트에 적합.

참고할만한 링크

https://fastapi.tiangolo.com/

https://livvjh.com/posts/develop/fastapi-beginner/

This post is licensed under CC BY 4.0 by the author.