--- /dev/null
+# ๋ฒค์น๋งํฌ
+
+๋
๋ฆฝ์ ์ธ 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 ๋ฑ ๋ฐ์ดํฐ ๊ฒ์ฆ, ์ง๋ ฌํ ๋ฐ ๋ฌธ์ํ๊ฐ ํตํฉ๋ ์๋ ๋ฐ์ดํฐ ๊ฒ์ฆ, ์ง๋ ฌํ ๋ฐ ๋ฌธ์ํ๋ฅผ ์ ๊ณตํ๋ ์น ์์ฉ ํ๋ก๊ทธ๋จ ํ๋ ์์ํฌ(๋๋ ๋๊ตฌ ์งํฉ)์ ๋น๊ตํ์ธ์.