처음 시작하는 FastAPI – 책 소개

🗓️

빠르게 시작하는 웹 프레임워크

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

  • 원제 : FastAPI: Modern Python Web Development
  • 저자 : Bill Lubanovic
  • 출간 : O’Reilly Media, 2023 / 한빛미디어, 2024

웹 서비스를 구성하는 요소 중에 비즈니스 요구사항을 처리하고, 데이터의 가공과 저장을 하고, 보안의 위협에서 적절한 조치를 해야하는 백엔드 어플리케이션은 없어서는 안되는 요소다. 웹 어플리케이션은 원래 정적 페이지로부터 시작되어 자바스크립트로 시작된 동적 처리에서 마침내 대용량 처리와 영속성을 위해 프로그래밍 언어를 도입해 PHP에서 RoR에서 스프링 프레임워크 까지 그 기세가 그칠줄을 모른다. 허나 과도한 레이어링과 결과물에 도달하기까지 필요한 어마무시한 보일러플레이트를 보고있자면 생산성 면에서는 점점 역행하고 있는것이 사실이다. 이러한 상황에 힘입어 자바스크립트의 node.js, 파이썬의 flask 같은 ‘빨리 시작하기 좋은’ 웹 프레임워크가 각광받게 된 것도 꽤 오래된 이야기다.

오늘은 그중에서도 파이썬의 FastAPI를 이야기하는 좋은 책이 있어 소개해보려고 한다. 책은 320페이지 내외로 기술서적 치고는 부담없이 읽을 수 있다. 다만 이 책이 다른 웹 프레임워크 서적과 달리 괜찮았던 점은 입문자를 생각해 백엔드 어플리케이션을 개발 할 때 꼭 알아야하는 지식과 고려해야 할 점에 대해서 이해하기 쉽게 설명하고 있는 점이다. 단순히 웹 프레임워크을 기술하는 책은 많다. 첫장부터 사상과 역사가 어떻게 됐는지 한참을 설명한다. 이런 무거운 내용들은 초심자가 보기에 어렵다. 대신 이 책은 모던 웹이라는 가벼운 주제로 백엔드 어플리케이션에 필요한 RESTful, 어플리케이션 계층 구조에 대해 짧게 설명하고 바로 FastAPI 이야기로 들어가는게 아니라 주변의 상황이 어떤지 설명하며 FastAPI가 가진 입지에 대해서 이야기한다.

이 책은 초심자를 위하기도 하지만 마치 타 프레임워크 개발자들을 위해 “우린 이런 입장이고 더 세력을 확장하고 있는데 관심있어?” 라고 하듯 FastAPI가 빠른 개발을 위해 얼마나 합리적인지 차근차근 설명한다. 이 책은 FastAPI에 관해 다루기 때문에 파이썬의 기본 문법에 대해서 다루지는 않는다. 그러나 타 언어 개발자라면 개발시 사용하는 스킬이 되는 비동기, 스레딩, 타입힌팅, 영속성, 인증, 인가는 빼놓을 수 없는데 이것을 파이썬으로 어떻게 녹여내고, FastAPI로 구현하는지 저자는 설명한다. 파이썬이라는 언어의 컨셉만큼 스팩으로 갖춰져있진 않지만 라이브러리를 통해 이것들을 구현하는 점은 흥미로웠다.

더불어 백엔드 개발 초심자를 위한 내용도 풍부하다. 앞서 타 언어 개발자들이 관심있어하는 키워드 외에도 HTTP, RESTful, 데이터베이스 기초, 파일 IO, 심지어 모킹, 스텁, 페이크가 포함된 테스트 구현에 대해서도 설명하고 있다. 그래서 처음에 이야기했던 것 처럼 이 책은 단순히 FastAPI라는 웹 프레임워크를 소개하는 책이 아니라 백엔드 어플리케이션을 개발하기 위한 전반 지식에 대해 소개하는 책이라고 했던 것이다.

책에서 소개하는 FastAPI를 구성하는 도구 또는 라이브러리를 몇개 적어본다.

  • Uvicorn : 비동기 웹 서버
  • Requests: 동기식 웹 클라이언트
  • HTTPX: 동기/비동기식 웹클라이언트
  • async, await, asyncio : 파이썬 비동기 처리
  • Pydantic : 모델, 타입힌팅
  • pytest: 테스트

파이썬은 인터프리터라는 특성으로 별도의 빌드나 기동시간 없이 즉시 시작 가능하다는 장점이 있다. 강타입 언어에 비해 자유로운 자료구조로 빠른 개발이 가능하다. 그러면서도 타입힌팅을 통해 설계의도와 유지보수의 용이성을 같이 가져갈 수 있다고 생각한다. 만약 백엔드 개발을 고민하고 있는 초심자가 있다면 ‘백엔드 개발의 개요’ 정도로 강력 추천하고 싶은 책이다.

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.