웹 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 개발에 적합한 인기있는 파이썬 프레임워크를 계속해서 탐색해 보시는 것도 좋습니다.