본문 바로가기

book

FastAPI로 배우는 백엔드 프로그래밍 with 클린 아키텍처

python 프레임워크중에 하나인 fastapi 책들이 많이 나오고 있습니다.

그만큼 기존의 django, flask 위주로 사용되었던 흐름에 조금씩 변화가 오고 있는 것 같습니다.

역설적으로 그만큼 fastapi가 주는 장점이 명확하기 때문에 이러한 트랜드에 변화가 있는것 같습니다.

이 책도 국내 저자분 한용재 님이 집필한 국내 서적이기에 그러한 부분이 국내에서도 많이 진행되는 것이라고

볼수 있습니다.

보통 fastapi 프로그래밍으로 소개가 될텐데, 책의 제목에 "with 클린 아키텍처"라는 부분이 인상적으로 

나가왔고, 책을 통해서 그러한 부분을 살펴볼 예정입니다.

 

 

 

■ 실습 위주로 구성된 책

· FASTAPI는 이름처럼 많은 장점이 있습니다.

 - 실행속도가 빠르다

 - 코드 생산성이 높다

 - 버그가 줄어든다.

 - 직관적이다.

 - 쉽다.

 - 간결하다

 - 강건하다

 - 표준을 준수한다.

 

· 실습 환경

 - 가상환경 관련해서는 poetry를 사용 (virtualevn, pyenv, pipenv등등이 있지만 해당 라이브러리 사용)

 - ASGI 서버로는 유비콘을 사용 (작은 규모에서는 유비콘, 큰 규모에서는 하이퍼콘을 권장)

 - DB는 docker기반으로 mysql을 사용

 

· TIL (today i learned)의 메모 기법을 구현합니다.

https://doing7.tistory.com/4

 

[Github] TIL 작성법

* TIL? Today I Learned의 약자. 그날그날 내가 공부한 것을 정리하는 것이다. 미국에서는 흔하게 사용되는 용어인데 아직 한국에서는 많이 사용되지않고 개발자들 사이에서만 사용되고 있다고 한다.

doing7.tistory.com

보통 해당 키워드로 검색을 해보면, 샘플로 프로젝트한 내용이 많이 검색됩니다.

 

 

· 해당 기능을 실습 위주로 하나하나 개발을 실습하고, 샘플코드도 있어서 따라하면서 문법 및 동작방식을 학습하는데 쉽게

 구성되어 있습니다. 노트 앱에서 기본적으로 필요한 CRUD 기능을 개발 진행 합니다.

 

 

■ 클린 아키텍처를 배울수 있는 내용 구성

· 클린코드에서 설명하고 있는 클린 아키텍처의 내용에 대해서 주요 핵심적인 요소가 잘 설명되어 있습니다.

· 관심사 분리와 계층형 아키텍처, 인터페이스 우선, 의존성 규칙의 장점을 강조하면서, 

  클린 아키텍처의 주요 4계층에 대해서 이 책에서는 이렇게 구성해서 사용합니다.

 

• 엔티티 -> 도메인
•유스 케이스-> 애플리케이션
• 인터페이스 어댑터-> 인터페이스
• 프레임워크 및 드라이버 > 인프라스트럭처(인프라)

 

파이썬 특히 FastAPI를 이용해서  클린 아키텍처를 구성하는 것은 매우 좋은 경험입니다.

 

 

■ 구현하기

· 도메인별로 기능 개발을 진행합니다.

 - 진행하면서 필요한 library를 소개하면서 설치를 진행합니다.

 - ULID (정렬가능한 범용 고유 식별자) : py-ulid

 - 패스워드 (passlib패키지와 bcrypy알고리즘 사용)

· API 라우터를 통한 url 생성

· pydantic을 이용한 데이터 유효성 검사 및 직렬화/역직렬화 적용

· SqlAlchemy ORM을 통한 객체 관계 매핑

· Alembic을 통한 테이블 생성 및 리버전 관리

 

 

하나씩 필요한 기능에 대해서 정의하면서, 실습코드 구성이 되어 있습니다.

 

· 로그인 시 JWT를 기반으로 json웹토큰을 사용하는 방식으로 구현

· 개발을 진행하면서, FASTAPI의 가장 큰 장점 중에 하나인 자동 문서화를 경험해보실수 있습니다.

  별다른 처리를 하지 않아도 OpenAPI문서 (swagger와 동일한) 를 통해서 쉽게 문서화 및 테스트가 가능합니다.

 

· 운영환경 배포를 위해서 dotenv를 통해서 환경변수 관리를 진행합니다.

· 이메일 보내는 기능

 - 이메일을 보내는 방법은 많은데, 이 책에서 Celery (https://github.com/celery/celery) 를 통한 분산작업 큐 방식을 이용해서

  예시를 든것도 아주 좋았습니다. (https://docs.celeryq.dev/en/stable/)

 : 메일발송이 비동기로 기존 회원가입의 과정에 필수 요소가 아닌, 비동기 처리로 구성하는 것이 서비스 운영 입장에서 더욱 효과적이기 

   때문입니다.

· 운영시 미들웨어를 통한 다양한 활용 사례가 있습니다. 

 - 요청 데이터 처리

 - 요청/응답 데이터 형식화

 - 인증/인가

 - 로깅 및 모니터링

 - 캐싱

 - 오류처리 

 - API 속도제한

 

좋은 예제를 통한, 클린 아키텍처 구성으로 서비스를 개발해보고 

운영환경까지 고려해야 하는 사항까지 포함된 fastapi를 학습하고, 적용하는데 많은 도움이 되는 책이라고 생각합니다.

 

'book' 카테고리의 다른 글

트랜스폼드  (0) 2024.12.21
소프트웨어 엔지니어 가이드북  (0) 2024.11.24
비전공자를 위한 AWS  (0) 2024.10.27
챗GPT 제대로 써먹기  (2) 2024.10.25
전혀 다른 생성형 AI  (4) 2024.10.20