[도서 리뷰] 파이썬 FastAPI 개발 입문

본 게시물은 서평 리뷰어로 선정되어 도서를 제공받아 작성되었습니다.

 

서평을 진행하면서 함께한 실습은 제 아래 깃헙 레포에서 확인하실 수 있습니다.

https://github.com/architectyou/FastAPI-TodoAPP.git


파이썬 Fast API 개발 입문에 관한 책입니다.

운이 좋게도 리뷰어로 선정되어 책을 볼 수 있었네요 ㅎㅎ 2024년 2월 출간되었습니다.

 

FastAPI

 

FastAPI 공식 문서를 확인하면

빠른 성능으로 파이썬 표준 타입 힌트에 기초한 Python 3.8+의 API를 빌드하기 위한 웹 프레임 워크라고 설명이 되어 있습니다.

 

인공지능을 기반으로 한 앱을 배포할때도 주로 쓰이는 프레임워크인 것으로 알고 있습니다.

해당 프레임워크에 관심을 갖고 있던 분이라면 (저처럼) 책을 참고하시면서 실습하면 정말 도움될만한, 추천드리고 싶은 책이라고 말씀드리고 싶습니다.

 

하지만 한 가지 중요하게 말씀드리고 싶은 부분은

FastAPI 에 대한 "입문" 이지 개발 전반에 대한 입문 지식만을 갖고 계신 분이라면 이해하기 조금 어려울 것이라고 생각이 들긴 했습니다.

실습을 통해 환경 설정부터 API 개발, DB 연결, 클라우드 배포 까지 폭넓게 진행하기 때문에 모든 과정을 상세히 설명하고 있진 않습니다.

어느정도 개발과정을 이해하고 있거나 DB에 대한 개념을 갖추신분들이 읽으시면 더할나위 없으실 것 같습니다.😃

파이썬 FastAPI 개발 입문

 

책은 크게 다음과 같이 구성되어 있습니다.

  • 개발환경과 FastAPI 준비
  • FastAPI 애플리케이션 구현
  • 클라우드 플랫폼에 배포하기

 

 

본격적인 서평을 진행하기에 앞서, 책의 예제들을 따라 해 보면서 느낀 전체적으로 아쉬웠던 점과 좋았던 점을 먼저 적어보고자 합니다.

 

0. 아쉬웠던 점 vs 좋았던 점

 

- 아쉬웠던 점

코드 자료 다운로드 사이트 (혹시 몰라 모자이크...)

 

다음과 같이 본격적인 책 진도에 앞서, 

실습용 코드를 다운 받을 수 있는 사이트가 제공됩니다.

첫 번째는 출판사 카페 경로이고, 두 번째는 원서 출판사의 경로입니다.

에이케이커뮤니케이션즈 출판사

 

카페에 가입했음에도 불구하고 실습용 코드 데이터가 업로드 되어있지 않았습니다 🥹

그래서 원본 자료 링크(일본 출판사)에 접속하여 실습 자료 코드를 다운로드 하였는데

모두 일본어로 주석처리 되어있는것이 생각보다 당황스러웠습니다...

하지만 같은 내용으로 도서 내에서 설명을 진행하며 실습을 진행하기 때문에, 도서 자체에는 번역이 되어 실습하는데 어려움은 없었지만 제공되는 코드에서 함께 번역 주석이 제공되었다면 좀 더 좋았을 것이라는 아쉬움이 남습니다.

 

- 좋았던 점

사실 최신 프레임워크를 다룬다는 것 만으로도 이미 충분히 메리트가 있는 책이라고 생각합니다.

(사실상 코드를 실습하는데 번역이 큰 어려움을 미치진 않았습니다. 책에는 자세히 설명되어 있기 때문에요!)

 

특히 FastAPI 의 경우 LLM 모델 배포에도 자주쓰여서 랭체인을 공부하면서 자주 접하게 되는 프레임 워크 중 하나인데 Python을 기반으로 하는 이런 RESTful API 형태의 프레임워크를 배울 수 있다는 것 자체가 메리트라고 생각되는 부분입니다. (존재 자체가 .. 장점이다!)

 

또 도서에서는 FastAPI 뿐 아니라 FastAPI를 구현하기 위한 많은 DevOps 지식들을 간접적으로 접할 수 있습니다.

예를 들면 Docker, AWS, Poetry, DB 연결, 비동기화, GCP 등... 모든 부분을 폭넓게 체험해 볼 수 있다는 것이 가장 큰 장점인 것 같습니다.

 

또 제목에 맞춰 정말 'FastAPI 개발' 자체에 초점을 맞춘 내용에 충실한 도서입니다.

그래서 아주 기초적인 파이썬 지식과 데이터베이스 지식은 스킵하고 정말 개발을 실습해보는 과정에 초점이 맞춰져있기 때문에

컴팩트하고 효율성있게 FastAPI를 간단하게 실습 해 보는데 정말 좋은 책이라고 생각됩니다.

 

 

 

구체적으로 각 챕터별 다루는 부분들에 대해서 리뷰 해 보겠습니다.

 

 

 

1. 개발환경과 FastAPI 준비

첫 번째 챕터에서는 FastAPI를 실행하기 위한 Docker를 이용한 환경설정, 파이썬 기초 등을 설명합니다.

파이썬 기초라고 하지만 반복문, 조건문 등 아주 기초적인 내용은 배제하고 백엔드를 다루기 위해 필요한 클래스, 데코레이터에 대한 개념을 설명합니다.

 

프레임 워크를 위한 환경설정을 위해 개발 환경별로 환경 설정 해 주는 방법이 다 다르죠.

책에서는 Mac, Linux 환경에서 설정하는 방법, Window에서 설정하는 방법을 따로 분리해 Window에서 설정한다면 주의해야 할 점 등 유의사항들도 함께 기록해두었습니다.

실습을 따라하는데 있어 오류가 나면 정말 (...) 당황스러운 일인데 미리 주의해야 할 점을 알려주는 것이 좋았습니다.

 

FastAPI 환경설정 실습 결과

 

저도 다음과 같이 FastAPI 를 이용해 원하는 메세지를 출력하는 실습을 해 보았는데요

도커를 이용해서 실습 환경을 제공해주기 때문에 환경 설정 조건에 골 아파할 필요 없이

필요한 부분들을 배워가며 금방 구현해 볼 수 있었습니다.

(ㅎㅎ 코드대로 움직이는 게 의심이 되어 메세지를 바꾸어 출력해보았습니다.)

코드에 대한 설명

이렇게 코드에 대해 중간중간 설명을 해주는 부분이

프레임 워크가 어떤식으로 동작하는지를 나타내주기 때문에 기초 파이썬에 대한 지식이 있는 분이라면

손쉽게 FastAPI 를 접해 볼 수 있는 좋은 도서라고 생각됩니다.

 

 

2. FastAPI 애플리케이션 구현

본 도서에서는 간단한 ToDo 앱을 구현하는 것으로 FastAPI 를 실습해보고자 합니다.

 

2장 FastAPI 애플리케이션 구현에서는 라우터, DB를 이용해 ToDo 앱의 기능들을 분할하여 코드를 구성하고 FastAPI 를 이용해 웹을 통해 기능 동작을 확인하면서 ToDo 앱 구현 실습을 본격적으로 진행합니다.

Router를 이용해 실행한 모습

 

아.. 1챕터까지 실습하고 docker container는 써봤지만 docker compose를 처음 써봐서 이것저것 누르다가

계속 위의 페이지가 뜨지 않고 오류가 나서 고생했는데

알고보니 http 경로 문제였습니다.. (책.. 꼼꼼히 읽기😞)

/docs 꼭 입력하기 ... 그래야 Swagger UI 로 접속됩니다.

 

(몇 번을 이미지를 빌드한거..)

 

여기서도 Pydantic 모듈이 사용되는데요, Pydantic은 파이썬에서 데이터 모델을 정의하고, 데이터 유효성을 검사하는 라이브러리입니다. 따라서 타입 힌트를 적극적으로 활용하여 FastAPI와 함께 API 입출력 검사를 수행하는데 사용됩니다.

당황스러운 더이상 사용되지 않는 메서드...

모델에서 라우터의 요청과 응답을 위해 Pydantic 모듈을 사용하는데,

Pydantic 에서 더 이상 BaseModel 에서 dict 메서드를 지원하지 않기 때문에

혹시 서평을 보고 책을 구매해서 함께 실습하시는 분이라면

.dict() 가 아닌

.model_dump()

 

메서드를 사용해보시기를 권장드립니다.

DB 연결 모습

 

sqlalchemy 프레임워크를 이용하여 mysql 과 연동하여 DB 테이블을 생성하였습니다🙃

 

이후에는 CRUD 를 적용합니다.

CRUD란? 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create, Read, Update, Delete를 말합니다.

Todo 앱을 만들기 위해 CRUD 를 적용하여 create task, read task, update task, delete task 등을 구성합니다.

 

CRUD 구현

 

Done 모듈까지 말무리해주었습니다. 실행시 실행 횟수에 따라 index가 생성되게 되는데 delete 기능을 구현하여 2번 인덱스 task를 제거해주었고, 1번 인덱스의 타이틀을 수정하여 업데이트 기능이 잘 동작함을 확인했습니다.

 

이렇게 CRUD를 구현하고 나면

비동기 처리를 거치는 코드로 변환하는 실습을 또 한번 진행합니다.

 

또한 HTTP 상태를 추가하여 최종적으로 유닛 테스트까지 거치는 실습을 진행합니다.

유닛 테스트 결과

 

pytest 모듈을 이용하여 유닛 테스트를 진행해주며, 이후 parametrize 테스트 과정에 대해서도 실습합니다.

 

유닛테스트 결과를 보면 아쉬운 점이

pydantic 모듈이 대규모 업데이트를 거치면서 많은 메서드가 이름이 변경되거나 대체된 듯합니다.

 

원본 도서도 23년 출판되었는데 벌써 이렇게 많은 것들이 변화했다는게 ...

해서, 해당 도서를 공부하면서 pydantic 공식 docs를 함께 참고하시면 많은 도움이 될 듯 합니다.

 

 

3. 클라우드 플랫폼에 배포하기

앱의 필요 기능들이 구성되고 테스트 까지 거치고 나면 남은것은 앱을 사용자들이 쓸 수 있도록 배포하는 것입니다.

책에서는 AWS, GCP를 이용한 두 가지 배포 방법에 대해 설명합니다.

Tip

책 중간중간에 다음과 같은 메모를 통해 관련 개념을 설명해주는 것이 굉장히 도움이 되는 포인트입니다.

종종 그림과 함께 설명해주기도 하고, 버전이 변화하면서 생긴 문제점들 같은 것들을 설명해주기도 합니다.

 

클라우드 배포의 경우는 계정을 만들고 과금되지 않도록 확인하면서 진행해야 하는 번거로움이 있어

이번 서평을 진행하면서 실습해보지는 않았습니다. 기회가 된다면 실습을 천천히 진행하여 본문에 추가해보도록 하겠습니다🙃

과금을 걱정해주는 친절한 도서...

 

FastAPI를 처음 접하거나 공부해보려는 분이라면

꼭 모든 내용을 이해하지 않더라도 API를 이용한 애플리케이션의 개발과 배포가 어떤식으로 이뤄지는지

시스템을 이해하기에 좋은 도서라고 생각됩니다. FastAPI에 DB를 연결하고 CRUD를 적용해보면서 앱 개발 시스템이 어떻게 진행되는지 실습해보는데 너무 좋은 경험이었습니다.🙌