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

최근 몇 년간 웹 애플리케이션 개발은 급속도로 발전해왔고, 그중에서도 Python을 기반으로 한 웹 프레임워크들은 주목을 받고 있습니다. 특히, FastAPI는 Python의 비동기 기능을 활용하여 뛰어난 성능과 쉽고 간결한 문법을 제공하여 많은 개발자들 사이에서 인기를 끌고 있습니다. 본 포스트에서는 FastAPI를 사용한 백엔드 서버 개발의 기본 개념과 AWS에 배포하는 방법에 대해 알아보겠습니다.

1. FastAPI란?

FastAPI는 Python으로 작성된 현대적인 웹 프레임워크로, API 서버 구축의 효율성을 극대화하는 데 초점을 두고 있습니다. 주요 특징은 다음과 같습니다.

  • 빠른 실행 속도: Starlette와 Pydantic을 기반으로 하여 최고 수준의 성능을 자랑합니다.
  • 타입 힌트 지원: Python의 타입 힌트를 활용하여 코드의 가독성을 높이고, 자동 문서화를 지원합니다.
  • 비동기 지원: 비동기 프로그래밍을 쉽게 활용할 수 있도록 도와줍니다.
  • 자동 문서화: OpenAPI 명세를 자동으로 생성하여 API 문서를 쉽게 확인할 수 있습니다.

2. FastAPI 설치하기

FastAPI를 설치하기 위해서는 Python이 필요합니다. 아래와 같이 pip를 사용하여 FastAPI와 uvicorn을 설치할 수 있습니다:

pip install fastapi uvicorn
    

3. FastAPI 기본 예제

이제 FastAPI로 간단한 API 서버를 만들어보겠습니다. 다음 코드는 “Hello, World!”를 반환하는 기본적인 FastAPI 서버입니다:

from fastapi import FastAPI

app = FastAPI()

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

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)
    

위 코드를 main.py라는 파일명으로 저장한 후, 아래 명령어로 실행할 수 있습니다:

uvicorn main:app --reload
    

4. FastAPI의 데이터 모델 사용하기

FastAPI는 Pydantic을 통해 데이터 모델을 정의하고 검증할 수 있습니다. 아래 예시는 사용자 정보를 POST 요청으로 받는 API를 구현한 것입니다:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class User(BaseModel):
    name: str
    age: int

@app.post("/users/")
async def create_user(user: User):
    return {"name": user.name, "age": user.age}
    

5. AWS에 FastAPI 애플리케이션 배포하기

AWS에 FastAPI 애플리케이션을 배포하기 위해 여러 가지 방법이 있지만, 여기서는 Amazon EC2를 이용한 방법을 설명하겠습니다.

5.1. EC2 인스턴스 생성하기

AWS Management Console에 로그인 후, EC2 대시보드로 이동하여 새로운 인스턴스를 생성합니다. 여기서는 Amazon Linux 2 AMI를 사용하는 것이 일반적입니다.

5.2. 인스턴스 SSH로 접속하기

인스턴스를 생성한 후, SSH를 이용해 접속할 수 있습니다. 아래의 명령어를 사용합니다:

ssh -i your_key.pem ec2-user@your_instance_public_ip
    

5.3. FastAPI 및 필요한 패키지 설치하기

SSH로 접속한 후, 아래 명령어로 FastAPI와 uvicorn을 설치합니다:

sudo yum update -y
sudo yum install python3 -y
pip3 install fastapi uvicorn
    

5.4. FastAPI 서버 실행하기

이제 FastAPI 애플리케이션을 실행할 차례입니다. 새 프로젝트 디렉토리를 만들고, 앞서 만든 main.py 파일을 업로드합니다:

mkdir fastapi-app
cd fastapi-app
# 파일 전송: scp -i your_key.pem main.py ec2-user@your_instance_public_ip:~/fastapi-app/
uvicorn main:app --host 0.0.0.0 --port 8000
    

5.5. AWS Security Group 설정하기

FastAPI 서버가 외부에서 접근 가능하려면, EC2 인스턴스의 Security Group settings에서 포트 8000을 열어줘야 합니다. 다음 단계를 따라주세요:

  1. AWS Management Console에서 EC2 대시보드로 이동합니다.
  2. 좌측 메뉴에서 “Security Groups”를 클릭합니다.
  3. 인스턴스와 연결된 Security Group을 선택합니다.
  4. “Inbound rules” 탭에서 “Edit inbound rules”를 클릭하여 포트 8000을 추가합니다.

5.6. FastAPI 애플리케이션에 접근하기

이제 웹 브라우저를 열고 `http://your_instance_public_ip:8000`를 입력하여 FastAPI 애플리케이션에 접근할 수 있습니다.

6. 추가적인 배포 방법

AWS EC2 외에도 FastAPI 애플리케이션을 배포할 수 있는 다른 방법들이 있습니다:

  • AWS Elastic Beanstalk: 복잡한 서버 설정이 필요 없이 웹 애플리케이션을 관리할 수 있습니다.
  • AWS Lambda: 서버리스 아키텍처를 사용하여 비용 효율적으로 애플리케이션을 운영할 수 있습니다.
  • Docker: Docker를 사용하여 컨테이너화된 FastAPI 애플리케이션을 배포할 수 있습니다.

7. 마치며

FastAPI는 강력하고 사용하기 쉬운 프레임워크로, 특히 비동기 프로그래밍에 적합합니다. AWS에 배포하는 과정은 조금 복잡할 수 있지만, AWS의 다양한 도구를 활용하여 배포를 쉽게 할 수 있습니다. 앞으로 FastAPI와 함께 멋진 웹 애플리케이션을 만들어 보세요!

이 글이 FastAPI와 AWS 배포에 대한 이해를 돕는 데 유용했기를 바랍니다. 더 많은 정보와 예제 코드가 필요하시면, GitHub에서 FastAPI 공식 문서를 참조해보세요.