먼저, 개발환경을 비교해보자!
참고 자료
1. 내가 느낀 차이점
Spring Boot
Java
언어 기반이라FastAPI
에 비해 느린 개발 속도Spring MVC
로 인해 체계적인 구조를 가짐- 방대한 레퍼런스와 생태계(
Spring
) Swagger UI
를 사용하기 위해 추가적인 설정 필요- ORM 표준으로
JPA
사용
FastAPI
Python
언어 사용으로 인한 빠른 개발 속도- 소스 구조가 자율적임
- 비교적 적은 레퍼런스
OpenAPI
(Swagger
)를 기반으로 한 자동 문서 생성 기능 제공으로 편리한 API 문서 관리 가능- ORM으로
sqlalchemy
사용
(ORM 비교 내용은 후에 작성할 예정)
2. 추가 고려사항
성능 및 확장성
- Spring Boot는 기본적으로 동기 방식을 사용하며, 비동기 처리를 위해선 WebFlux를 사용
- FastAPI는 기본적으로 비동기 방식을 사용
개발자 경험
- Spring Boot는 Lombok 같은 라이브러리를 통해 보일러플레이트 코드를 줄일 수 있지만, Java의 특성상 여전히 많은 양의 코드 작성이 필요
- 보일러플레이트 코드 : 최소한의 변경으로 여러곳에서 재사용되며, 반복적으로 비슷한 형태를 띄는 코드
- FastAPI는 Python의 타입 힌트와 Pydantic을 사용하여 간결하고 효과적인 코드 작성을 가능하게 합니다.
보안
- Spring Boot : Spring 생태계 내 Spring Security 프레임워크로 관리
- FastAPI : 스프링처럼 따로 프레임워크가 있진 않지만 다양한 라이브러리로 대체 가능(OAuth2, pyJWT, Basic authentication)
커뮤니티 및 지원
- Spring Boot는 방대한 레퍼런스와 생태계 보유
- FastAPI는 아직 성장중
테스트 및 배포 용이성
- Spring Boot :
JUnit
등 테스트 프레임워크 사용 - FastAPI :
pytest
라이브러리 사용
WAS(Web Application Server)
- Spring :
Tomcat
과 같은 WAS 추가 설정을 통해 사용 - Spring Boot : 내장 WAS를 사용
- FastAPI : 자체적으로 WAS를 보유하지 않지만,
ASGI
(Asynchronous Server Gateway Interface) 사양 준수Uvicorn
과 같은ASGI
서버 사용 -> 가볍고 빠름Gunicorn
으로 여러uvicorn
관리 가능 및worker
설정 가능worker
: 프로세스와 유사 ->gunicorn
으로 멀티프로세싱
'프레임워크 > FastAPI로 이해하는 Spring Boot' 카테고리의 다른 글
(FastAPI로 이해하는 Spring Boot) 3. REST API 설계 (0) | 2024.05.06 |
---|---|
(FastAPI로 이해하는 Spring Boot) 2. 프로젝트 구조 및 시작 (0) | 2024.04.21 |
(FastAPI로 이해하는 Spring Boot) 0. 들어가면서 (1) | 2024.04.07 |