처음 시작하는 FastAPI
이 책은 웹 개발과 파이썬을 통합하여 최신 기술을 활용하는 방법을 체계적으로 설명한다. "모던 웹과 파이썬"에서 시작하여 FastAPI를 중심으로 웹 애플리케이션 개발을 다루고, 실제 웹사이트 구현, 데이터 처리, 인증, 테스트, 배포 등의 주제를 포괄적으로 다룬다.
PART 1: 모던 웹과 파이썬
CHAPTER 1: 모던 웹
이 장에서는 현대 웹의 기본 개념을 소개한다. 서비스와 API, 동시성, 계층, 데이터 등 웹 개발의 핵심 요소를 다룬다. 각 개념을 구체적으로 설명한다.
CHAPTER 2: 모던 파이썬
파이썬의 도구와 시작 방법, API 및 서비스, 변수, 타입 힌트, 데이터 구조, 웹 프레임워크 등을 설명한다. 파이썬의 최신 기능과 이를 활용하는 방법에 대해 구체적인 예제와 함께 설명하여 실무에서 바로 적용할 수 있게 돕는다. FastAPI의 타입 힌트 기능은 파이썬의 타입 힌트 시스템을 기반으로 작동하며, 이를 통해 코드의 가독성, 유지보수성, 그리고 API의 자동화된 검증 및 문서화를 제공한다.
PART 2: 빠르게 보는 FastAPI
CHAPTER 3: FastAPI 둘러보기
FastAPI의 기본 개념과 애플리케이션 생성, HTTP 요청과 응답, 자동 문서화 기능을 소개한다. FastAPI의 장점을 명확히 설명하며, 이를 통해 빠르고 효율적인 웹 개발이 가능함을 보여준다.
CHAPTER 4: Starlette과 비동기, 동시성
FastAPI의 기반인 Starlette 프레임워크와 비동기 프로그래밍, 동시성 처리 방법을 다룬다. 직접적인 예제를 통해 비동기 처리의 효율성을 체감할 수 있다. 비동기 프로그래밍은 동시에 여러 작업을 수행할 수 있어, HTTP 요청을 빠르게 처리하는 데 유리하다. 예를 들어, 두 개의 외부 API에 비동기 요청을 보내고 그 결과를 결합하여 반환하는 경우, 각 요청을 순차적으로 처리하는 것보다 훨씬 빠르게 결과를 얻을 수 있다. 이는 네트워크 I/O를 효율적으로 처리하여 사용자에게 빠른 응답을 제공한다.
CHAPTER 5: Pydantic과 타입 힌트, 모델
데이터 검증과 관리에 사용되는 Pydantic 라이브러리와 타입 힌트를 설명한다. 데이터 유효성 검사와 모델 정의의 중요성을 강조하며, 이를 활용한 코드 예제를 제공한다. Pydantic은 데이터를 자동으로 검증하고, 타입 힌트를 사용하여 입력 데이터를 정의할 수 있다. 이는 데이터가 정의된 스키마를 따르는지 확인하여, 잘못된 데이터 입력을 방지한다. 예를 들어, API 엔드포인트에 전달된 JSON 데이터가 예상한 형태와 일치하지 않으면, Pydantic은 이를 자동으로 감지하고 유효성 검사 오류를 발생시킨다.
CHAPTER 6: 의존성
의존성 관리의 중요성과 FastAPI에서의 의존성 주입 방법을 다룬다. 의존성 관련 문제와 해결 방법을 구체적으로 설명한다. 의존성 관리의 장점은 의존성 주입을 통해 코드를 모듈화하고 재사용성을 높일 수 있다. 특정 기능을 독립적인 모듈로 분리하여, 다른 부분에서도 쉽게 사용할 수 있게 된다. 이는 중복 코드를 줄이고 유지보수를 용이하게 만든다.
CHAPTER 7: 프레임워크 비교
FastAPI와 Flask, Django 등의 다른 파이썬 웹 프레임워크를 비교한다. 각 프레임워크의 장단점을 분석하여, 상황에 맞는 적절한 선택을 도와준다. FastAPI를 사용해야 하는 상황은 높은 성능과 빠른 개발 속도가 필요한 경우이다. 비동기 기능을 기본 제공하여 많은 동시 요청을 효율적으로 처리할 수 있으며, 자동 문서화 기능으로 API 문서를 자동 생성해 개발과 유지보수를 용이하게 한다. 파이썬의 타입 힌트를 활용해 코드의 가독성과 유지보수성을 높이고, 직관적인 코드 작성이 가능해 개발 속도를 빠르게 할 수 있다. 이러한 특징 덕분에, 고성능 API 서버 구축이나 빠른 프로토타이핑이 필요한 프로젝트에서 FastAPI는 매우 적합한 선택이다. 상대적으로 작은 커뮤니티와 학습 곡선이 있지만, 높은 성능과 생산성 향상을 통해 충분히 보완할 수 있다.
PART 3: 웹사이트 만들기
CHAPTER 8: 웹 계층
RESTful API 설계, 파일 및 디렉터리 구조, 첫 번째 웹사이트 코드 작성 등을 다룬다. 실제 웹 애플리케이션의 기초를 다지며, 단계별로 구현하는 방법을 설명한다.
CHAPTER 9: 서비스 계층
서비스 계층의 정의와 레이아웃, 보호, 기능 구현 등을 설명한다. 서비스 계층의 역할과 이를 구현하는 방법을 구체적으로 다룬다. 서비스 계층은 비즈니스 로직을 캡슐화하여 애플리케이션의 다른 계층과 분리하는 역할을 한다. 이 계층은 데이터 처리, 검증, 변환 등의 기능을 담당하며, 데이터 계층과 웹 계층 간의 중간 다리 역할을 한다. 서비스 계층의 레이아웃은 모듈화되어 있어 유지보수와 테스트가 용이하다. 각 서비스는 독립적으로 구현되어 특정 기능을 수행하며, 이로 인해 코드의 재사용성과 가독성이 높아진다. 보호 측면에서는 인증 및 인가 로직을 포함하여 안전한 데이터 접근을 보장한다. 서비스 계층을 구현하는 방법으로는 먼저, 주요 비즈니스 로직을 식별하고 이를 개별 서비스로 나눈다. 각 서비스는 데이터베이스와 통신하여 필요한 데이터를 가져오고, 필요한 처리를 수행한 후 결과를 반환한다. 이를 통해 애플리케이션의 비즈니스 로직을 명확하게 분리하고, 코드의 일관성과 유지보수성을 높일 수 있다. FastAPI를 활용하면 의존성 주입과 같은 기능을 통해 서비스 계층의 구현이 더욱 간편하고 효율적이다.
CHAPTER 10: 데이터 계층
데이터베이스 연동과 초기화, 서비스 계층과의 연결, 테스트 등을 설명한다. 데이터베이스의 중요성과 이를 효과적으로 관리하는 방법을 제시한다. 데이터 계층은 애플리케이션의 데이터를 저장하고 관리하는 역할을 한다. 데이터베이스 초기화는 테이블 생성, 스키마 정의 등을 포함하며, 마이그레이션 도구를 사용해 데이터베이스 변경 사항을 관리한다. 서비스 계층과 데이터 계층은 의존성 주입을 통해 연결되며, 서비스 계층은 데이터 계층을 통해 데이터베이스와 상호작용한다. 데이터 계층의 테스트는 단위 테스트와 통합 테스트를 포함하여, 데이터 처리 로직의 정확성을 검증한다.
CHAPTER 11: 인증 및 인가
인증과 인가의 필요성, 다양한 인증 방법, 미들웨어 등을 다룬다. 보안이 중요한 웹 애플리케이션에서의 필수 요소들을 구체적으로 설명한다.
인증과 인가는 보안이 중요한 웹 애플리케이션에서 필수적이다. 인증은 사용자의 신원을 확인하는 과정이고, 인가는 인증된 사용자가 특정 자원에 접근할 권한이 있는지 확인하는 과정이다. JWT(토큰 기반 인증)는 널리 사용되는 방법으로, 사용자가 로그인하면 서버는 서명된 JWT를 발급하고, 클라이언트는 이를 저장하여 요청 시 포함시킨다. 서버는 JWT를 검증하여 사용자를 인증하고, 토큰 내 정보로 사용자의 권한을 확인한다. 미들웨어는 이러한 JWT 검증 로직을 처리하여, 모든 요청에 대해 인증 및 인가를 수행한다. FastAPI에서는 Depends와 함께 JWT 검증 미들웨어를 쉽게 통합할 수 있다.
CHAPTER 12: 테스트
웹 API 테스트, pytest를 이용한 테스트 자동화, 보안 테스트, 부하 테스트 등을 다룬다. 테스트의 중요성을 강조하며, 다양한 테스트 기법을 소개한다.
CHAPTER 13: 프로덕션
애플리케이션 배포, HTTPS 설정, 성능 최적화, 트러블슈팅 등을 설명한다. 실제 프로덕션 환경에서 발생할 수 있는 문제와 이를 해결하는 방법을 제시한다.
PART 4: 갤러리
CHAPTER 14: 데이터베이스와 데이터 과학, AI
데이터 저장소, 관계형 및 비관계형 데이터베이스, 데이터 과학과 AI의 활용을 다룬다. 데이터베이스와 데이터 과학의 융합을 통해 AI 프로젝트를 구현하는 방법을 설명한다.
CHAPTER 15: 파일
파일 업로드와 다운로드, 정적 파일 서비스 등을 다룬다. 파일 처리의 중요성과 이를 효율적으로 관리하는 방법을 제시한다.
CHAPTER 16: 양식과 템플릿
양식과 템플릿의 사용 방법을 설명한다. 사용자 인터페이스를 효율적으로 구축하는 방법을 소개한다.
CHAPTER 17: 데이터 탐색 및 시각화
데이터 탐색과 시각화 방법을 다룬다. 파이썬을 이용한 데이터 분석과 시각화 기법을 구체적으로 설명한다. 데이터과학과 연계해서 웹개발에 관심이 많은 편이라 직접 만든 결과를 웹으로 보여줄 수 있는 대시보드 등을 개발할 때 유용할만한 팁이 있다.
CHAPTER 18: 게임
파이썬 게임 개발을 다룬다. 게임 로직 분리, 웹 계층과 서비스 계층의 구현, 테스트 방법 등을 설명한다. 게임 개발을 통해 파이썬의 다양한 활용 방법을 제시한다. 웹을 통해 단순한 게시판 등의 예제가 아닌 다양한 활용법을 제시하는 점이 인상적이었다.
"처음 시작하는 FastAPI"는 웹 개발과 파이썬을 통합하여 최신 기술을 활용하는 방법을 체계적으로 설명하는 책이다. 모던 웹과 파이썬의 기본 개념을 다루며, FastAPI를 중심으로 웹 애플리케이션 개발을 단계별로 안내한다. RESTful API 설계, 파일 및 디렉터리 구조 설정, 데이터베이스 연동과 초기화, 인증과 인가, 서비스 계층의 구현 등을 포괄적으로 설명한다. 특히, FastAPI의 비동기 처리와 자동 문서화, Pydantic을 활용한 데이터 검증, JWT를 이용한 인증 방법 등을 자세히 다룬다. 이 책은 높은 성능과 빠른 개발 속도를 요구하는 프로젝트에 FastAPI가 적합하다는 점을 강조하며, 초보자부터 숙련자까지 모두에게 실무에서 바로 적용할 수 있는 유용한 내용을 제공한다. 단계별 설명과 다양한 예제로 구성된 이 책은 FastAPI를 통한 웹 개발의 모든 측면을 포괄적으로 다룬 훌륭한 참고서이다.
다음은 "지은이의 말"이다.
이 리뷰는 한빛미디어의 나는 리뷰어다 이벤트를 통해 책을 제공받아 작성했습니다.