5분 이내에 설명되는 FastAPI

웹 API 개발에 특화된 파이썬 프레임워크인 FastAPI는 최근 몇 년 동안 엄청난 인기를 얻고 있습니다.

API(애플리케이션 프로그래밍 인터페이스)는 현대적인 아키텍처의 핵심 구성 요소입니다. 이를 통해 애플리케이션을 모듈화하고 독립적으로 관리할 수 있습니다. 결과적으로 개발 속도가 빨라지고 유지보수가 용이해집니다.

만약 파이썬을 사용하여 웹 애플리케이션을 개발할 계획이라면, FastAPI를 배우는 것이 매우 유익할 것입니다. 이 글에서는 FastAPI의 기본적인 내용에 대해 자세히 알아보겠습니다.

FastAPI란 무엇인가?

FastAPI는 파이썬을 기반으로 하는 웹 프레임워크로, 최근 몇 년간 많은 관심을 받고 있습니다. 개발 구조는 파이썬 웹 개발 학습자들 사이에서 가장 인기 있었던 Flask와 유사합니다.

FastAPI는 사용하기 편리하며, 명확하고 이해하기 쉬운 설명서를 제공합니다. Microsoft, Netflix, Uber와 같은 대규모 기술 기업에서도 FastAPI를 사용하고 있습니다.

FastAPI는 API 빌더에서 기대할 수 있는 모든 기능을 갖추고 있지만, 그 이상도 가능합니다. 많은 사용자들이 알지 못하는 기능 중 하나는 역방향 WSGI를 마운트하는 데 사용할 수 있다는 점입니다.

FastAPI의 주요 목적은 이름에서 알 수 있듯이 API 엔드포인트를 구축하는 것입니다. 이는 파이썬 사전 데이터를 JSON으로 변환하거나 OpenAPI의 대화형 Swagger UI를 사용하는 것만큼 효율적으로 수행할 수 있습니다.

FastAPI는 API에만 국한되지 않습니다. Jinja2 템플릿 엔진을 사용하여 웹 페이지를 제공하는 것부터 WebSockets 기반 애플리케이션을 제공하는 것까지, 웹 프레임워크가 수행하는 거의 모든 작업에 활용할 수 있습니다.

FastAPI의 주요 장점은 다음과 같습니다.

  • FastAPI는 중첩된 JSON 쿼리를 다룰 때도 개발자가 데이터 유형을 명확하게 확인할 수 있도록 해줍니다.
  • 자동 완성 기능을 제공하여 짧은 시간 안에 더 적은 노력으로 애플리케이션을 개발할 수 있도록 돕습니다.
  • OpenAPI 및 JSON 스키마 어휘와 호환되어 JSON 문서의 유효성 검사 및 주석 추가를 지원합니다.
  • graphene-python 라이브러리를 활용하여 GraphQL API를 신속하게 구축할 수 있습니다.
  • OAuth 2.0 및 외부 공급자와의 호환성을 제공합니다.

반면, FastAPI의 단점은 다음과 같습니다.

  • FastAPI는 비교적 새로운 프레임워크이므로, 아직 활발한 커뮤니티와 풍부한 학습 자료(예: 책, 강좌, 튜토리얼)가 부족합니다.
  • FastAPI는 모든 구성 요소를 통합해야 하므로, 기본 파일이 커지거나 복잡해질 수 있습니다.

FastAPI의 차별화된 기능

FastAPI가 현재 가장 인기 있는 파이썬 웹 프레임워크 중 하나로 자리매김하게 된 데에는 다음과 같은 독특한 특징들이 있습니다.

  • 고성능: FastAPI는 다른 파이썬 프레임워크에 비해 뛰어난 성능을 자랑합니다. Starlette의 기능을 활용하고, API 생성 및 코드 준비 과정을 효율화하여 더 빠른 속도와 향상된 성능을 제공합니다.
  • 빠른 코딩: 개발자는 생산 준비가 된 코드를 직접 생성할 필요가 없습니다. FastAPI는 Starlette 위에서 작동하며 데이터 유효성 검증 및 직렬화를 위한 다양한 기능을 제공합니다. 필요한 구성 요소가 이미 내장되어 있어 코딩 시간을 단축할 수 있습니다.
  • 최소 버그: 자동 완성 기능은 코드 조각을 자동으로 삽입하여 오류 가능성을 최소화하고 출력 품질을 향상시킵니다.
  • 쉬운 이해: FastAPI는 현대 파이썬만을 사용합니다. 파이썬 3.6의 수정된 버전을 기반으로 하며 새로운 구문을 포함하지 않아, 파이썬에 대한 기본적인 이해만 있다면 누구나 쉽게 사용할 수 있습니다.
  • 최소한의 노력: FastAPI는 개발자의 최소한의 노력으로 OpenAPI 문서를 자동으로 생성합니다. 생성된 문서는 애플리케이션의 /doc 디렉토리에서 찾을 수 있으며, API 엔드포인트, 반환 코드, 응답 매개변수 등 다양한 정보를 자세하게 제공합니다.
  • 편집기 지원: 자동 완성을 염두에 두고 설계되어 개발자가 준비된 코드를 빠르게 생성할 수 있도록 돕습니다. 또한 대화형 문서를 통해 브라우저에서 바로 코드를 테스트할 수 있습니다.
  • 개방형 표준: FastAPI는 OpenAPI와 호환되어 API 생성을 위한 강력한 기반을 제공합니다.

FastAPI 설치

다음은 리눅스 또는 윈도우에 FastAPI를 설치하는 간단한 단계입니다.

#1. 리눅스에 FastAPI 설치

아래 명령어를 사용하여 리눅스에 파이썬 3를 설치합니다.

sudo apt install python3

다음으로, 아래 명령어를 사용하여 pip를 설치합니다.

sudo apt install python3-pip

이제 FastAPI를 설치합니다.

pip install fastapi

ASGI 서버도 필요하므로, pip를 사용하여 uvicorn을 설치합니다.

pip install "uvicorn[standard]"

#2. 윈도우에 FastAPI 설치

마이크로소프트 스토어를 사용하여 윈도우에 파이썬 3를 설치합니다. pip도 함께 설치됩니다.

이제 FastAPI를 설치합니다.

pip install fastapi

마지막으로 ASGI 서버 uvicorn을 설치합니다.

pip install "uvicorn[standard]"

FastAPI의 새로운 활용 분야

다음은 FastAPI의 새로운 활용 사례입니다.

자동화된 문서

API 유형 및 엔드포인트에 대한 문서는 필수적입니다. FastAPI는 OpenAPI, Swagger UI 및 ReDoc을 사용하여 이 문제를 자동으로 해결합니다. 이러한 도구들을 별도로 설정할 필요 없이 코드에만 집중할 수 있도록 해줍니다.

형식이 있는 파이썬

FastAPI는 파이썬 3.6의 타입 선언(Pydantic을 통해)을 활용합니다. 이는 변수의 유형을 명시할 수 있는 파이썬 기능을 사용하여 탁월한 편집기 지원과 자동 완성 기능을 제공합니다.

유효성 검증

Pydantic은 유효성 검증 기능을 프레임워크에 통합했습니다. 표준 파이썬 타입과 사용자 정의 필드에 대한 유효성 검사를 수행할 수 있습니다.

보안 및 인증

보안 및 인증은 모든 API의 중요한 부분입니다. FastAPI는 HTTP 기본 인증, OAuth2 토큰(JWT 토큰), 헤더 API 키를 지원하여 반복되는 코드를 최소화합니다.

비동기 특성

FastAPI는 기본적으로 비동기 엔드포인트를 지원하여 코드를 더 간단하고 효율적으로 만듭니다. 이는 Flask에 비해 큰 장점입니다.

FastAPI와 Flask: 주요 차이점

사용법 차이

FastAPI는 API 구축에 필요한 모든 기능을 제공하는 풀스택 플랫폼입니다. 반면, Flask는 마이크로 프레임워크로 FastAPI만큼 많은 기능을 제공하지 않습니다. Flask는 아이디어의 프로토타입을 만들거나 간단한 웹 애플리케이션을 빠르게 개발해야 할 때 유용합니다.

Flask와 FastAPI는 사용 방식이 다릅니다. Flask는 새로운 아이디어를 테스트하거나 애플리케이션 프로토타입을 만드는 데 적합하며, FastAPI는 API 구축에 최적화되어 있습니다. 특히 코딩 지식 없이도 백엔드 서버를 빠르게 구축할 수 있다는 장점이 있습니다.

소규모 웹사이트 및 웹 애플리케이션

FastAPI는 사용하기 쉽고 가벼우며 소규모 웹 및 애플리케이션 개발에 적합합니다. 데이터베이스와의 상호작용을 단순화하는 ORM(객체 관계 매핑) 계층을 내장하고 있어 코드를 통해 데이터에 빠르게 접근할 수 있습니다.

ORM 계층은 데이터베이스를 관리하고, 웹사이트나 애플리케이션에서 새로운 정보가 추가, 수정, 삭제될 때 데이터베이스를 수동으로 업데이트하는 번거로움을 줄여줍니다.

WSGI 대 ASGI

Flask는 WSGI를 사용하는 반면, FastAPI는 ASGI를 사용합니다. WSGI는 요청을 동기적으로 처리합니다. 요청은 순차적으로 처리되며, 이전 요청이 완료될 때까지 다음 요청을 시작할 수 없습니다.

ASGI는 요청을 비동기적으로 처리합니다. 따라서 각 작업은 다른 작업을 기다릴 필요 없이 독립적으로 완료될 수 있습니다.

커뮤니티

Flask는 FastAPI보다 먼저 등장했기 때문에 더 큰 커뮤니티를 가지고 있습니다. 이는 Flask에 대한 문서와 외부 지원이 더 풍부하다는 것을 의미합니다.

FastAPI는 비교적 새로운 프로젝트이므로, 커뮤니티가 아직 충분히 성장하지 않았습니다. 따라서 공식 문서 외에는 외부 지원이 부족할 수 있습니다.

다음은 FastAPI와 Flask의 주요 차이점을 요약한 표입니다.

FastAPI Flask
데이터 유효성 검사 내장 지원 지원 없음
비동기 작업 지원 사용 가능 사용 불가능
표준 ASGI WSGI
자동 문서 지원 지원 수동 지원
오류 메시지 형식 JSON 형식 HTML 페이지
커뮤니티 지원 소규모 풍부한 커뮤니티

FastAPI 또는 Flask: 무엇을 선택해야 할까요?

FastAPI와 Flask 모두 파이썬 웹 서버 및 데이터 과학 애플리케이션을 빠르게 설정할 수 있도록 해줍니다. 둘 다 배포에 동일한 수준의 노력이 필요하지만, 어떤 프레임워크가 당신의 프로젝트에 가장 적합할까요?

FastAPI는 속도와 성능이 가장 중요할 때 최고의 선택입니다. CDN을 구축하거나 많은 트래픽이 예상되는 경우에 특히 유용합니다. FastAPI는 프레임워크 다운로드 즉시 바로 사용할 수 있으며, 프로젝트 템플릿은 개발 시간을 단축하는 데 도움을 줍니다.

API를 구축하는 경우 FastAPI는 Flask보다 더 나은 옵션이 될 수 있습니다. 특히 마이크로서비스를 고려할 때는 더욱 그렇습니다. Flask는 기존에 Flask 기반으로 구축된 많은 도구가 있는 경우에 적합합니다.

결론

FastAPI는 뛰어난 속도와 성능을 제공하며, CDN을 구축하거나 트래픽이 많은 웹 서비스를 개발할 때 매우 적합합니다. FastAPI의 혁신적인 프레임워크와 프로젝트 템플릿은 개발 시간을 크게 단축시켜 줍니다.

Flask는 API, 특히 마이크로서비스를 구축하는 데 더 나은 선택이 될 수 있습니다. 하지만 FastAPI도 Flask보다 뛰어난 성능을 제공합니다. 이미 Flask를 광범위하게 사용하고 있다면 Flask를 계속 사용하는 것도 나쁘지 않은 선택입니다.

API 개발에 적합한 인기있는 파이썬 프레임워크를 계속해서 탐색해 보시는 것도 좋습니다.