[FastAPI 시리즈 1편] 왜 FastAPI를 써보려는가

English version

FastAPI는 Python 함수로 HTTP API를 만드는 웹 프레임워크입니다. 그래서 Python 공부에서 웹 서비스 단계로 넘어갈 때 징검다리 역할을 합니다. Python으로 간단한 스크립트를 만들 수 있게 되면, 그다음에는 "이 코드를 웹에서 호출할 수 없을까?"라는 생각이 듭니다. FastAPI는 바로 그 지점을 아주 매끄럽게 연결해 주는 프레임워크입니다.

이번 글에서 새로 나오는 용어

  1. FastAPI: Python 함수에 경로를 붙여 웹 API를 만드는 프레임워크로, 이번 글 전체에서 다루는 핵심 도구입니다.
  2. HTTP API: 브라우저·앱이 요청 → 응답으로 대화하는 규칙 묶음으로, FastAPI가 해결하려는 기본 문제입니다.
  3. Swagger/OpenAPI: FastAPI가 자동으로 만들어 주는 문서 포맷으로, 코드를 쓰면 동시에 명세가 생긴다는 장점을 보여 줍니다.
  4. uvicorn: FastAPI 앱을 실제 서버로 띄워 주는 실행기(ASGI 서버)로, 뒤 글에서 반복 등장할 운영 도구입니다.

FastAPI 트랙 로드맵

회차 핵심 단위 바로 연결할 실습
1편 FastAPI 선택 이유, 학습 흐름 FastAPI가 해결하는 문제를 이해하고 학습 전략 정리
2편 uv 기반 FastAPI 개발 환경 uv로 패키지 세팅, uvicorn으로 첫 개발 서버 확인
3편 경로·쿼리 파라미터 설계 URL 규칙 정리, Swagger UI로 문서 차이 확인
4편 요청 본문과 Pydantic 검증 JSON 구조를 모델로 선언하고 자동 검증 체험
5편 메모리 기반 CRUD 리스트 저장소로 API 흐름 반복 연습
6편 응답 모델과 문서화 response_model로 반환 스키마 고정
7편 라우터 구조화 APIRouter로 파일 나누고 서비스 확장 준비
8편 의존성 주입 기초 Depends로 공통 검증/리소스 주입
9편 데이터베이스 첫 연결 SQLite + SQLModel로 기본 CRUD 이식
10편 토큰 기반 인증 흐름 OAuth2 Password + JWT 토큰 실습
11편 배포 전 구성 체크 uvicorn 설정, 환경 변수, 프로세스 매니저 점검
12편 미니 서비스 조립 지금까지 만든 조각으로 소규모 API 완성
13편 파일 업로드와 응답 스트림 UploadFile, StreamingResponse로 자산 다루기
14편 BackgroundTask·이벤트 비동기 정리 작업과 스타트업/셔다운 훅 활용
15편 API 테스트 루틴 pytest + httpx로 엔드포인트 회귀 테스트 작성
16편 CORS와 기본 보안 CORS, CSRF 대처, 보안 헤더 적용 패턴
17편 설정 계층화 Pydantic Settings로 환경별 구성 정리
18편 캐시·성능 다루기 응답 캐싱, 제한적 rate-limit 개념 체험
19편 로깅과 모니터링 구조적 로그, Prometheus/Healthcheck 엔드포인트
20편 졸업 프로젝트 가이드 기능 명세에서 배포까지 전체 워크플로 마무리

각 글은 "핵심 HTTP 흐름 → 확장 기능 → 운영 감각"의 세 구간을 따라가며, 동일한 코드를 점점 확장해 "FastAPI 한 사이클"을 완성하는 감각을 만드는 것이 목표입니다.

학습 철학

짧은 시간 안에 기능 구현부터 운영 감각까지 잡아야 하는 입문자에게는 "너무 많은 개념"보다 "핵심 경로를 정확히 밟는 경험"이 더 중요합니다. 그래서 이 시리즈는 다음 세 가지 원칙을 따릅니다.

  • 핵심 경로 우선: 인증·ORM보다 먼저 HTTP 흐름을 손에 익힙니다.
  • 실습 즉시 재사용: 예제 함수는 그대로 팀 프로젝트에 옮겨 쓸 수 있도록 구성합니다.
  • 문서 동시 확보: 코드와 문서가 동시에 움직이도록 Swagger/OpenAPI를 적극 활용합니다.

이때 가장 먼저 붙잡아야 할 축은 단순합니다. 요청 -> 처리 -> 응답입니다. FastAPI 시리즈는 이 세 단계를 눈에 보이는 코드로 반복해서 익히도록 설계합니다.

시리즈 작성 목표

이 연재는 "Python 함수 → FastAPI 서비스"로 이어지는 징검다리를 가장 짧은 글 길이로 보여 주는 것이 목적입니다. 그래서 각 편은 다음 구조를 고정합니다.

  1. 앞선 글에서 다룬 개념을 한 문장으로 상기시키고,
  2. 새로운 개념을 uv 기반 실습으로 바로 검증하며,
  3. 실제 팀 프로젝트에 바로 옮겨 볼 수 있는 예시 흐름을 제시합니다.

이렇게 작성 목표를 고정해 두면, 2편 이후부터는 반복 설명 없이 바로 실습으로 진입할 수 있습니다.

지금 주목할 트렌드

API-first 개발 문화가 강화되면서 코드를 작성하는 즉시 문서가 생성되고, 팀이 같은 스펙을 공유하는 방식이 중요해졌습니다. FastAPI는 Swagger/OpenAPI 문서를 자동으로 제공하므로, 입문자도 기획 의도를 명확한 스펙으로 설명하는 최신 흐름을 체감하게 해 줍니다.

이 글에서 할 것

  • FastAPI가 어떤 상황에서 매력적인지 정리하기
  • Flask, Django와 다른 인상을 주는 지점 보기
  • 앞으로 어떤 실습을 해볼지 계획 세우기

FastAPI가 눈에 들어오는 이유

타입 힌트가 문서가 된다

FastAPI는 Python 타입 힌트를 적극적으로 활용합니다.

from fastapi import FastAPI

app = FastAPI()

@app.get("/hello")
def read_hello(name: str = "world"):
    return {"message": f"Hello, {name}"}

이 코드만으로도 요청 파라미터 구조가 드러나고, 자동 문서 페이지까지 생성됩니다. "코드를 쓰면 문서가 따라온다"는 점이 매우 편합니다.

시작 속도가 빠르다

처음 백엔드를 공부할 때는 인증, ORM, 배포보다 먼저 "하나의 요청이 들어왔을 때 어떤 함수가 실행되는가"를 이해하는 것이 중요합니다. FastAPI는 이 흐름을 비교적 적은 코드로 보여줍니다.

Python 학습 흐름과 자연스럽게 이어진다

이미 Python으로 함수, 딕셔너리, JSON을 다뤘다면 FastAPI의 기본 코드는 훨씬 덜 낯섭니다. 그래서 Python 공부의 다음 단계로 이어 붙이기 좋습니다.

어떤 점을 특히 기대하는가

1. API를 더 분명하게 이해할 수 있다

브라우저 화면은 눈에 보이지만, API는 처음에는 추상적으로 느껴집니다. FastAPI는 경로, 메서드, 응답 데이터를 간단하게 정의할 수 있어서 API의 핵심 구조를 파악하기 좋습니다.

2. 검증이 기본값처럼 들어온다

입력값을 받을 때 "문자열이어야 한다", "숫자 범위가 이래야 한다" 같은 규칙을 코드에 자연스럽게 녹일 수 있습니다. 이 점은 나중에 폼 처리나 데이터 검증을 배울 때 큰 장점이 됩니다.

3. 작은 프로젝트로 실습하기 좋다

예를 들어 이런 미니 프로젝트를 만들 수 있습니다.

  • 할 일 목록 API
  • 문제집 문항 조회 API
  • 블로그 글 목록을 반환하는 API
  • 업로드된 파일 이름을 정리하는 API
  • 동아리 방 예약/확정 상태를 알려주는 API

작은 프로젝트를 여러 번 만들어 보면, 단순한 함수가 서비스가 되는 감각을 익힐 수 있습니다.

앞으로 다룰 내용

  • FastAPI 설치와 실행 환경 만들기
  • 첫 번째 GET API 작성하기
  • 경로 파라미터와 쿼리 파라미터 구분하기
  • 요청 본문 받기
  • 간단한 CRUD 흐름 만들기

실습

  • 따라 하기: FastAPI 공식 문서를 열어 로드맵 표의 각 주제를 어떤 순서로 실습할지 학습 노트에 적는다.
  • 확장하기: 1편에서 강조한 "요청 → 처리 → 응답" 흐름을 직접 그려 보고, 다음 글에서 구현할 항목을 표시한다.
  • 디버깅: 기존에 써 본 Flask나 Django가 있다면 같은 기능을 FastAPI에서 어떻게 줄일 수 있는지 비교 표를 만든다.
  • 완료 기준: 세 가지 프레임워크(FastAPI, Flask, Django)의 장점을 각각 한 줄로 정리한 표와 실습 계획이 기록된다.

마무리

FastAPI는 거대한 백엔드 프레임워크를 먼저 이해해야만 시작할 수 있는 도구가 아닙니다. 오히려 Python 함수에서 웹 API로 넘어가는 다리를 매우 짧고 선명하게 만들어 주는 도구에 가깝습니다. 그래서 이번 Coding 카테고리에서 Python 다음 주제로 이어 가기에 좋다고 느꼈습니다.

다음 글에서는 FastAPI를 설치하고 개발 서버를 띄우는 가장 기본적인 흐름부터 정리해 보겠습니다.

💬 댓글

이 글에 대한 의견을 남겨주세요