4P by bnbong 4시간전 | ★ favorite | 댓글과 토론

안녕하세요, 요즘 AI 개발 분야가 뜨겁다 못해 용암 감자로 부상하면서 Python 백엔드 프레임워크인 FastAPI도 정말 많은 유입이 생겼는데요,

저는 오랫동안 FastAPI를 사용하고 사랑해온 개발자로서 FastAPI에 입문하는 개발자분들을 돕고 싶은 마음으로 이 프로젝트를 개발하게 되었습니다.

FastAPI-fastkit은 Python과 FastAPI를 처음 접하는 사용자를 위해 개발 환경 설정 및 프로젝트 스캐폴딩을 빠르게 해주는 CLI 기반 스타터 키트입니다.

매우 간단한 명령어 입력으로 FastAPI 프로젝트를 생성하고, 가상 환경 생성, 의존성 설치까지 모두 자동으로 완료됩니다.

pip install fastapi-fastkit  
fastkit init --interactive # 대화형으로 프로젝트 구성 (DB ORM, 인증, 테스팅, 유틸리티, 그 외 유저가 원하는 의존성 설치)  

FastAPI는 현대적이고 빠른 Python 웹 프레임워크로 사랑받고 있지만, 첫 웹 프레임워크로 FastAPI를 채택하여 시작하는 분들에게는 여전히 진입 장벽이 있습니다:

  1. 정형화 된 프로젝트 구조가 제공되지 않다 보니 프로젝트 구조를 어떻게 잡아야 할지 막막함
  2. 1번 문제의 연장선으로 같은 FastAPI 기반이라도 프로젝트마다 구조가 달라, 프로젝트 이해나 오픈소스 기여 시 학습 비용 발생
  3. 다른 웹 프레임워크 대비 ASGI 서버, serializing 등의 핵심 웹 프레임워크 기능 관련 외부 라이브러리 의존도가 매우 높아 FastAPI 학습, 사용 경험에서의 난해함 존재 (타 라이브러리 및 도구 학습에도 더 많이 신경써야하므로)

Django를 사용해 보신 분들은 django-admin startproject가 얼마나 편리한지 아실 겁니다. Spring 생태계에도 이와 비슷하게 프로젝트를 바로 작업 디렉토리에 배치할 수 있도록 하는 Spring Initializr 도구가 있죠.

개인적으로 FastAPI는 성능 면에서도 매우 매력적인 프레임워크라고 생각해 5년 넘게 애용해왔지만 위에 언급한 단점들 때문에 몇몇 사람들이 입문을 꺼려하셔서 FastAPI에도 이런 도구가 있으면 좋겠다 싶어서 FastAPI-fastkit을 만들게 되었습니다.

프로젝트 개발을 결심한 결정적인 계기는 FastAPI 0.111.0 버전에서 FastAPI CLI 패키지가 추가되었을 때였습니다. 해당 패키지는 FastAPI 개발자 tiangolo가 커뮤니티 반응 검증 없이 독단으로 추가하였으나 해당 업데이트 노트에 표명한 FastAPI 입문 장벽을 낮추기 위함이라는 동기에 공감하며 제 프로젝트가 더욱 의미 있는 프로젝트가 될 수 있을 것 같다고 확신했습니다.


[핵심 기능]

  1. 대화형 프로젝트 빌더 (fastkit init --interactive)

단계별로 원하는 의존성들 및 기능을 선택하면 자동으로 코드가 생성됩니다:

  • Database: PostgreSQL, MySQL, MongoDB, Redis, SQLite
  • Authentication: JWT, OAuth2, FastAPI-Users, Session 기반
  • Background: Celery, Dramatiq
  • Caching: Redis, fastapi-cache2
  • Monitoring: Loguru, OpenTelemetry, Prometheus
  • Testing: pytest + coverage 자동 구성
  • Utilities: CORS, Rate-Limiting, Pagination, WebSocket
  • Deployment: Docker, docker-compose 자동 생성
  • Package Manager: pip, uv, pdm, poetry 선택 가능
  • 그 외 유저가 추가를 원하는 의존성을 입력하면 추가 가능
  1. boilderplate로 빠르게 FastAPI 프로젝트 소스코드 배치

대화형 설정이 번거롭다면, 사전 구성된 템플릿으로 바로 시작할 수 있습니다:

fastkit list-templates # 사용 가능한 템플릿 목록 확인  
fastkit startdemo fastapi-psql-orm --project-name myapp # 특정 템플릿으로 프로젝트 생성  

패키지 내에서 제공되는 템플릿은 FastAPI의 다양한 사용 사례를 고려해서 추가했으며, Github에 public으로 등록되어 있는 FastAPI 기반의 프로젝트들의 구조를 참고했습니다.

새로운 템플릿 추가가 진행중이며 현재 제공되는 템플릿은 다음과 같습니다:

  • fastapi-default: 기본 FastAPI 프로젝트 구조
  • fastapi-async-crud: 비동기 CRUD 작업에 특화
  • fastapi-dockerized: Docker 배포 준비 완료
  • fastapi-psql-orm: PostgreSQL + SQLAlchemy ORM 통합
  • fastapi-single-module: 간단한 단일 모듈 구조
  • fastapi-mcp: MCP 서버 개발을 위한 기본 FastAPI 프로젝트 구조
  1. 빈 프로젝트로 시작하기

특별한 설정 없이 깔끔한 빈 프로젝트로 시작하고 싶다면: fastkit init --project-name myproject

  1. 라우트 추가

기존 프로젝트에 새로운 API 라우트를 추가합니다: fastkit addroute myproject users # myproject 프로젝트에 users 라는 API route 추가

  1. 개발 서버 실행

별도의 uvicorn 명령어 없이 바로 서버를 실행합니다: fastkit runserver --reload --port 8000


[문서 및 리소스]

더 자세한 사용법은 공식 문서를 참고해 주세요:


FastAPI와 Python을 처음 시작하시는 분들에게 조금이라도 도움이 되었으면 좋겠습니다.

피드백, 질문, 기여 모두 환영합니다!