|
불과 1년 전만 해도 FastAPI 학습 서적이 한빛미디어에서 발간된 책 1권 정도 밖에 없었다. <FastAPI를 사용한 파이썬 웹 개발> 이 책이 바로 그 책인데 당시에 나는 베타리더로 참여했었다. 거의 최초로 발간된 FastAPI 책이라 발간되고 나서 의미가 남달랐다. 그 이후로 FastAPI를 다룬 책이 몇권 더 늘었다. 그리고 동 출판사에서 FastAPI 서적이 또 발간되었다. 이 책은 사실 나와 에피소드가 있는 책이다. FastAPI는 현재 생성형 인공지능 모델 붐으로 학습 곡선이 짧고 프레임워크의 가볍다는 이점 때문에 인공지능과 관련된 웹 개발에서 많이 채택이 되고 있었다. 그래서 Amazon에서 찾아보다가 이 책의 원서가 발간된 것을 알았고 여러 출판사에 번역 제안을 했는데 아쉽게도 이미 번역 판권 계약이 되어있는 책이라는 회신을 받았다. 그래서 이 책의 원서가 한국어로 번역이 될 것이라는 것을 미리 알았고 기다리면서 많이 기대를 했다. 이 책은 처음부터 끝까지 하나하나 꼼꼼히 코딩을 하면서 리뷰를 했다. 내 관심 분야이기도 하고 내가 역량을 높여야 하는 분야이기 때문이기도 했다. 이 책의 차별성이라고 하면 FastAPI의 핵심이기도 한 Starlette와 Pydantic을 좀 더 자세하고 Cryptid라는 가상의 주제로 애플리케이션을 만들었다는데에 있다. Creature(생명체), Explorer(탐험가)라는 가상의 이야기를 만들고 이를 통해 FastAPI로 프로그램을 구축해나간다. 그러다보니 흥미도 자아내고 웹 프레임워크를 재미있고 친숙하게 받아들이게 만든다. 컬러풀한 디자인과 캐릭터로 구성되어 있는 책은 아니지만 본연의 목적인 웹 프레임워크를 익숙하게 하는데에 최적의 구성이라고 생각한다. 그리고 이 책의 가장 강력한 점은 디자인 패턴으로 세 개의 계층으로 나누어 서비스를 설계했다는 점이다. 세 개의 계층은 외부에서 시작하여 웹 - 서비스 - 데이터로 이루어져 있다. 이런 식으로 디자인 패턴을 사용해 웹 프레임워크를 설명하는 것은 거의 보지 못한 것 같다. 그렇다보니 큰 차별성이 엿보였다. 그리고 보통의 파이썬 웹 프레임워크는 뷰, 그러니까 프런트엔드에 해당하는 부분에 꽤 많은 분량을 할애한다. 보통 템플릿이라고 부르고 Django 외에서는 Jinja라는 것을 많이 쓴다. 웹 프레임워크를 진짜 제대로 만드는 곳에서는 이 템플릿 부분을 파이썬으로 작성하는 경우는 정말 드물다. 그렇기 때문에 과감히 템플릿 부분을 제외하고 DB, 인증 및 인가, 디자인 패턴, API 설계 부분에 집중한 것은 정말 다른 책에서도 배워야 하는 부분이라 생각한다. |
|
개인적으로 동시성처리는 어떻게 처리하든 프레임워크를 통한 개발 편의성과 코딩 방법의 차이일 뿐이지, 결국 성능의 확연한 차이를 내지는 않는다고 생각하고 있는데, FastAPI의 경우 병렬 처리를 쉽게 구현할 수 있도록 그 나름의 설계를 가진 것으로 보였다. 작업을 여러 조각으로 나누고(이 조각이 하나의 작업일수도 있겠다.) 하나의 컴퓨터 내에서 병렬 처리 지원을 넘어서 여러 컴퓨터에서의 병렬 처리까지 프레임워크에서 지원하는 것으로 보였다. 그린스레드는 게임 이브 온라인에서 아이디어를 얻은 것으로 소개되고 있었다. 이브 온라인은 병렬, 분산 처리를 잘 구현한 대표적인 게임 서버 중 하나로 평가받고 있다. 정확히는 모르는데 파이썬의 함수들을 몽키 패칭(프로그램 실행중에 파이썬 표준 함수를 수정하는 일)해서 동시성 코드를 일반적인 절차형 코드처럼 보이게 한다고 한다. 파이썬에서 async/await 문법을 사용해 병렬 처리 하는 기법도 소개되는데 결국 await는 작업이 대기 큐에 들어가 3초간 기다린 다는 것이고 이후 실행될 작업은 서로 의존적이지 않을 시, 미리 처리되어 3초 후 처리된 결과를 보여줄 수 있는 내용으로 보였다. 대부분의 스크립트 언어는 역사적 이유가 있겠지만 암시적 타입 변환에 유연한 편인데, 이것이 오히려 프로그래밍에 골치거리를 안겨줄 때가 많았다. 이를 해결하기 위해 Typescript같은 것들이 나왔고 파이썬에선 여러 라이브러리를 사용해 대응하고 있는 것으로 보인다. Pydantic을 기본적으로 사용해 타입 힌트를 주는 기능을 사용할 수 있는 것으로 보인다. Pydantic을 린터나 IDE와 함께 사용해 더 편리한 프로그래밍을 할 수 있는 것으로 보인다. 의존성에 대해서도 소개되고 있는데 의존성이란 어떤 시점에 필요한 특정 정보를 말한다고 한다. DI로 잘 알려진 의존성 주입은 필요한 특정 정보를 함수에 전달하는 것이라 하고 이를 수행하는 전통적인 방법은 Helper 함수를 전달한 다음, 이를 호출해 특정 데이터를 가져오는 것이라 한다. 나는 이런 방식의 사용을 해 본적은 없어 정확히는 알고 있지 못한다. FastAPI에선 의존성을 함수의 인자로 정의할 수 있게 설계된 것으로 소개되는데 정의된 의존성은 FastAPI에서 자동으로 호출되고 결과 값을 인자에 전달한다고 한다. 의존성 함수를 인자로 넘기는 것으로 생각됐다. HTTPS와 Let's Encrypt(무료 HTTPS 디지털 인증서 서비스로 알고 있다.)가 간단히 소개됐으며 도커와 쿠버네티스에 대해서도 소개가 됐다. 도커는 여러 가상머신을 띄우는 것보다 가볍고 (서비스 별로 가상 OS를 따로 띄우지 않으니...) 쿠버네티스는 복잡합 서비스 인프라에 유연하게 대처할 수 있는 배포 기능을 포함한 로드밸런싱/스케일링/모니터링(아마도 제공할 것이다.) 등의 기능을 제공하는 것으로 보였다. 이 글은 한빛미디어로 부터 책을 증정받아 작성되었습니다.
|
![]() 1. 이 책이 다루는 내용 - 웹기술 - 파이썬 - FastAPI 2. 책 구성 CHAPTER1 모던 웹 CHAPTER2 모던 파이썬 CHAPTER3 FastAPI 둘러보기 CHAPTER4 Starlette 비동기,동시성 CHAPTER5 Pydantic과 타입 힌트,모델 CHAPTER6 의존성 CHAPTER7 프레임워크 비교 CHAPTER8 웹 계층 CHAPTER9 서비스 계층 CHAPTER10 데이터 계층 CHAPTER11 인증 및 인가 CHAPTER12 테스트 CHAPTER13 프로덕션 CHAPTER14 데이터베이스와 데이터 과학,AI CHAPTER15 파일 CHAPTER16 양식과 템플릿 CHAPTER17 데이터 탐색 및 시각화 CHAPTER18 게임 3. FastAPI 2018년에 세바스티안 라미레즈가 발표한 파이썬 기반 웹프레임워크 파이썬 3에 추가된 기능을 활용해 대부분의 파이썬 웹프레임워크보다 여러면에서 현대적인 프레임워크다. . 파이썬 타입 힌트 . 비동기 지원을 포함한 웹 머신용 Starlette . 데이터 정의 및 유효성 검사를 위한 Pydantic . 다른 기능을 활용하고 확장할 수 있는 특별한 통합 기능 위 기능을 조합해 웹 애플리케이션, 특히 RESTful 웹 서비스를 위한 쾌적한 개발 환경을 제공한다. 4. 저자 읽고 배운 도서 소개 . Building Data Science Application with FastAPI(Packt, 2021) . Building Python Microservices with FastAPI(Packt, 2022) . Microservice APIs(Manning, 2023) 5. 소감 . FastAPI에 대해 알고 싶거나 현재 경향이나 사용빈도등을 참고해 볼 수 있는 자료가 정리되어 있다. . FastAPI에 대한 소개 및 빠르게 실습해 볼 수 있는 책이다. . FastAPI를 사용하기 위한 개념들에 대한 정리와 FastAPI에서 제공하는 도구에 대한 사용법이 정리되어 있어 전반적으로 웹의동작원리와 구조를 알수 있어서 좋은 것 같다. . 마지막 4부에서는 양식, 파일, 데이터베이스, 차트와 그래픽, 지도, 게임 등 일반적인 웹이 기능에 FastAPI를 적용하는등 실질적으로 써먹을 수 있는 내용도 실습해 볼 수 있다. . FastAPI에 대해 전반적으로 개념을 잡고, 실습위주의 책을 원하면 그에 적합한 책인 것 같다. 6. 한줄소감 . FastAPI 개념잡고 실습하며 빠르게 훑어보기 |
| FastAPI에 대한 기본에서부터 웹 서비스 개발을 위해 고려해야하는 기술들을 포함하여 빠르고 쉽게 웹서비스 개발이 가능합니다. 이미 FastAPI에서 제공하는 기술들이 많아서 이를 활용하기만 하면 되며 적절하게 들어가 있는 예시들 덕에 이해하기도 쉬웠습니다. |
처음 시작하는 FastAPI이 책은 웹 개발과 파이썬을 통합하여 최신 기술을 활용하는 방법을 체계적으로 설명한다. "모던 웹과 파이썬"에서 시작하여 FastAPI를 중심으로 웹 애플리케이션 개발을 다루고, 실제 웹사이트 구현, 데이터 처리, 인증, 테스트, 배포 등의 주제를 포괄적으로 다룬다. PART 1: 모던 웹과 파이썬CHAPTER 1: 모던 웹이 장에서는 현대 웹의 기본 개념을 소개한다. 서비스와 API, 동시성, 계층, 데이터 등 웹 개발의 핵심 요소를 다룬다. 각 개념을 구체적으로 설명한다. CHAPTER 2: 모던 파이썬파이썬의 도구와 시작 방법, API 및 서비스, 변수, 타입 힌트, 데이터 구조, 웹 프레임워크 등을 설명한다. 파이썬의 최신 기능과 이를 활용하는 방법에 대해 구체적인 예제와 함께 설명하여 실무에서 바로 적용할 수 있게 돕는다. FastAPI의 타입 힌트 기능은 파이썬의 타입 힌트 시스템을 기반으로 작동하며, 이를 통해 코드의 가독성, 유지보수성, 그리고 API의 자동화된 검증 및 문서화를 제공한다. PART 2: 빠르게 보는 FastAPICHAPTER 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를 통한 웹 개발의 모든 측면을 포괄적으로 다룬 훌륭한 참고서이다. 다음은 "지은이의 말"이다. 이 리뷰는 한빛미디어의 나는 리뷰어다 이벤트를 통해 책을 제공받아 작성했습니다. |
|
최근들어 FastAPI라는 프레임워크를 언급하는 이야기를 여러 차례 듣게 되었습니다. 일하는 분야가 프론트엔드 쪽이고, 지금 다니는 회사도 스프링 쪽을 백엔드로 사용하고 있기 때문에, FastAPI라는 프레임워크를 접할 기회가 전혀 없었는데 말이죠. 저는 파이썬도 파이썬 백엔드도 사용하지는 않지만, 그동안 읽었던 책을 통해서 Django와 Flask가 이 분야를 양분하고 있다는 것 정도는 알고 있었습니다. 개발자로서 당장은 사용하지는 않아도 언젠가 쓸지도 모를 기술이라면 어떤 기술이 있고, 어디부터 시작해야 하는지 정도는 계속 모니터링하고 있어야 한다는게 개인적인 지론이라, 파이썬과 파이썬 백엔드 쪽에도 드문 드문 책을 봐 왔거든요. 그런데 최근 FastAPI라는 새로운 프레임워크에 대해서 언급되는 걸 건네 듣다보니 FastAPI가 뭔지 궁금하게 되었습니다. FastAPI에 대한 호기심이 생기던 찰라, 이 책에 대한 리뷰를 할 기회가 생겼네요. 그럼 현재 상황 부터 짚어봐야 하는데요. 저자는 본문 47쪽에서 github의 '스타' 수를 가지고 파이썬 프레임워크의 추세를 설명합니다. 2023년말 FastAPI는 Flask의 스타 수를 앞질렀다는 걸, 그래프로 보여주거든요. 그렇다면, 지금이 FastAPI를 공부할 적기 일지도 모르겠네요. FastAPI가 급부상한 이유가 뭘까요? 제가 느끼기에는 "의존성 주입"과 "비동기성"인것 같습니다. 의존성 주입은 상당히 일반적인 소프트웨어 아키텍처 개념인데요. A라는 기능을 가진 함수(또는 모듈, 서비스...)를 사용하는 B라는 함수는 A라는 함수의 구현 방식, 상태등을 의존할 수 밖에 없습니다. 호출하니까요. 하지만 이걸 역전시켜서 의존하지 않게 만든 다음 마치 부품처럼 끼워 넣어서 쓰겠다는 개념입니다. 이건, 스프링 프레임워크에서도 기본적으로 사용하고 있고, 앵귤라 쪽 프론트엔드 프레임워크에서도 사용하고 있습니다. 이렇게 '의존성 주입'이라는 개념을 프레임워크가 깔끔하게 제공해주면, 구현 코드는 유지보수가 쉬운 코드가 되거든요. 또한 "비동기성"은 서버의 구현방식의 문제인데요. 서버에 대한 클라이언트의 요청을 단순히 이벤트를 발생시켜서 대응하느냐 또는 쓰레드 같은 리소스를 할당해서 대응하느냐의 기술적인 차이입니다. node.js같은 서버는 이걸 이벤트 발생 방식으로 해서 크게 이목을 집중시켰거든요. 이 책을 보면서 처음 알았는데요. 파이썬 백엔드 분야에서도 이미 이런 방식으로 구현할 수 있는 스팩도 만들어져 있었더군요. (ASGI) 책을 읽으면서 저자가 책을 맞갈나게 쓴다는 생각을 하게 되었습니다. 마치 큰형에게 설명을 듣는 것 같더군요. 이 분야에 대해서 흥미로운것들도 간간이 언급해주고, 더 공부하려면 어디로 가야 할지를 메모해주거든요. 책 제목에 "처음 시작하는"이라는 말이 들어간 이유가 여기 있겠다 싶었습니다. 개념이 필요한 부분에 대해서는 조금 원초적인 이야기 부터 시작해서 FastAPI가진 개념까지 설명하고, 구현하고 응용해보는 설명에 대해서는 저자의 예제에서만 머무르지 않고, 어디로 공부해 나가야 할지 참고할 URL을 정말 많이도 나열했더군요. 게다가 예제들은 너무 쉬운 내용들이라서, 파이썬을 처음 배우고 이 책을 바로 읽기 시작했다고 하더라도 무리 없이 따라갈 수도 있겠다 싶었습니다. 요즘 저는 BFF(Backend For Frontend)라는 개념에 관심을 가지고 있습니다. 즉 프론트엔드를 위한 백엔드 서버죠. 여러 이유가 있는데요. 중복되는 UI 컴포넌트를 백엔드 API에 데이터를 받아서 보여줄 때마다 일일이 그리게 만들게 아니라 BFF에서 한번 만들어서 그 결과만 던져주고 빠르게 그려줄 수 있고요. 여러 API 서버들과 통신하는 번거로움이나 프론트엔드 보안적인 측면, 그리고 AI 서비스들을 가져다가 새로운 서비스를 만들려면 BFF가 절실하겠다 싶거든요. 그런 상황에서 이 책처럼 가벼운 백엔드 서비스 프레임워크의 개념과 방향성을 설명하는 책은 많은 도움이 되었습니다. 아니 이번 기회에 개인적인 프로젝트를 FastAPI로 시작해보는 것도 재미있을 것 같네요. 한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. |
![]() 이상하게 들리겠지만 FastAPI가 주인공입니다. 다양한 파이썬 프로젝트 자료나 샘플에서 FastAPI를 사용하는 걸 볼 수 있었습니다. 주로 접근하기 쉽고 간단한 데다 빠른 반응 속도 때문에 사용한다는 설명이었습니다. 해당 자료나 샘플에서 보여주고자 하는 건 따로 있었고 FastAPI는 API를 위한 도구 정도였습니다. 저처럼 FastAPI를 제대로 알고 싶은 분들에게 도움이 되리라 생각합니다. 웹 API 개발에 집중합니다 웹 프레임워크니 당연하다고 생각할 수 있습니다. 하지만 생각만큼 쉽지 않은 경우를 많이 봤습니다. 뭐가 어떻게 돌아가는지 기능들을 얘기하다 보면 깔끔하고 멋진 기능에 쏠릴 수 있습니다. 필요한 내용이고 알아야 하기에 그것만으로는 별 문제가 없습니다. 정작 서비스를 개발하려면 문제가 드러나기 시작합니다. 뭔가 많은 내용을 보기는 했는데, 어디에서 어떻게 구현해야 하는지 방황하기 쉽습니다. 서비스 개발을 목표로 하여 내용을 풀어나갑니다. 서비스를 제공하기 위해서 필요한 역할과 구성, 각 구성에 있어야 할 기능들을 알려줍니다. FastAPI 프레임워크 자체뿐만 아니라 FastAPI로 웹 서비스를 어떻게 만드는지 전체를 볼 수 있습니다. 코드 차이를 짚어줍니다 파이썬 버전이 자주(?) 업그레이드됩니다. 저도 궁금해서 파이썬 사이트에서 확인해 보니 최근 5년 동안 1년 주기로 버전 업데이트가 있었습니다. 뜬금없이 버전 얘기를 하는 이유는 FastAPI도 파이썬 버전 업그레이드를 적극적으로 받아들이며 업그레이드하는 것으로 보이기 때문입니다. FastAPI 사이트에서도 같은 코드를 적어도 3가지 이상의 파이썬 버전으로 알려주고 있습니다. 이 부분 때문에 발목 잡히는 경우가 있습니다. 제가 그랬으니까요. 검색해서 찾은 페이지들이 설명하는 내용은 같은데 풀어놓은 코드 구문이 다르니, 이건 또 뭔가 해서 다시 찾아야 했던 경우가 많았었습니다. 페이지마다 작성된 시점의 파이썬 버전이 다르니 구문에 차이가 있을 수밖에요. 얘기가 길어졌습니다. 책에서는 코드 곳곳에 이런 상황이 발생하면, 왜 그런지 꼼꼼히 짚어줍니다. 엉뚱한 부분에서 헤매지 않고 내용에 집중하는데 큰 도움이 됩니다. 필요한 것들을 챙겨놓았습니다 웹 API 개발에 신경 쓰다 보면 소홀히 할 수 있는 부분들이 있습니다. 파일 업로드, 다운로드, 정적 파일, 템플릿 적용 같은 것들입니다. FastAPI 가 다른 프레임워크에 비해 상대적으로 최근에 발표된 프레임워크라 검색 결과 자료가 적은 게 사실입니다. 그런 자료들은 강점인 API 개발 쪽을 강조하다 보니 웹프레임워크로서 지원하는 부분에 대한 설명이 아쉬운 경우를 종종 봤습니다. 책에서는 이런 부분을 빠트리지 않고 설명합니다. 프레임워크에서 어떻게 해야 하는지 알려줍니다. 응용하고 확장하는 부분은 독자몫으로 남겨두었더군요. FastAPI 서적 자체가 몇 권 없습니다. 프레임워크가 계속 릴리즈 되고 있기 때문이라는 생각도 듭니다. 사이트와 함께 FastAPI를 이해하고 활용하는데 좋은 가이드/기준이 될 수 있겠다는 생각입니다. "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |
|
?'간결한 코드로 빠른 프로토를 만들어내고 싶을 때는 이에 맞는 도구를 사용해야 한다.' 필자는 평소 파이썬과 같은 스크립트 언어는 단순한 테스트를 구성하거나 (API 용 테스트) 아니면 shell 기반으로 자동화된 처리 프로세스를 구성할 때 애용하는 편이였다. 그런데, 이번에 리뷰하게 된 FastAPI는 파이썬 기반의 'dJango'와는 다른 훨씬 단순화되었지만 강력한 기능들을 제공해 주는 백엔드용 프레임 워크였다. 무엇보다 프로젝트 멘토링을 진행하고 있는 상황에서 해당 팀에서 위의 기술을 사용한다고 하여 상당히 반가운 마음이 큰 책이었다. 【책의 구성】 "처음 시작하는 FastAPI"의 구성은? 위 책은 총 4개의 파트로 구성되어 있으며 각각의 파트는 총 18개의 챕터로 구성되어 있다. 이외로 2개의 읽어볼 거리를 추가로 제공해 주고 있어서, 독자로 하여금 FastAPI와 관련된 자료를 보다 효과적으로 찾을 수 있는 팁을 제공하고 있다. (관련 사이트에 대해서 열거하고 있음) 이 책은 여느 IT 전문서와 비슷하게 개념에 대해서 정리하여 소개한 후, 최종에는 해당 내용을 정리하는 순으로 구성되어 있다 챕터 7 : 프레임워크 비교 이 장에서는 Flask와 Django와 같은 python 기반의 웹 프레임워크와 FastAPI의 차이점을 비교한 내용이 정리되어 있다. 본문의 예시로 든 코드로 보건대 같은 기능을 구현하더라도 확실히 Flask보다 FastAPI의 코드가 훨씬 간결하였고 가독력 면에서도 뛰어났다. 그만큼 FastAPI를 사용하는 개발자에게 공개된 interface가 상당히 추상화되고 간결화됨을 의미했으며, 많은 면에서 개발자가 몰라도 될 부분들은 철저히 캡슐화 혹은 하이딩 하였음을 알 수 있었다. 챕터 11 : 인증 및 인가 이 장에서는 인증 (oauth)에 관한 구현 법이 설명되어 있다. FastAPI를 사용하여 인증 기능을 도입하기 위해 필요한 최소한의 모델 설계 법과 인증 정보 관리를 위한 DB 설계 법 등이 수록되어 있으므로 인증 관련 구현에 대해서는 이 부분만 어느 정도 들여다보아도 그 Flow를 충분히 이해할 수 있을 것이라 보였다. 챕터 18 : 게임 지금까지 학습한 내용을 기반으로 간단한 게임을 만드는 방법을 소개한 챕터이다. 책의 전반과 중반에 소개하였던 내용들을 심도 있게 학습하였다면 위 실습을 따라 하기에 어려움이 없으므로 꼭 이 책을 전부 학습하였다면 꼭 살펴보길 권장하는 챕터이다. 【 처음 시작하는 FastAPI를 읽고 나서 】 시대가 시대인 만큼 개발에 필요한 코드의 양이 점점 간추려지는 것이 요즘의 개발 트렌드인듯하다. 예전에는 몇십 줄에 달해 구현해야 했던 기능들이 이제는 단 몇 줄이면 이전과 같은 기능을 수행하거나 혹은 그 이상의 기능을 수행하고 있기 때문이다. 그렇다고 마냥 이러한 기술 트렌드가 좋다고만은 할 수 없다. 내부에서 관련 기능들이 어떻게 처리되는지 캡슐 화가 되었을 뿐, 개발자가 관련 내용을 전혀 몰라서는 안 되기 때문이다. 따라서 시대의 흐름이 아무리 편한 것을 추구할지라도 훌륭한 개발자로 거듭나길 희망한다면 스스로 CS 학의 내부를 들여다볼 적극적인 의지를 가져야 할 시대가 온듯하다. #본 도서는 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. |
|
파이썬 웹프레임워크라고 하면 장고, Flask, FastAPI 를 들어봤을 것이다. 최근엔 빠른 속도와 간편한 개발로 인기를 끌고 있으며, 장고에 이어 2번째로 많이 사용된다고 하니 배워두면 좋을 것 같다. 또한 백엔드 채용 공고에서도 FaskAPI를 근래에 종종 볼 수 있다. 우선 책에는 18개의 챕터로 구성되어 있다. FastAPI를 소개하고, 웹사이트에 필요한 기능들을 하나씩 배워볼 수 있으며, DB, 파일, 데이터 검색, 게임 등 어떻게 사용해야되는지 알 수 있다. 다만 많은 주제를 다루고 있기 때문에 심화적인 부분은 부족하다. 책 제목처럼 처음 시작하는 분들이 빠르게 내용을 훓어보고 이해하기엔 좋은 것 같다. 끝으로 가볍고, 비동기 기능이 지원되며, 자동 문서화와 보안기능을 쉽게 구현할 수 있도록 도와준다고 하니 웹 개발자라면 한 번 꼭 어떤 프레임워크인지 배워도면 좋을 것 같다. * 공식사이트: https://fastapi.tiangolo.com/ko/ 'YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다' #리뷰어클럽리뷰 |
|
금일 리뷰할 책은 한빛미디어 출판사의 처음 시작하는 FastAPI입니다. 우선 저는 FastAPI를 돌아올 2학기때 사용하여 프로젝트를 진행하려 하는 대학생입니다. 따라서 방학 기간동안 TypeScript와 FastAPI의 학습을 염두에 둔 상태에서, 해당 도서의 서평단에 지원하여 해당 도서를 지원받고 리뷰를 작성하였습니다. 'YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다' 처음 시작하는 FastAPI라는 이름에 걸맞게, 이 책의 시작 부분은 매우 기초적인 이야기부터 시작하고 있습니다. 모던 웹에 해당하는 서비스와 API부터 시작해, 파이썬의 기초적인 부분을 담은 후, FastAPI에 대하여 이야기하고 있습니다. 그렇게 독자가 기초부터 이해할 수 있도록 구성되어져 있으며, 기초를 다진 후 빠르게 FastAPI를 한번 훑어보고 다시 한번 상세하게 FastAPI를 알아보고는 더 심화되게 활용하는 부분으로 책이 이뤄져 있습니다. 책 자체는 300페이지 대의 책임에도 불구하고, 상당히 많은 내용들을 함축하고 있는 책입니다. 저는 총 18개의 챕터 중 저에게 필요할 것 같은 챕터 13 프로덕션 부분까지 학습하며, 해당 책의 장점을 느끼고 서평을 작성하였지만, FastAPI 프레임워크와 그 주변 생태계까지 광범위하게 살펴보며 알려주는 해당 책의 자세함에 상당히 고평가를 할 수밖에 없었습니다. Starlette와 Pydantic과 같은 내용은 저 또한 공부하면서 처음 보는 내용이기 때문에 당혹스러울 수밖에 없었으나, 해당 개념에 대하여 자세하게 설명하고, 각각에 대해서 추가적으로 비동기, 동시성과 타입 힌트, 모델 부분을 알려주어 추가적인 개념으로 이전에 이해하던 개념에 대한 이해도를 더더욱 높일 수 있었다고 생각하여, 이 책의 구성 요소와 순서에 대하여 호평을 표할 수 밖에 없었습니다. 파이썬의 웹 프레임워크 중, "FastAPI가 최고다!"라는 것은 아니지만, 현재의 추세를 볼 떼, Django와 Flask보다 더 학습에 있어서 용이하고, 많은 사람들이 시간이 갈수록 더 사용하고 있다는 생각이 듭니다. 자바 웹 프레임워크 대신에 파이썬 프레임워크에 관심이 있으시고, 저처럼 처음으로 FastAPI를 학습하려는 독자 분들께 아주 두껍지 않은 두께로 기초부터 차곡차곡 쌓아갈 수 있도록 도와줄 책으로 한빛미디어 출판사의 처음 시작하는 FastAPI를 추천 드립니다. #리뷰어클럽리뷰 |