제목의 () 는 스프링으로 생각하면 어떤 것과 개념적으로 유사한 지를 적은 것
동적 웹 개발을 위한 풀스택 웹 프레임워크
ORM 내장, DB migration 으로 model 을 쉽게 관리할 수 있음 (XSS, SQL injection 에서 자유로움)
대규모 애플리케이션 개발에 적합
RDBMS와 높은 결합도를 가져, NoSQL 데이터베이스와 호환이 어려움
Template 을 내장하는 MVT 패턴을 지원, Restful API 통신으로 프론트엔드와 협업하는 요즘 개발방식과는 어울리지 않는다.
DB migration: 사용중이던 DB 를 다른 것으로 옮기는 작업
model: 사용할 데이터에 대한 정의를 담고 있음. (JPA Entity와 비슷) ORM으로 객체와 매핑하여 객체 지향적 설계에 용이함.
MVT 패턴: 장고에서 사용하는 용어로, MVC 패턴에서 view가 template이 되고, controller가 view가 된 것이라고 봐도 됨.
Django 에서 부족한 Restful API 통신을 위해 만들어짐
Automatic API documentation의 시초
파이썬의 또 다른 웹 프레임워크
마이크로 서비스에 적합. 빠른 개발이 가능.
ORM을 기본적으로 제공하지 않는 등 django 다양한 기능들을 제공하지 못함.
ORM이 없으므로 NoSQL 데이터베이스에도 사용할 수 있음
FastAPI는 Python 기반의 웹 프레임워크로, 최근에 인기가 높아지고 있는 프레임워크
비동기 처리를 지원하여 빠른 속도로 처리
Swagger와 같은 API 문서 자동화 기능을 지원하며, Pydantic과 함께 사용하여 데이터 유효성 검사를 할 수 있음.
가장 빠른 웹 프레임워크 Starlette을 기반으로 동작
타이핑 기능을 통해 컴파일 시점에 오류를 반환
DI 지원
Uvicorn은 ASGI(Asynchronous Server Gateway Interface) 서버이다.
비동기 처리를 지원하여, 높은 성능을 발휘할 수 있다.
다양한 웹 프레임워크와 함께 사용할 수 있다.
단일 프로세스로 동작한다.
gunicorn 은 ASGI 가 아닌 WSGI(Web Server Gateway Interface) 표준을 지원하는 애플리케이션 서버
단일 동기 호출 방식으로 처리
프로세스 관리자 역할도 수행
Uvicorn 을 Gunicorn 의 워커로 동작시켜 멀티 프로세스 환경에 대응할 수 있다.
그러나, k8s 같은 컨테이너 오케스트레이션 서비스를 사용한다면 굳이 Gunicorn을 사용할 필요 없이 ReplicaSet 으로 해결할 수 있다. 또한, 좀 더 정확하고 단순하게 도커 컨테이너를 관리, 관측할 수 있다는 장점도 존재한다.
Python으로 SQLAlchemy 을 사용하고 있을 때 데이터베이스를 관리해주는 DB 마이그레이션 도구
버전 관리:
새로운 기능이나 요구 사항이 추가되면 데이터베이스 스키마도 업데이트되어야 함. 마이그레이션은 애플리케이션의 여러 버전 간에 데이터베이스 스키마를 일관되게 유지하도록 도움을 줌.
스키마 변경:
애플리케이션의 요구 사항이나 비즈니스 로직의 변화에 따라 데이터베이스 스키마를 조정해야 할 수 있음. 새로운 테이블, 컬럼, 인덱스 등을 추가하거나 기존 구조를 변경하기 용이함.
데이터 이관:
데이터의 형식이나 구조를 변경해야 하는 경우, 마이그레이션은 기존 데이터를 새로운 형식에 맞게 변환하고 이관하는 데 사용. 이는 데이터의 일관성과 무결성을 유지하며, 새로운 기능을 지원하기 위한 데이터 변환이 가능.
참고.
https://gr-st-dev.tistory.com/117
https://backstreet-programmer.tistory.com/195
https://jonnung.dev/python/2021/10/24/asgi-uvicorn-with-guicorn/