FastAPI는 최신 웹 프레임워크로, Python으로 작성된 API를 만드는 데 매우 효율적입니다. 이 강좌에서는 FastAPI를 사용하여 기본적인 백엔드 서버를 개발하고 Google Cloud Platform(GCP)에 배포하는 과정을 단계별로 안내할 것입니다.
1. FastAPI란?
FastAPI는 Python으로 작성된 비동기 웹 프레임워크로, RESTful API를 쉽게 제작할 수 있게 해줍니다. FastAPI의 주요 특징은 높은 성능, 쉬운 사용법, 자동화된 문서화 기능입니다. Starlette를 기반으로 하며, Pydantic을 사용하여 데이터 검증과 직렬화를 지원합니다.
1.1 FastAPI의 주요 기능
- 비동기 지원: FastAPI는 비동기 프로그래밍을 지원하여 높은 성능을 제공합니다.
- 자동 문서화: OpenAPI를 기반으로 한 자동 API 문서화 기능을 제공합니다.
- 유효성 검사: Pydantic을 이용하여 데이터 유효성 검사와 직렬화를 간편하게 처리할 수 있습니다.
- 경량화: 기본적인 사용법이 간단하여 작은 규모의 애플리케이션부터 대규모 서비스까지 적합합니다.
2. FastAPI 서버 개발하기
이번 섹션에서는 FastAPI를 이용하여 간단한 REST API 서버를 구축해 보겠습니다. 예제를 통해 FastAPI의 기본적인 사용법을 익힐 수 있습니다.
2.1 FastAPI 설치하기
FastAPI와 Uvicorn(ASGI 서버)을 설치하기 위해 다음 명령어를 사용합니다:
pip install fastapi uvicorn
2.2 간단한 API 예제
다음은 기본적인 FastAPI 서버 코드입니다. 이 코드는 간단한 GET 및 POST 요청을 처리하는 API를 정의하고 있습니다.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
# 데이터 모델 정의
class Item(BaseModel):
name: str
price: float
is_offer: bool = None
# GET 요청 처리
@app.get("/")
def read_root():
return {"Hello": "World"}
# POST 요청 처리
@app.post("/items/")
def create_item(item: Item):
return {"item": item}
위 코드는 FastAPI를 사용하여 기본적인 API를 설정하는 방법을 보여줍니다. Item
이라는 데이터 모델을 만들고, GET 요청과 POST 요청을 처리하는 두 개의 엔드포인트를 설정했습니다.
2.3 서버 실행하기
다음 명령어를 사용하여 FastAPI 서버를 실행할 수 있습니다:
uvicorn main:app --reload
서버가 시작되면 http://localhost:8000/docs에서 자동 생성된 API 문서를 확인할 수 있습니다.
3. Google Cloud Platform에 배포하기
이제 FastAPI 서버를 GCP에 배포하는 방법을 알아보겠습니다. GCP의 Cloud Run 서비스를 사용하면 컨테이너화된 애플리케이션을 간편하게 배포할 수 있습니다.
3.1 GCP 프로젝트 생성
GCP에 접속하여 새로운 프로젝트를 생성합니다. 다음 단계로 진행하기 전에 GCP에서 결제 계정을 설정해야 할 수도 있습니다.
3.2 Dockerfile 작성하기
FastAPI 애플리케이션을 컨테이너화하기 위해 Dockerfile
을 작성합니다. 다음은 간단한 Dockerfile 예제입니다:
# 베이스 이미지 선택
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8
# 애플리케이션 디렉토리 설정
WORKDIR /app
# requirements.txt 복사
COPY requirements.txt .
# 의존성 설치
RUN pip install --no-cache-dir -r requirements.txt
# 애플리케이션 코드 복사
COPY . .
# 애플리케이션 실행
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]
3.3 requirements.txt 파일 작성
requirements.txt
파일은 다음과 같이 작성합니다:
fastapi
uvicorn
pydantic
3.4 Docker 이미지 빌드하기
Docker 이미지를 빌드하기 위해 다음 명령어를 실행합니다:
docker build -t my-fastapi-app .
3.5 GCP에 Docker 이미지 푸시
GCP의 Container Registry에 Docker 이미지를 푸시해야 합니다. 먼저 GCP에 로그인한 후, 다음 명령어를 실행하여 이미지 푸시를 진행합니다:
# GCP에 로그인
gcloud auth configure-docker
# 이미지 태깅
docker tag my-fastapi-app gcr.io/[PROJECT_ID]/my-fastapi-app
# 이미지 푸시
docker push gcr.io/[PROJECT_ID]/my-fastapi-app
3.6 Cloud Run에 배포하기
이제 Cloud Run을 통해 애플리케이션을 배포합니다. 다음 명령어를 사용하여 GCP Cloud Run에 배포합니다:
gcloud run deploy my-fastapi-app --image gcr.io/[PROJECT_ID]/my-fastapi-app --platform managed
배포가 완료되면 URL이 제공됩니다. 제공된 URL을 통해 FastAPI 애플리케이션에 접근할 수 있습니다.
4. 결론
이번 강좌에서는 FastAPI를 이용하여 기본적인 REST API 서버를 개발하고, 이를 Google Cloud Platform에 배포하는 방법을 알아보았습니다. FastAPI는 강력하고 사용하기 쉬운 웹 프레임워크로, GCP와의 통합을 통해 강력한 클라우드 기반 애플리케이션을 구축할 수 있습니다. 더 많은 기능과 고급 기술을 익히는 데 있어 FastAPI의 공식 문서를 참조해 보시기 바랍니다.