FastAPI와 MariaDB와의 통신을 위한 패키지들과 Android와의 통신을 위한 의존성 목록입니다. 이 목록은 requirements.txt
에 포함할 수 있는 패키지들로, FastAPI와 SQLAlchemy, 그리고 MariaDB와 연동하고 JSON 형태로 데이터를 주고받는 구조에 필요한 것들을 나열합니다.
최종 requirements.txt
에 추가할 유용한 패키지들
# 기존 필수 패키지들 (FastAPI, SQLAlchemy, 인증 등)
fastapi==0.100.0
uvicorn[standard]==0.22.0
SQLAlchemy==2.0.21
asyncmy==0.2.7
alembic==1.11.1
pydantic==2.4.0
fastapi-cors==0.3.1
python-multipart==0.0.6
requests==2.31.0
python-dotenv==1.0.0
httpx==0.24.1
pytest==7.4.0
python-jose[cryptography]==3.3.0
passlib[bcrypt]==1.7.4
authlib==1.2.0
pyjwt==2.8.0
cryptography==41.0.1
# 성능 최적화를 위한 추가 패키지
gunicorn==21.2.0 # FastAPI의 프로덕션 서버용 WSGI 서버
aiomysql==0.1.1 # MySQL/MariaDB를 위한 추가 비동기 드라이버
redis==5.0.10 # 캐시와 세션 관리
# 데이터 분석 및 로깅
loguru==0.6.0 # 로깅 편리성 개선
prometheus-client==0.16.0 # 모니터링을 위한 메트릭 수집
# WebSocket 및 실시간 데이터 지원
fastapi-socketio==0.1.3 # 실시간 데이터 송수신을 위한 WebSocket 지원
# API 문서화 및 개발 편의성 도구
openapi-schema-pydantic==2.2.2 # OpenAPI 스키마를 위한 도구
sentry-sdk==1.29.2 # 오류 추적 및 모니터링 도구
추가한 패키지의 설명 및 이유:
- Gunicorn:
- 프로덕션 환경에서는 Uvicorn 단독 사용보다 Gunicorn을 통해 FastAPI를 더 효율적으로 실행합니다. 이를 통해 여러 워커 프로세스로 요청을 분산 처리합니다【11†source】.
- Redis:
- Redis를 사용하면 세션 관리와 캐시를 최적화할 수 있어 빠른 응답과 실시간 데이터 동기화가 가능합니다【12†source】.
- Loguru:
- Loguru를 활용해 직관적인 로깅을 구현하면 서버에서 발생하는 오류나 이벤트를 더 쉽게 추적할 수 있습니다【13†source】.
- FastAPI-SocketIO:
- Jetpack Compose 기반 앱에서 실시간 데이터가 필요하다면 WebSocket을 통해 구현할 수 있습니다. 이를 위해
fastapi-socketio
를 추가했습니다【10†source】【12†source】.
- Prometheus-Client:
- 서버 성능 모니터링을 위해 Prometheus와 통합하여 메트릭을 수집하고 시각화할 수 있습니다【14†source】.
- Sentry SDK:
- Sentry를 통해 오류를 추적하고, 빠르게 해결할 수 있습니다. 이는 프로덕션 환경에서 특히 유용합니다.
이와 같은 구성을 사용하면 FastAPI 서버는 성능 최적화, 보안 강화, 실시간 통신 지원까지 모두 충족할 수 있습니다. Jetpack Compose 앱과 FastAPI 서버 간의 통신은 주로 JWT 인증을 활용한 RESTful API와 필요 시 WebSocket을 통해 처리하는 것이 이상적입니다.
추가적으로, 이 패키지들은 모두 Docker 이미지로 쉽게 관리할 수 있습니다. docker-compose.yml
파일에 Redis와 함께 Gunicorn 서버를 정의하면 앱의 확장성과 성능을 극대화할 수 있습니다.
제공된 requirements.txt
파일만으로도 필요한 모든 패키지를 설치할 수 있지만, 도커 이미지 빌드를 위해 몇 가지 추가 파일이 필요합니다. 아래는 완전한 도커 환경 구성을 위한 필수 파일 목록과 예시입니다.
1. Dockerfile
이 파일은 도커 이미지 생성 시 필요한 지침을 제공합니다.
# Python Slim 이미지 사용으로 경량화
FROM python:3.9-slim
# 작업 디렉토리 설정
WORKDIR /app
# 의존성 파일 복사 및 설치
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 애플리케이션 코드 복사
COPY . .
# Uvicorn을 사용해 FastAPI 서버 실행
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
2. .dockerignore
불필요한 파일이 도커 이미지에 포함되지 않도록 방지합니다.
__pycache__/
*.pyc
*.pyo
env/
3. docker-compose.yml (선택사항)
여러 서비스(MariaDB, Redis 등)와 함께 사용할 경우 Docker Compose 파일을 작성합니다.
version: '3.8'
services:
app:
build: .
ports:
- "8000:8000"
volumes:
- .:/app
depends_on:
- db
db:
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: mydb
ports:
- "3306:3306"
4. FastAPI 애플리케이션 코드 (main.py
)
이 파일은 간단한 FastAPI 서버를 정의합니다.
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
빌드 및 실행 명령어
- 도커 이미지 빌드:
docker build -t my-fastapi-app .
- 도커 컨테이너 실행:
docker run -d --name fastapi-app -p 8000:8000 my-fastapi-app
- Docker Compose로 실행 (선택):
docker-compose up --build
결론
위의 Dockerfile과 필요한 파일들만 추가하면 requirements.txt
와 함께 완전한 도커 환경에서 FastAPI 서버를 빌드하고 실행할 수 있습니다. 제공된 설정은 간단한 API 서버를 실행하는 데 충분하며, Docker Compose를 사용하면 데이터베이스와 연동된 서비스도 쉽게 구성할 수 있습니다【12†source】【14†source】【45†source】.