๐Ÿ Django, Flask, FastAPI ๋น„๊ต ์ •๋ฆฌ

Lisa Leeยท2025๋…„ 5์›” 11์ผ
0

ํ”„๋กœ์ ํŠธ ์„ฑ๊ฒฉ์— ๋”ฐ๋ผ ์–ด๋–ค Python ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์„ ํƒํ•ด์•ผ ํ• ์ง€
Django, Flask, FastAPI์˜ ํŠน์ง•๊ณผ ์žฅ๋‹จ์  ์ •๋ฆฌ


๐Ÿงฑ Django โ€“ ํ’€์Šคํƒ ์›น ํ”„๋ ˆ์ž„์›Œํฌ

ํ•ญ๋ชฉ์„ค๋ช…
ํƒ€์ž…ํ’€์Šคํƒ ์›น ํ”„๋ ˆ์ž„์›Œํฌ
๊ตฌ์กฐMTV(Model-Template-View) ํŒจํ„ด, DRY(Don't Repeat Yourself) ์›์น™ ์ค€์ˆ˜
ํŠน์ง•ORM, ์ธ์ฆ ์‹œ์Šคํ…œ, ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ ๋“ฑ ๋‚ด์žฅ ๊ธฐ๋Šฅ ํ’๋ถ€ (๋ฐฐํ„ฐ๋ฆฌ ์ธํด๋ฃจ๋””๋“œ)
๋น„๋™๊ธฐ ์ง€์›๊ฐ€๋Šฅ์€ ํ•˜๋‚˜ ์†๋„ ๋ฉด์—์„œ FastAPI์— ๋ฐ€๋ฆผ
ํ™•์žฅ์„ฑ๋Œ€ํ˜• ํ”„๋กœ์ ํŠธ ์ ํ•ฉํ•˜์ง€๋งŒ ํ…œํ”Œ๋ฆฟ๊ณผ ORM์ด ๋ฌด๊ฑฐ์šธ ์ˆ˜ ์žˆ์Œ
ํ•™์Šต ๊ณก์„ ์ดˆ๋ณด์ž์—๊ฒŒ ๋‹ค์†Œ ๋ณต์žกํ•˜๊ณ  ๋””๋ฒ„๊น… ์–ด๋ ค์›€
์žฅ์ ๋ณด์•ˆ, ์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด, ์ปค๋ฎค๋‹ˆํ‹ฐ ํฌ๊ณ  ๋ฌธ์„œ ํ’๋ถ€
๋‹จ์ ๊ตฌ์กฐ ๊ฐ•์ œ์„ฑ์œผ๋กœ ์ธํ•ด ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—” ๊ณผํ•จ

โœ… ์ถ”์ฒœ ์‚ฌ์šฉ์ฒ˜

  • ๊ทœ๋ชจ ์žˆ๊ณ  ์•ˆ์ •์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
  • ์ธ์ฆ/๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ

๐Ÿถ Flask โ€“ ๊ฐ€๋ฒผ์šด ๋งˆ์ดํฌ๋กœ ํ”„๋ ˆ์ž„์›Œํฌ

ํ•ญ๋ชฉ์„ค๋ช…
ํƒ€์ž…๋งˆ์ดํฌ๋กœ ์›น ํ”„๋ ˆ์ž„์›Œํฌ
๊ตฌ์กฐMVC ํŒจํ„ด, Jinja ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฐ˜
ํŠน์ง•์ตœ์†Œํ•œ์˜ ๊ธฐ๋Šฅ๋งŒ ์ œ๊ณต. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์„ค๊ณ„, ํ™•์žฅ
๋น„๋™๊ธฐ ์ง€์›๊ธฐ๋ณธ ์ง€์› ์—†์Œ. ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•„์š”
ํ™•์žฅ์„ฑ๊ตฌ์กฐ ์ž์œ ๋„๊ฐ€ ๋†’์ง€๋งŒ ๋Œ€๊ทœ๋ชจ ํ™•์žฅ์€ ๋ถ€๋‹ด
ํ•™์Šต ๊ณก์„ ์ดˆ๋ณด์ž ์นœํ™”์ , ๋ฐฐ์šฐ๊ธฐ ์‰ฌ์›€
์žฅ์ ๋น ๋ฅธ ๊ฐœ๋ฐœ, ์œ ์—ฐํ•œ ๊ตฌ์กฐ, ๊ฐ„๋‹จํ•œ API ์„œ๋ฒ„์— ์ ํ•ฉ
๋‹จ์ ORM, ์ธ์ฆ, ๋น„๋™๊ธฐ ๋“ฑ ์ง์ ‘ ๊ตฌํ˜„ ํ•„์š”

โœ… ์ถ”์ฒœ ์‚ฌ์šฉ์ฒ˜

  • ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•  ์‹œ์ œํ’ˆ(Prototype)
  • ๊ฐ„๋‹จํ•œ ์›น์•ฑ์ด๋‚˜ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ

โšก FastAPI โ€“ ๊ณ ์„ฑ๋Šฅ ๋น„๋™๊ธฐ API ๊ฐœ๋ฐœ์— ์ตœ์ ํ™”

ํ•ญ๋ชฉ์„ค๋ช…
ํƒ€์ž…๋งˆ์ดํฌ๋กœ ์›น ํ”„๋ ˆ์ž„์›Œํฌ
๊ธฐ๋ฐ˜Starlette + Pydantic, ASGI ๊ธฐ๋ฐ˜
ํŠน์ง•ํƒ€์ž… ํžŒํŠธ ๊ธฐ๋ฐ˜ ์ž๋™ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ + Swagger ๋ฌธ์„œ ์ž๋™ ์ƒ์„ฑ
๋น„๋™๊ธฐ ์ง€์›async def๋กœ ๋„ค์ดํ‹ฐ๋ธŒ ์ง€์› โ€“ ๋งค์šฐ ๋น ๋ฆ„
์„ฑ๋Šฅ๊ณ ์„ฑ๋Šฅ API ๊ฐœ๋ฐœ์— ํŠนํ™”
์˜์กด์„ฑ ์ฃผ์ž…๊ณตํ†ต ๋กœ์ง์„ ์ž๋™์œผ๋กœ ์ฃผ์ž…ํ•˜์—ฌ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ โ†‘
ํ•™์Šต ๊ณก์„ Python ํƒ€์ž… ํžŒํŠธ์™€ ๋น„๋™๊ธฐ ๊ฐœ๋…์ด ํ•„์š”ํ•จ
์žฅ์ ๋ฌธ์„œํ™”, ์„ฑ๋Šฅ, ๊ฐœ๋ฐœ ํŽธ์˜์„ฑ ๋ชจ๋‘ ์šฐ์ˆ˜
๋‹จ์ ํ…œํ”Œ๋ฆฟ์ด๋‚˜ ์ „ํ†ต์ ์ธ ์›น ๊ฐœ๋ฐœ์—๋Š” ๋ถ€์ ํ•ฉ (์ง์ ‘ ๊ตฌ์„ฑ ํ•„์š”)

๐Ÿ” ๋น„์œ : ๋น„๋™๊ธฐ ํ–„๋ฒ„๊ฑฐ ๊ฐ€๊ฒŒ

์ฃผ๋ฌธ ํ›„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋ณผ์ผ์„ ๋ณด๋ฉฐ
โ†’ ๋‚˜์ค‘์— ํ–„๋ฒ„๊ฑฐ๋ฅผ ์ฐพ์•„๊ฐ€๋Š” ๊ตฌ์กฐ.
โ†’ ๋ฆฌ์†Œ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž ์‘๋‹ต ์†๋„๋„ ํ–ฅ์ƒ๋จ

โœ… ์ถ”์ฒœ ์‚ฌ์šฉ์ฒ˜

  • REST API ์„œ๋ฒ„ ๊ตฌ์ถ•
  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜
  • ๋น„๋™๊ธฐ ๋„คํŠธ์›Œํฌ/ํŒŒ์ผ ์ฒ˜๋ฆฌ ์ค‘์‹ฌ ์‹œ์Šคํ…œ

โš–๏ธ ์–ด๋–ค ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์„ ํƒํ•ด์•ผ ํ• ๊นŒ?

์กฐ๊ฑด์ถ”์ฒœ ํ”„๋ ˆ์ž„์›Œํฌ
๋ณด์•ˆ๊ณผ ์•ˆ์ •์„ฑ์ด ์ค‘์š”ํ•œ ๋Œ€ํ˜• ์„œ๋น„์ŠคDjango
๊ฐ„๋‹จํ•œ ์›น์•ฑ or ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ž… ์ œ์ž‘Flask
๊ณ ์„ฑ๋Šฅ API, ๋น„๋™๊ธฐ ํ†ต์‹ ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐFastAPI

๐Ÿ”š ๋งˆ๋ฌด๋ฆฌ

๊ฐ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์‚ฌ์šฉ ๋ชฉ์ ๊ณผ ๊ฐœ๋ฐœ์ž์˜ ์Šคํƒ€์ผ์— ๋”ฐ๋ผ ์ตœ์ ์˜ ์„ ํƒ์ง€๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
์›น์•ฑ ์ค‘์‹ฌ์ด๋ผ๋ฉด Django, ์ž‘์€ ์‹คํ—˜ ํ”„๋กœ์ ํŠธ๋ผ๋ฉด Flask,
API ์ค‘์‹ฌ์˜ ์„œ๋น„์Šค๋ผ๋ฉด FastAPI๋ฅผ ๊ณ ๋ คํ•ด๋ณด์„ธ์š”.

profile
๊ฐœ๋ฐœ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋Š” 10+N ๋…„์ฐจ ๊ธฐํš์ž์ž…๋‹ˆ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€