TOP
class="layout-aside-left paging-number">
본문 바로가기
[파이썬 Projects]/<파이썬 웹개발>

[파이썬] Fast API란?

by 기록자_Recordian 2024. 8. 15.
728x90
반응형
FastAPI 소개


최근 몇 년간 웹 애플리케이션을 개발하는 데 있어 파이썬 생태계가 더욱 풍부해졌다. 그중에서도 FastAPI는 간결하고 효율적인 웹 애플리케이션을 만들 수 있는 프레임워크로, 많은 개발자들의 사랑을 받고 있다. 

출처: FastAPI 홈페이지

 

FastAPI는 현대적인 웹 개발에 필요한 모든 것을 제공하는 프레임워크이다. 간결한 문법, 뛰어난 성능, 자동 문서화 등의 강점을 통해, 웹 애플리케이션 개발을 한 단계 발전시킬 수 있다.


FastAPI 란?


FastAPI는 파이썬 기반의 현대적인 웹 프레임워크로, 빠른 개발과 뛰어난 성능을 목표로 만들어졌다. Starlette와 Pydantic을 기반으로 하여 개발되었으며, 다음과 같은 주요 특징을 가지고 있다.

  • 빠른 성능: FastAPI는 Python의 비동기 기능을 활용하여 높은 성능을 제공한다. 이는 Node.js와 같은 수준의 성능을 발휘할 수 있다.
  • 자동화된 문서화: API 문서화를 자동으로 생성해주기 때문에, 개발자들은 Swagger UI와 Redoc을 통해 쉽게 API를 테스트하고 이해할 수 있다.
  • 타입 힌트 지원: 파이썬의 타입 힌트를 적극 활용하여 코드의 가독성과 유지 보수성을 높였다.
  • 간단한 사용법: 선언적인 방식으로 API를 정의할 수 있어, 개발 속도가 매우 빠르다.

FastAPI 공식 홈페이지에서 소개하는 주요 특징에는,

https://fastapi.tiangolo.com/

 

FastAPI - FastAPI

FastAPI framework, high performance, easy to learn, fast to code, ready for production

fastapi.tiangolo.com

  • 빠름: (Starlette과 Pydantic 덕분에) NodeJS 및 Go와 대등할 정도로 매우 높은 성능. 사용 가능한 가장 빠른 파이썬 프레임워크 중 하나.
  • 빠른 코드 작성: 약 200%에서 300%까지 기능 개발 속도 증가.
  • 적은 버그: 사람(개발자)에 의한 에러 약 40% 감소.
  • 직관적: 훌륭한 편집기 지원. 모든 곳에서 자동완성. 적은 디버깅 시간.
  • 쉬움: 쉽게 사용하고 배우도록 설계. 적은 문서 읽기 시간.
  • 짧음: 코드 중복 최소화. 각 매개변수 선언의 여러 기능. 적은 버그.
  • 견고함: 준비된 프로덕션 용 코드를 얻으십시오. 자동 대화형 문서와 함께.
  • 표준 기반: API에 대한 (완전히 호환되는) 개방형 표준 기반

FastAPI 장점
  • 고성능: 비동기 프로그래밍을 지원하여 높은 처리량과 낮은 대기 시간을 제공한다.
  • 사용자 친화적: 간단한 문법과 자동화된 문서화로 인해 초보자도 쉽게 접근할 수 있다.
  • 타입 안정성: Pydantic과 타입 힌트를 통해 데이터의 유효성을 보장한다.
  • 확장성: 다양한 기능을 플러그인 형태로 추가할 수 있어 확장성이 높다.

RESTful API를 쉽게 구축할 수 있도록 돕는다.

RESTful API는 웹 서비스에서 클라이언트와 서버 간에 데이터를 교환하는 데 사용하는 일반적인 방식이다.

FastAPI는 이러한 API를 구축할 때 필요한 많은 기본 설정과 보일러플레이트 코드를 줄여준다.

 

보일러플레이트 코드(boilerplate code): 애플리케이션의 동작과 관련 없이 반복되어 작성되어야 하는 코드 조각들. 대부분의 프로그래밍 작업에서 일반적으로 필요한 기본적인 설정이나 준비 작업을 수행하기 위해 사용 된다.


Fast API와 Flask의 차이

 

1) 설계 및 성능

FastAPI
: FastAPI는 비동기 프로그래밍을 지원하여 더 빠른 성능을 제공한다. 이는 특히 동시성이 높은 애플리케이션에서 유리하다. FastAPI는 내부적으로 Starlette (비동기 웹 프레임워크)와 Pydantic (데이터 검증 및 설정 관리 라이브러리)를 사용한다.

 

Flask
: Flask는 동기 프로그래밍 모델을 사용하며, 웹서버 게이트웨이 인터페이스(WSGI)를 기반으로 한다. 이 때문에 FastAPI보다는 일반적으로 성능이 낮다. Flask는 간단하고 가볍다. 확장 가능한 구조를 가지고 있어 필요에 따라 추가 기능을 플러그인 형태로 쉽게 추가할 수 있다.


2) 데이터 검증 및 직렬화

FastAPI
: Python의 타입 힌트와 Pydantic을 사용하여 데이터 검증과 직렬화를 자동화한다. 이로 인해 개발자는 타입 안전성을 보장하고 버그를 줄일 수 있다.

 

Flask
: 데이터 검증과 직렬화는 Flask에서 기본적으로 제공되지 않는다. Flask에서 이러한 기능을 구현하려면 마샬링 라이브러리나 다른 확장 기능을 사용해야 한다.


3) 자동 문서 생성

FastAPI
: OpenAPI 표준을 기반으로 자동 API 문서를 생성한다. 이는 API 개발 및 테스트를 쉽게 해주며, Swagger UI와 ReDoc을 통해 문서를 제공한다.

Flask
: Flask 자체에는 자동 문서 생성 기능이 없다. 이를 위해서는 Swagger와 같은 별도의 확장 도구를 사용해야 한다.

4) 비동기 프로그래밍 지원

FastAPI
: FastAPI는 Python의 async와 await를 사용한 비동기 프로그래밍을 기본적으로 지원한다. 이는 특히 I/O 바운드 작업에 유리하다.

 

Flask
: 기본적으로 Flask는 비동기 프로그래밍을 지원하지 않는다. Flask에서 비동기를 사용하려면 추가적인 작업과 확장이 필요하다.

 

5) 사용 케이스 및 학습 곡선

FastAPI
: FastAPI는 성능이 중요하고, 타입 안전성 및 자동 문서화가 필요한 복잡한 애플리케이션에 적합하다. 타입 힌트와 비동기 코드에 익숙하지 않은 경우 학습 곡선이 조금 높을 수 있다.

 

Flask
: Flask는 간단하고 가벼운 애플리케이션 또는 프로토타입 개발에 적합하다. 입문자에게 친숙하며, 확장성과 유연성으로 인해 다양한 프로젝트에 적용할 수 있다.

 

▶ 플라스크는 간단하고 직관적이어서 많은 개발자에게 사랑받지만, 기본적으로 '동기(sync)' 처리를 기반으로 하고 있다. 동기 처리는 한 번에 하나의 작업만 처리할 수 있어서 I/O 바운드 작업이 많은 애플리케이션에서는 FastAPI가 제공하는 비동기 처리 방식이 더 효율적일 수 있다.


종합하면, FastAPI는 비동기 처리를 강력하게 지원하며 빠르고 효율적인 API 개발을 위한 현대적인 기능들을 제공하는 파이썬 웹 프레임워크이다.

 

FastAPI를 사용하려면 파이썬 3.6 이상의 버전이 필요하며,

다른 파이썬 라이브러리와 마찬가지로 터미널에서 다음 명령어로 간단히 수행할 수 있다.

pip install fastapi==0.104.1

[출처: FastAPI 홈페이지, mingming_eee.log 블로그, 가장 빠른 풀스택을 위한 플라스크 & FastAPI]

728x90
반응형