FastAPI 서버개발, GCP 배포의 개요

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의 공식 문서를 참조해 보시기 바랍니다.

© 2023 FastAPI & GCP 배포 강좌. 모든 권리 보유.