FastAPI를 이용한 TDD 개발

2024. 3. 10. 17:11·프로그래밍 언어/파이썬

개요

Python의 대표적인 FastAPI 비동기 프레임워크를 기반으로 HTTP RESTful 설계 원칙에 따른 개발을 진행합니다.

/summaries GET READ get all summaries
/summaries/:id GET READ get a single summary
/summaries POST CREATE add a summary
/summaries/:id PUT UPDATE update a summary
/summaries/:id DELETE DELETE delete a summary

로컬 개발환경과 배포를 단순화하기 위해서 Docker를 이용하여 FastAPI를 이용한 프로젝트를 진행합니다.

Postgres 데이터베이스를 이용하고 Tortoise ORM을 이용하여 비동기 처리를 하도록 하겠습니다.

pytest를 이용하여 테스트도 진행합니다. GitHub Actions을 이용하여 Heroku에 배포하기전에 테스트를 진행하도록

CI/CD 처리도 해보겠습니다.

FastAPI

python 생태계에서 대표적인 웹프레임워크는 Django와 Flask가 있었습니다. 하지만 2019년 비동기 방식 지원과

파이썬의 타입힌트를 기반으로한 데이터 유효성기능이 큰 인기를 끌게 되었습니다.

간단히 말해서 FastAPI는 RESTful API 구축에 적합한 최신 Python 웹 프레임워크입니다. 동기식 및 비동기식 요청을 모두 처리할 수 있으며 데이터 유효성 검사, JSON 직렬화, 인증 및 권한 부여, OpenAPI 문서 에 대한 지원이 내장되어 있습니다 .

특징

  1. Flask에서 크게 영감을 받아 Flask와 같은 라우트 데코레이터를 지원하는 가벼운 마이크로 프레임워크 느낌을 가지고 있습니다.
  2. pydantic을 통한 데이터 검증과 OpenAPI/Swagger 문서화를 가능하게 하는 매개변수 선언으로 Python 유형 힌트를 활용 할 수 있습니다.
  3. Starlette를 기반으로 구축되어 비동기 API 개발을 지원합니다.
  4. 비동기는 기존 동기 스레딩 모델보다 훨씬 효율적이므로 성능 측면에서 Node 및 Go와 경쟁할 수 있습니다.
  5. OpenAPI 및 JSON 스키마를 기반으로 하고 완벽하게 호환되므로 Swagger UI와 같은 여러 가지 강력한 도구를 지원합니다.
  6. 문서로 잘 정리 되어 있어 프레임워크 사용에 큰 메리트가 있습니다 .

도커

Docker는 다양한 환경에서 애플리케이션 개발 및 배포 워크플로를 간소화하는 데 사용되는 컨테이너 플랫폼입니다. 애플리케이션 코드, 종속성 및 시스템 도구를 개발 시스템에서 프로덕션 서버로 빠르고 쉽게 이동할 수 있는 경량 컨테이너로 패키징하는 데 사용됩니다.

Pytest

pytest는 테스트를 쉽게(그리고 재미있게) 작성, 구성 및 실행할 수 있게 해주는 Python용 테스트 프레임워크입니다. Python 표준 라이브러리인 pytest의 unittest와 비교하면 다음과 같습니다.

  1. 상용구 코드가 덜 필요하므로 test suites 가독성이 높아집니다.
  2. 단위 테스트의 AssertEquals, AssertTrue 및 AssertContains와 같은 AssertSomething 메서드에 비해 훨씬 더 읽기 쉽고 기억하기 쉬운 일반 Assert 문을 지원합니다.
  3. Python 표준 라이브러리의 일부가 아니기 때문에 더 자주 업데이트됩니다.
  4. fixture system을 사용하여 테스트 setting up 및 tearing down를 단순화합니다.
  5. functional approach을 사용합니다.

GitHub

GitHub Actions는 GitHub와 완전히 통합된 CI/CD 솔루션입니다. 이와 함께 패키지 관리 서비스인 GitHub Packages 도 사용하여 Docker 이미지를 저장합니다.

CI 및 패키지 관리와 함께 원격 버전 제어를 포함하는 여러 플랫폼이 있습니다.

  1. GitLab
  2. AWS(CodeCommit, CodeBuild, CodeDeploy, ECR)
  3. GCP(Cloud Source Repositories, Cloud Build, Container Registry)
  4. Azure(Repos, 파이프라인, 컨테이너 레지스트리)

각각은 유사한 기능과 가격 모델을 가지고 있습니다.

Heroku

Heroku는 웹 애플리케이션에 대한 호스팅을 제공하는 클라우드 PaaS(Platform as a Service)입니다. 기본 인프라를 관리할 필요가 없는 추상화된 환경을 제공하므로 웹 애플리케이션을 쉽게 관리, 배포 및 확장할 수 있습니다. 몇 번의 클릭만으로 앱을 실행하고 트래픽을 수신할 수 있습니다.

저작자표시 (새창열림)

'프로그래밍 언어 > 파이썬' 카테고리의 다른 글

FastAPI를 이용한 TDD 개발 - 4  (0) 2024.03.14
FastAPI를 이용한 TDD 개발 - 3  (0) 2024.03.12
FastAPI를 이용한 TDD 개발 - 2  (0) 2024.03.11
FastAPI를 이용한 TDD 개발 - 1  (0) 2024.03.10
re 모듈의 sub 메소드 사용법  (0) 2021.11.28
'프로그래밍 언어/파이썬' 카테고리의 다른 글
  • FastAPI를 이용한 TDD 개발 - 3
  • FastAPI를 이용한 TDD 개발 - 2
  • FastAPI를 이용한 TDD 개발 - 1
  • re 모듈의 sub 메소드 사용법
hyeseong-dev
hyeseong-dev
안녕하세요. 백엔드 개발자 이혜성입니다.
  • hyeseong-dev
    어제 오늘 그리고 내일
    hyeseong-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (283)
      • 여러가지 (107)
        • 알고리즘 & 자료구조 (72)
        • 오류 (4)
        • 이것저것 (29)
        • 일기 (1)
      • 프레임워크 (39)
        • 자바 스프링 (39)
        • React Native (0)
      • 프로그래밍 언어 (38)
        • 파이썬 (30)
        • 자바 (3)
        • 스프링부트 (5)
      • 운영체제 (0)
      • DB (17)
        • SQL (0)
        • Redis (17)
      • 클라우드 컴퓨팅 (2)
        • 도커 (2)
        • AWS (0)
      • 스케쥴 (65)
        • 세미나 (0)
        • 수료 (0)
        • 스터디 (24)
        • 시험 (41)
      • 트러블슈팅 (1)
      • 자격증 (0)
        • 정보처리기사 (0)
      • 재태크 (5)
        • 암호화폐 (5)
        • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자바
    DP
    Redis
    EC2
    Docker-compose
    완전탐색
    WebFlux
    Spring WebFlux
    AWS
    ecs
    시험
    spring
    reactor
    프로그래머스
    RDS
    #개발자포트폴리오 #개발자이력서 #개발자취업 #개발자취준 #코딩테스트 #항해99 #취리코 #취업리부트코스
    Python
    mybatis
    취업리부트
    SAA
    항해99
    백준
    OOP
    FastAPI
    그리디
    Spring Boot
    celery
    java
    파이썬
    docker
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeseong-dev
FastAPI를 이용한 TDD 개발
상단으로

티스토리툴바