| νλͺ© | Spring Boot | FastAPI |
|---|---|---|
| μΈμ΄ | Java, Kotlin | Python |
| νλ μμν¬ κΈ°λ° | Spring Framework | Starlette + Pydantic |
| μ£Όμ λͺ©μ | λκ·λͺ¨ μΉ μ ν리μΌμ΄μ | λΉ λ₯Έ REST API μλ² |
| μ΅μ΄ μΆμ | 2014 | 2018 |
| λ¬Έμ μλν | Swagger (μΆκ° μ€μ νμ) | Swagger, ReDoc κΈ°λ³Έ μ 곡 |
| λΉλκΈ° μ²λ¦¬ | μ νμ (@Async λλ WebFlux) |
κΈ°λ³Έ μ§μ (async/await) |
| μ¬μ© μ¬λ‘ | κΈ°μ λ΄λΆ μμ€ν , κΈμ΅, κ³΅κ³΅κΈ°κ΄ | μ€ννΈμ , AI λ°±μλ, ML API |
| νλͺ© | Spring Boot | FastAPI |
|---|---|---|
| λΌμ°ν | @RestController, @RequestMapping λ± |
@router.get(), @router.post() λ± |
| μμ‘΄μ± μ£Όμ | DI 컨ν
μ΄λ (@Autowired) |
Depends() ν¨μ κΈ°λ° (λ¨μνμ§λ§ μ νμ ) |
| ORM | Hibernate (JPA) | SQLAlchemy |
| μμ² μ ν¨μ± κ²μ¬ | DTO + @Valid, @NotNull |
Pydantic νμ ννΈ κΈ°λ° μλ κ²μ¬ |
| ꡬ쑰 κ°μ μ± | λ§€μ° κ°ν¨ (MVC κ³μΈ΅ ꡬ쑰) | μμ λ‘μ (λͺ¨λν κΆμ₯) |
| μ€μ λ°©μ | application.yml / properties |
.env, λλ Python μ½λ μ§μ μ μ |
| λ°°ν¬ λ°©μ | .jar νμΌ λΉλ ν μ€ν |
Python νμΌ μ€ν (uvicorn) |
| ν μ€νΈ λꡬ | JUnit, Mockito | Pytest, unittest |
| μλ² μ’ λ₯ | Tomcat (κΈ°λ³Έ), Jetty λ± | Uvicorn, Hypercorn (ASGI μλ²) |
[Controller] β DTO
β
[Service] β λΉμ¦λμ€ λ‘μ§
β
[Repository] β Entity β DB
[Router] β [Pydantic Schema]
β
[Service] β λΉμ¦λμ€ λ‘μ§
β
[Model (SQLAlchemy)] β DB
src/
βββ main/
βββ java/com/example/project/
β βββ controller/
β βββ service/
β βββ repository/
β βββ domain/ β Entity, DTO
β βββ config/
βββ resources/
βββ application.yml
βββ static/, templates/