
FastAPI๋ก ๋ฐฐ์ฐ๋ ๋ฐฑ์๋ ํ๋ก๊ทธ๋๋ฐ with ํด๋ฆฐ ์ํคํ ์ฒ๋ ๊ฐ๋ณ๊ณ ๋น ๋ฅด๊ฒ ์์ํ ์ ์๋ Python ๊ธฐ๋ฐ ํ๋ ์์ํฌ์ธ FastAPI๋ก ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ฝ๊ฒ ์์ํ ์ ์๊ฒ ๋๋ ์ฑ ์ ๋๋ค. Java Spring Boot์ ๋ฐฉ๋ํ ๊ตฌ์กฐ์ ๋นํด FastAPI๋ ๊ฐ๊ฒฐํ๊ณ , ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ์ฌ ๊ฐ๋ฐ ์๋์ ์ ์ง๋ณด์ ํจ์จ์ฑ ๋ฉด์์ ๊ฐ๋ ฅํ ์ฅ์ ์ ๊ฐ์ง๋๋ค. ํนํ ํด๋ฆฐ ์ํคํ ์ฒ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ณ์ธต๋ณ๋ก ๋ฐฑ์๋ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๋ ๊ฐ๋ ์ ๋ค๋ฃจ์ด ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ ์ฒด์ ์ธ ํ๋ฆ์ ์ฒด๊ณ์ ์ผ๋ก ํ์ตํ ์ ์์ต๋๋ค. ์ค์ต ์ค์ฌ์ ์์ ์ ์ค๋ฌด์ ์ ์ฉํ ์ ์๋ ๋ด์ฉ์ด ์ ๋ฌธ์์๊ฒ ํฐ ๋์์ด ๋๋ ์ฑ ์ ๋๋ค.
๋ณธ ์ํ์ ์ ์ดํ์์ ์ฑ ์ ์ ๊ณต๋ฐ์ ์์ฑ๋์์ต๋๋ค.
๐ก๊ฐ์
Python์ ์น ๊ฐ๋ฐ๋ฟ๋ง ์๋๋ผ AI, ๋ฐ์ดํฐ ๋ถ์ ๋ฑ ๋ค๋ฐฉ๋ฉด์์ ์ฌ์ฉ๋๊ณ ์์ผ๋ฉฐ, FastAPI๋ ์ต๊ทผ ํซ๐ฅํ ํ๋ ์์ํฌ์ ๋๋ค. ์ด ์ฑ ์ ํด๋ฆฐ ์ํคํ ์ฒ์ ์์น์ FastAPI์ ์ ์ฉํ์ฌ TIL ์๋น์ค ์ค์ต์ ํตํด ๋ฐฑ์๋์ ์ ๋ฐ์ ์ธ ๊ตฌํ์ ์ฒดํํ ์ ์๋๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
์ฑ ์ ์ฃผ์ ๋ชฉ์ฐจ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.

๋ชฉ์ฐจ
1. FastAPI ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ
2. ํด๋ฆฐ ์ํคํ ์ฒ
3. ํ์ ๊ฐ์
4. ์์กด์ฑ ์ฃผ์
5. ํ์ ๋ฆฌ์์ค์ CRUD ๊ธฐ๋ฅ ์์ฑ
6. ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ
7. ๋ก๊ทธ์ธ
8. ํ๊ฒฝ๋ณ์
9. TIL Note
10. ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ : ํ์ ์ด๋ฉ์ผ ๋ฐ์ก
11. ๋ฏธ๋ค์จ์ด
12. ํ ์คํ
์ฑ ์์๋ FastAPI ์ธ์๋ Docker๐, Poetry, ํด๋ฆฐ ์ํคํ ์ฒ ๋ฑ์ ๊ฐ๋ ์ ์ค๋ช ํ๋ฉฐ, ์ ๋ฌธ์๋ ์ค์ฉ์ ์ธ API ๊ตฌ์ถ์ ๊ฒฝํํ ์ ์๋๋ก ๋์ต๋๋ค.
๐๏ธ๋์ ์ฒซ ๋ฐฑ์๋ ์คํ
๊ตญ๋ด์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐฑ์๋ ์คํ์ Spring Boot๋ก, ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ ์ธก๋ฉด์์ ๊ฐ๋ ฅํ ์ง์์ ์ ๊ณตํ์ง๋ง, Java ๋ฌธ๋ฒ๊ณผ Spring ํ๋ ์์ํฌ์ ๋ฐฉ๋ํ ๊ธฐ๋ฅ์ ๊น์ด ์ดํดํด์ผ ํ๋ฏ๋ก ๋ฌ๋ ์ปค๋ธ๊ฐ ๋งค์ฐ ๊ฐํ๋ฆ
๋๋ค. ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ฒ์ ์
๋ฌธํ๊ฑฐ๋ ํ๋ก์ ํธ๋ฅผ ๋น ๋ฅด๊ฒ ์์ํ๊ธฐ์๋ ์ ํฉํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์คํ๋ง ๋ถํธ๋ ๋ง์ด ๋ฌด์์์๐ญ
Python ๊ธฐ๋ฐ์ ์ธ๊ธฐ ์๋ ํ๋ ์์ํฌ๋ก๋ Django์ Flask๊ฐ ์์ต๋๋ค. Django๋ ๋๊ท๋ชจ ํ๋ก์ ํธ์ ์ ํฉํ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง, ๊ตฌ์ฑ ์์๊ฐ ๋ณต์กํ์ฌ ๋ง์ ํ์ต์ ํ์๋ก ํฉ๋๋ค. Flask๋ ์ต์ํ์ ๊ธฐ๋ฅ์ผ๋ก ์์์ด ๊ฐ๋จํ๊ณ ์ ์ฐํ์ง๋ง, ํ์ฅ ์์๋ ์ถ๊ฐ์ ์ธ ๋ณต์กํ ๊ตฌํ์ด ์๊ตฌ๋ฉ๋๋ค.
์ด์ ๋ฌ๋ฆฌ, FastAPI๋ ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ๊ณผ ์๋ํ๋ ํ์
ํํธ ๋๋ถ์ ์ด์ฌ์๋ ์ ๊ทผํ๊ธฐ ์ฌ์ด ํ๋ ์์ํฌ๋ก ์ฃผ๋ชฉ๋ฐ๊ณ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ธ ๋น๋๊ธฐ ๊ธฐ๋ฅ๊ณผ ๋ฐ์ดํฐ ๊ฒ์ฆ ๋ฑ ์ ์ฉํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๋น๊ต์ ๋น ๋ฅด๊ณ ์์ ์ ์ธ API ์๋ฒ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ FastAPI๋ ๋ฐฑ์๋ ์ด๋ณด์๋ ๋น ๋ฅธ ํ๋กํ ํ์ดํ์ด ํ์ํ ๊ฐ๋ฐ์์๊ฒ ์ ํฉํ ์ ํ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ฌ์ค ์ ๋ ์ ๋ฒ๋ฆ์ฒ๋ผ ๋ฐฑ์๋๊ฐ ์ซ๋ค๊ณ ๋งํ๊ณค ํ๋๋ฐ์..๋ฐฑ์๋๋ ๋๋ฌด ์ด๋ ต๊ฒ ๋๊ปด์ก์ผ๋๊น์. ์ง๊ด์ ์ผ๋ก ํ์ธ ๊ฐ๋ฅํ ํ๋ก ํธ์๋์ ๋ฌ๋ฆฌ ์๋ฒ? ๋ฐ์ดํฐ๋ฒ ์ด์ค? API? ๋์ ๋ณด์ด์ง ์๋ ๋ฌด์ธ๊ฐ๋ค๊ณผ์ ์ธ์์ ํ๋ ๋ฐฑ์๋๋ ์ ์๊ฒ๋ ์ ๋ง ์๊ณ ์ถ์ง ์์ ์์ญ์ด์์ต๋๋ค.(์คํ๋ง๋ถํธ AWS ๋ฌด์์) ํ์ง๋ง ํ๋ก ํธ์๋๋ฅผ ๊ณต๋ถํ๋ฉฐ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ์ค, ๋ฐฑ์๋์ ๋ํ ํ์์ฑ์ ์ ์คํ ๋๋ผ๊ฒ ๋์์ต๋๋ค.
Next.js์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด๋ Firebase, Supabase ๋ฑ ๋ฐฑ์๋ API ๋์ฒด์ ๋ ์ถฉ๋ถํ ๋ง์ต๋๋ค. ๊ทธ๋ผ์๋ ๋ด ๋จธ๋ฆฟ์์ ์์ด๋์ด๋ฅผ ์จ์ ํ ์ฝ๋๋ก ํํํ๊ธฐ ์ํด์๋ ์ง์ API๋ฅผ ๊ตฌ์ถํ ์ ์๋ ๋ฅ๋ ฅ์ด ํ์ํ๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๋ฐฑ์๋์ ๊ฐ๋ ์ ์ดํดํ๊ณ , ํ๋ก ํธ์๋์์ ์ฐ๊ณ๋ฅผ ํตํด ๋ ์์ฑ๋ ์๋ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ธฐ ์ํด, ์ํํ ํ์ ์ ์ํด์๋ผ๋ ๊ผญ ํ์ํ ๊ณผ์ ์ด๋ผ๊ณ ๋๊ผ์ต๋๋ค. ์ด์ Node.js, Flask ๋ฑ ์ฌ๋ฌ ๊ธฐ์ ๋ค์ ์์๋ณด๋ฉฐ ๋น๊ตํ ๊ฒฐ๊ณผ, ์ฒซ ์์์ผ๋ก๋ FastAPI๊ฐ ์ ์ผ ์ฝ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
๐๋ด์ฉ
์ด ์ฑ ์ ํด๋ฆฐ ์ํคํ ์ฒ์ ๊ฐ๋ ๊ณผ ๋จ๊ณ์ ์ค์ต์ ํตํด FastAPI์ ๊ธฐ๋ฅ๋ค์ ์์ธํ ๋ค๋ฃจ๊ณ ์์ต๋๋ค. ์ฑ ๋ชฉ์ฐจ๋ง ๋ด๋, ์ ๋ง ๋ง์ ๋ด์ฉ๋ค์ ๋ค๋ฃฌ๋ค๋ ๊ฒ์ ์ ์ ์์์ต๋๋ค.
์ด ์ฑ ์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ FastAPI๋ก ๊ฐ๋จํ๊ฒ ๋ฐฑ์๋์ ํต์ฌ ๊ฐ๋ ๊ณผ ํด๋ฆฐ ์ํคํ ์ฒ์ ์ฅ์ ์ ์ค์ ํ๋ก์ ํธ์ ์ ์ฉํ ์ ์๊ฒ ํ๋ค๋ ์ ์ ๋๋ค. TIL ์๋น์ค๋ฅผ ๋จ๊ณ์ ์ผ๋ก ๊ฐ๋ฐํ๋ฉฐ, ํด๋ฆฐ ์ํคํ ์ฒ์ ์์น์ ๋ฐ๋ผ ๋ฐฑ์๋ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ธฐ ์ฝ๊ฒ ์ค๋ช ํ๋ฉด์๋ ์ค๋ฌด ์ ์ฉ์ด ๊ฐ๋ฅํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ์ด ์ฑ ์ ํน์ง์ ๋๋ค.
์ ์ฒด ํ์ด์ง ์๊ฐ 209ํ์ด์ง๋ก ๋น๊ต์ ์์ ํธ์ด์ง๋ง, ์์ฐฌ ๊ตฌ์ฑ์ผ๋ก ๋ฐฑ์๋ ์ ๋ฌธ์์๊ฒ ์ ํฉํ ๋์ด๋์ ๊ตฌ์ฑ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค.
์ ๋ ๋ฐฑ์๋์ ๋ํด์๋ ์๋๊ฒ ๊ฑฐ์ ์์ด์, ์ด๋ฐ๋ถ๋ ์กฐ๊ธ ์ด๋ ต๊ฒ ๋๊ปด์ก์ต๋๋ค. ํด๋ฆฐ ์ํคํ ์ฒ์ ๋ํ ์ดํด๋ ํ์ํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํฌ์ดํธ๋ฆฌ, ์ ๋น์ฝ, ๋์ปค ๋ฑ ์ค์ต์ ์ํด ์ค์ ํด์ผ ํ๋๊ฒ๋ ๋ง์์ผ๋๊น์. ๊ทธ๋ฌ๋ ์ฑ ์ด ๊ฐ๋ ๋ถํฐ ์ค์ต๊น์ง ๋จ๊ณ์ ์ผ๋ก ์ ์ค๋ช ๋์ด ์์ด ๋ฐ๋ผ๊ฐ๋ค ๋ณด๋ ์ ์ฐจ ์ต์ํด์ก๊ณ , ๋ชฉ์ฐจ ๊ตฌ์ฑ๋ ํํํด ํ์ํ ๋๋ง๋ค ์ฐธ๊ณ ํ๊ธฐ ์ข์ ์ฑ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ์ธ์ ์ผ๋ก๋ ์์กด์ฑ ์ฃผ์ ๋ถ๋ถ์ด ์ ์ผ ์ฌ๋ฏธ์๊ฒ ๋๊ปด์ก์ต๋๋ค. ์์กด์ฑ ์ฃผ์ ์ด ๋ญ์ง, ์ ํ์ํ์ง ํ์คํ๊ฒ ์ดํดํ ์ ์์๊ณ , FastAPI์์ ์์ฒด์ ์ผ๋ก ์ ๊ณตํ๋ ์์กด์ฑ ์ฃผ์ ํจ์์, ์ค์ ๋ง์ด ์ฐ์ด๋ ์์กด์ฑ ์ฃผ์ ํ๋ ์์ํฌ ๋ ๊ฐ์ง ๋ฐฉ์์ ํตํด ์์กด์ฑ ์ฃผ์ ์ ์ค์ตํด ๋ณผ ์ ์์์ต๋๋ค. ์ ๋ณ๋์ ํ๋ ์์ํฌ๋ฅผ ์ฐ๋์ง ๊ฐ๋จํ์ง๋ง ํด๋ฆฐ ์ํคํ ์ฒ ๊ด์ ์์ ์ค๋ช ํด์ฃผ์ ์ ๊ธฐ์ ์ ํ์ ๊ทผ๊ฑฐ์ ํ์์ฑ์ ๊น์ด ๊ณ ๋ฏผํ ์ ์์์ต๋๋ค. ์ด๋ ๋ฏ ์ฑ ์ค๊ฐ์ค๊ฐ ๋์ค๋ ์ค๋ช ์ ํตํด, ๋จ์ํ ๊ธฐ์ ์ฌ์ฉ์ ๋์ด ๊ฐ๋ฐ ์ฒ ํ๊ณผ ์ค๊ณ ์์น์ ๊ณ ๋ คํ๋ฉฐ ๋ ๋์ ์ํคํ ์ฒ๋ฅผ ์งํฅํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์์์ต๋๋ค.
โค๏ธ์ถ์ฒ ๋์
์ด ์ฑ ์ ๋ฐฑ์๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์ฒ์ ์ ํด๋ณด๋ ค๋ ๊ฐ๋ฐ์๋, ํ์คํ ๊ฐ๋ฐ์ ๋ชฉํ๋ก ํ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์๊ฒ ์ ์ฉํ ์ฐธ๊ณ ์๊ฐ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
FastAPI์ ๊ฐ์ฅ ํฐ ๋งค๋ ฅ ์ค ํ๋๋ "๊ฐ๋จํ๋ค" ์์ต๋๋ค. ๋ณต์กํ ๊ฒ์ด ์ซ์ ์ ๋, API ๊ตฌ์ถ์ด ๊ฐ๋จํ๋ฉด์๋ ๋ฌธ์ํ๋ฅผ ์๋์ผ๋ก ์์ฑํด ๊ฐ๋ฐ ํธ์์ฑ์ ๊ทน๋ํํ๋ค๋ ์ ์ด ๋๋ฌด ๋งค๋ ฅ์ ์ผ๋ก ๋๊ปด์ก์ต๋๋ค. ์ด๋ฐ ์ฅ์ ๋๋ถ์, ๋ฐฑ์๋ ๊ฒฝํ์ด ์๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ ๋ถ๋ด ์์ด API ๊ฐ๋ฐ์ ๋์ ํ ์ ์๊ฒ ๋ค๊ณ ๋๊ผ์ต๋๋ค. ์ ๋ ์ธ๊ณต์ง๋ฅ ์น ์๋น์ค์ ๊ด์ฌ์ด ์์ด AI ๋ชจ๋ธ๊ณผ์ ํตํฉ์ด ์ฝ๊ฒ ์ด๋ฃจ์ด์ง๋ ์ ๋ํ FastAPI์ ํฐ ์ฅ์ ์ผ๋ก ๋๊ปด์ก๊ณ ์์ผ๋ก๋ ๊พธ์คํ ๊ณต๋ถํด ๋ณผ ์์ ์ ๋๋ค!
๋น ๋ฅด๊ฒ ๋ฐฑ์๋ ๊ธฐ์ด๋ฅผ ์ตํ๊ณ ํ์คํ ํ๋ก์ ํธ์ ๋์ ํด๋ณด๊ณ ์ถ์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ผ๋ฉด, ์ด ์ฑ ์ด FastAPI์ ํจ๊ป ํ๋ฅญํ ์ ๋ฌธ์๊ฐ ๋์ด ์ค ๊ฒ ๊ฐ์ต๋๋ค.