FastAPI 서버개발, 도커를 사용한 배포

현대의 웹 서버 개발에 있어 FastAPI는 빠른 속도와 직관적인 API 설계를 제공하는 프레임워크로 인기를 얻고 있습니다. 본 강좌에서는 FastAPI를 사용하여 기본적인 서버를 개발하는 방법과 그 서버를 도커를 통해 쉽게 배포하는 방법에 대해 설명하겠습니다.

1. FastAPI란?

FastAPI는 Python으로 작성된 현대적인 웹 프레임워크로, Starlette을 기반으로 하며 Pydantic으로 데이터 유효성 검사를 제공합니다. 빠른 성능과 직관적인 문서화, 자동화된 API 문서 생성 기능 덕분에 많은 개발자들에게 선택받고 있습니다.

1.1 FastAPI의 주요 특징

  • 빠른 성능: ASGI 기반으로, 비동기 프로그래밍을 지원하여 높은 성능을 자랑합니다.
  • 자동화된 문서화: Swagger UI와 Redoc을 통한 자동 문서화 기능이 내장되어 있습니다.
  • Pydantic: 데이터 모델링 및 유효성 검사에 Pydantic을 사용합니다.
  • 비동기 지원: Python의 비동기 프로그래밍을 통해 I/O 작업을 효율적으로 처리할 수 있습니다.

2. FastAPI 서버 개발하기

2.1 환경 설정

FastAPI 서버를 만들기 위해 Python 3.6 이상이 필요합니다. 아래의 명령어를 사용하여 FastAPI와 Uvicorn을 설치합니다:

pip install fastapi uvicorn

2.2 기본적인 FastAPI 서버 작성

다음은 기본적인 FastAPI 서버의 코드 예제입니다:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"message": "Hello, FastAPI!"}

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "query": q}

이 코드는 두 개의 GET 엔드포인트를 가진 FastAPI 서버를 정의합니다. 첫 번째 엔드포인트는 루트 URL에 대한 응답으로 “Hello, FastAPI!” 메시지를 반환합니다. 두 번째 엔드포인트는 아이템 ID와 쿼리 파라미터를 받아 그 값을 반환합니다.

2.3 서버 실행하기

서버를 실행하기 위해 다음 명령어를 사용합니다:

uvicorn main:app --reload

이 명령은 FastAPI 서버를 로컬호스트 8000번 포트에서 실행합니다. 웹 브라우저에서 http://127.0.0.1:8000/docs로 접속하면 자동으로 생성된 Swagger UI를 통해 API를 탐색할 수 있습니다.

3. 도커를 사용한 배포

도커를 사용하면 FastAPI 서버의 배포를 간편하게 할 수 있습니다. 도커는 애플리케이션을 컨테이너 형태로 패키징하여 이식성과 관리성을 향상시키는 도구입니다.

3.1 도커 설치

도커를 설치하려면, 운영체제에 맞는 도커 설치 방법을 참조하여 설치합니다. 도커가 설치되면, 컨테이너를 쉽게 만들고 관리할 수 있는 환경을 갖추게 됩니다.

3.2 도커 파일 생성

FastAPI 애플리케이션을 도커로 배포하기 위해 도커 파일을 생성해야 합니다. 프로젝트 디렉토리에 Dockerfile이라는 이름의 파일을 생성하고 아래 내용을 추가합니다:

FROM python:3.9

# 작업 디렉토리 설정
WORKDIR /app

# 의존성 파일 복사
COPY requirements.txt .

# 의존성 설치
RUN pip install --no-cache-dir -r requirements.txt

# 애플리케이션 코드 복사
COPY . .

# Uvicorn으로 애플리케이션 실행
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]

3.3 요구 사항 파일

또한, requirements.txt 파일을 생성하여 애플리케이션의 의존성을 명시해야 합니다. 아래는 contents of requirements.txt의 예시입니다:

fastapi
uvicorn

3.4 도커 이미지 빌드하기

도커 파일을 준비했으면 다음 명령어를 사용하여 도커 이미지를 빌드할 수 있습니다:

docker build -t fastapi-app .

이 명령은 현재 디렉토리 (.)에 있는 Dockerfile을 읽어 fastapi-app라는 이름의 이미지를 생성합니다.

3.5 도커 컨테이너 실행하기

이미지를 빌드한 후, 다음 명령어로 컨테이너를 실행할 수 있습니다:

docker run -d --name my-fastapi-app -p 80:80 fastapi-app

이 명령은 my-fastapi-app라는 이름으로 컨테이너를 백그라운드에서 실행하며, 호스트의 포트 80을 컨테이너의 포트 80에 매핑합니다.

4. 도커와 함께하는 FastAPI의 장점

FastAPI를 도커와 함께 사용하면 다음과 같은 장점이 있습니다:

  • 이식성: 도커 컨테이너는 어떤 환경에서도 동일하게 실행됩니다.
  • 관리 용이성: 의존성 문제를 해결할 수 있으며, 컨테이너 관리를 통해 배포 및 롤백이 간편합니다.
  • 스케일링: 컨테이너를 쉽게 복제할 수 있으므로 수평 확장이 용이합니다.

5. 결론

FastAPI와 도커를 사용하여 웹 API를 개발하고 배포하는 과정은 매우 효율적입니다. FastAPI의 간결한 코드 작성법과 도커의 관리의 용이성을 결합하면 강력한 웹 애플리케이션을 쉽게 만들 수 있습니다.

이 강좌를 통해 FastAPI의 기본적인 사용법과 도커를 통한 배포 방법에 대해 이해할 수 있었기를 바랍니다. 다음 단계로는 FastAPI의 추가 기능이나 보안, 데이터베이스 연동 등을 탐색해보면 좋을 것입니다.