committed by
GitHub
1 changed files with 34 additions and 0 deletions
@ -0,0 +1,34 @@ |
|||
# ๋ฒค์น๋งํฌ |
|||
|
|||
๋
๋ฆฝ์ ์ธ TechEmpower ๋ฒค์น๋งํฌ์ ๋ฐ๋ฅด๋ฉด **FastAPI** ์ ํ๋ฆฌ์ผ์ด์
์ด Uvicorn์ ์ฌ์ฉํ์ฌ <a href="https://www.techempower.com/benchmarks/#section=test&runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&hw=ph&test=query&l=zijzen-7" class="external-link" target="_blank">๊ฐ์ฅ ๋น ๋ฅธ Python ํ๋ ์์ํฌ ์ค ํ๋</a>๋ก ์คํ๋๋ฉฐ, Starlette์ Uvicorn ์์ฒด(๋ด๋ถ์ ์ผ๋ก FastAPI๊ฐ ์ฌ์ฉํ๋ ๋๊ตฌ)๋ณด๋ค ์กฐ๊ธ ์๋์ ์์นํฉ๋๋ค. |
|||
|
|||
๊ทธ๋ฌ๋ ๋ฒค์น๋งํฌ์ ๋น๊ต๋ฅผ ํ์ธํ ๋ ๋ค์ ์ฌํญ์ ์ผ๋์ ๋์ด์ผ ํฉ๋๋ค. |
|||
|
|||
## ๋ฒค์น๋งํฌ์ ์๋ |
|||
|
|||
๋ฒค์น๋งํฌ๋ฅผ ํ์ธํ ๋, ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ง ์ ํ์ ๋๊ตฌ๊ฐ ๋๋ฑํ ๊ฒ์ผ๋ก ๋น๊ต๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. |
|||
|
|||
ํนํ, Uvicorn, Starlette, FastAPI๊ฐ ํจ๊ป ๋น๊ต๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค(๋ค๋ฅธ ์ฌ๋ฌ ๋๊ตฌ์ ํจ๊ป). |
|||
|
|||
๋๊ตฌ๊ฐ ํด๊ฒฐํ๋ ๋ฌธ์ ๊ฐ ๋จ์ํ ์๋ก ์ฑ๋ฅ์ด ๋ ์ข์์ง๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ถ๋ถ์ ๋ฒค์น๋งํฌ๋ ๋๊ตฌ๊ฐ ์ ๊ณตํ๋ ์ถ๊ฐ ๊ธฐ๋ฅ์ ํ
์คํธํ์ง ์์ต๋๋ค. |
|||
|
|||
๊ณ์ธต ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค: |
|||
|
|||
* **Uvicorn**: ASGI ์๋ฒ |
|||
* **Starlette**: (Uvicorn ์ฌ์ฉ) ์น ๋ง์ดํฌ๋ก ํ๋ ์์ํฌ |
|||
* **FastAPI**: (Starlette ์ฌ์ฉ) API ๊ตฌ์ถ์ ์ํ ๋ฐ์ดํฐ ๊ฒ์ฆ ๋ฑ ์ฌ๋ฌ ์ถ๊ฐ ๊ธฐ๋ฅ์ด ํฌํจ๋ API ๋ง์ดํฌ๋ก ํ๋ ์์ํฌ |
|||
|
|||
* **Uvicorn**: |
|||
* ์๋ฒ ์์ฒด ์ธ์๋ ๋ง์ ์ถ๊ฐ ์ฝ๋๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ต๊ณ ์ ์ฑ๋ฅ์ ๋ฐํํฉ๋๋ค. |
|||
* ์ง์ Uvicorn์ผ๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ง๋ ์์ ๊ฒ์
๋๋ค. ์ฆ, ์ฌ์ฉ์์ ์ฝ๋์๋ ์ ์ด๋ Starlette(๋๋ **FastAPI**)์์ ์ ๊ณตํ๋ ๋ชจ๋ ์ฝ๋๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ์ต์ข
์์ฉ ํ๋ก๊ทธ๋จ์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๊ณ ์ฑ ์ฝ๋์ ๋ฒ๊ทธ๋ฅผ ์ต์ํํ๋ ๊ฒ๊ณผ ๋์ผํ ์ค๋ฒํค๋๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. |
|||
* Uvicorn์ ๋น๊ตํ ๋๋ Daphne, Hypercorn, uWSGI ๋ฑ์ ์์ฉ ํ๋ก๊ทธ๋จ ์๋ฒ์ ๋น๊ตํ์ธ์. |
|||
* **Starlette**: |
|||
* Uvicorn ๋ค์์ผ๋ก ์ข์ ์ฑ๋ฅ์ ๋ฐํํฉ๋๋ค. ์ฌ์ค Starlette๋ Uvicorn์ ์ฌ์ฉํ์ฌ ์คํ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ ๋ง์ ์ฝ๋๋ฅผ ์คํํด์ผ ํ๊ธฐ ๋๋ฌธ์ Uvicorn๋ณด๋ค "๋๋ ค์ง" ์๋ฐ์ ์์ต๋๋ค. |
|||
* ํ์ง๋ง ๊ฒฝ๋ก ๊ธฐ๋ฐ ๋ผ์ฐํ
๋ฑ ๊ฐ๋จํ ์น ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ถํ ์ ์๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. |
|||
* Starlette๋ฅผ ๋น๊ตํ ๋๋ Sanic, Flask, Django ๋ฑ์ ์น ํ๋ ์์ํฌ(๋๋ ๋ง์ดํฌ๋ก ํ๋ ์์ํฌ)์ ๋น๊ตํ์ธ์. |
|||
* **FastAPI**: |
|||
* Starlette๊ฐ Uvicorn์ ์ฌ์ฉํ๋ฏ๋ก Uvicorn๋ณด๋ค ๋นจ๋ผ์ง ์ ์๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก, **FastAPI**๋ Starlette๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋ ๋น ๋ฅผ ์ ์์ต๋๋ค. |
|||
* FastAPI๋ Starlette์ ์ถ๊ฐ์ ์ผ๋ก ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. API๋ฅผ ๊ตฌ์ถํ ๋ ๊ฑฐ์ ํญ์ ํ์ํ ๋ฐ์ดํฐ ๊ฒ์ฆ ๋ฐ ์ง๋ ฌํ์ ๊ฐ์ ๊ธฐ๋ฅ๋ค์ด ํฌํจ๋์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌธ์ ์๋ํ ๊ธฐ๋ฅ๋ ์ ๊ณต๋ฉ๋๋ค(๋ฌธ์ ์๋ํ๋ ์์ฉ ํ๋ก๊ทธ๋จ ์คํ ์ ์ค๋ฒํค๋๋ฅผ ์ถ๊ฐํ์ง ์๊ณ ์์ ์ ์์ฑ๋ฉ๋๋ค). |
|||
* FastAPI๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ง์ Starlette(๋๋ Sanic, Flask, Responder ๋ฑ)๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๋ฐ์ดํฐ ๊ฒ์ฆ ๋ฐ ์ง๋ ฌํ๋ฅผ ์ง์ ๊ตฌํํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ต์ข
์์ฉ ํ๋ก๊ทธ๋จ์ FastAPI๋ฅผ ์ฌ์ฉํ ๊ฒ๊ณผ ๋์ผํ ์ค๋ฒํค๋๋ฅผ ๊ฐ์ง๊ฒ ๋ ๊ฒ์
๋๋ค. ๋ง์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ๊ฒ์ฆ ๋ฐ ์ง๋ ฌํ๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์์ฑ๋ ์ฝ๋ ์ค ๊ฐ์ฅ ๋ง์ ๋ถ๋ถ์ ์ฐจ์งํฉ๋๋ค. |
|||
* ๋ฐ๋ผ์ FastAPI๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ๊ฐ๋ฐ ์๊ฐ, ๋ฒ๊ทธ, ์ฝ๋ ๋ผ์ธ์ ์ค์ผ ์ ์์ผ๋ฉฐ, FastAPI๋ฅผ ์ฌ์ฉํ์ง ์์์ ๋์ ๋์ผํ๊ฑฐ๋ ๋ ๋์ ์ฑ๋ฅ์ ์ป์ ์ ์์ต๋๋ค(์ฝ๋์์ ๋ชจ๋ ๊ตฌํํด์ผ ํ๊ธฐ ๋๋ฌธ์). |
|||
* FastAPI๋ฅผ ๋น๊ตํ ๋๋ Flask-apispec, NestJS, Molten ๋ฑ ๋ฐ์ดํฐ ๊ฒ์ฆ, ์ง๋ ฌํ ๋ฐ ๋ฌธ์ํ๊ฐ ํตํฉ๋ ์๋ ๋ฐ์ดํฐ ๊ฒ์ฆ, ์ง๋ ฌํ ๋ฐ ๋ฌธ์ํ๋ฅผ ์ ๊ณตํ๋ ์น ์์ฉ ํ๋ก๊ทธ๋จ ํ๋ ์์ํฌ(๋๋ ๋๊ตฌ ์งํฉ)์ ๋น๊ตํ์ธ์. |
Loadingโฆ
Reference in new issue