None
Loading...

๐Ÿš€ [Project] AI ๋‚ด ์ง์› ๋งŒ๋“ค๊ธฐ: Django์™€ FastAPI์˜ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋™๊ฑฐ

76 | 2026-01-27 15:23 | AX | Django์™€ FastAPI๋ฅผ ๊ฒฐํ•ฉํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์ถ•๊ธฐ. ๊ฑฐ๋Œ€ ๋ ˆ๊ฑฐ์‹œ ํ”„๋กœ์ ํŠธ์˜ ์•ˆ์ •์„ฑ๊ณผ ๋น„๋™๊ธฐ MCP ์„œ๋ฒ„์˜ ํšจ์œจ์„ ๋™์‹œ์— ์žก๋Š” ๋ฒ•์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ ํ™˜๊ฒฝ์˜ ์ œ์•ฝ์„ ๊ทน๋ณตํ•œ StreamingHttpResponse ํ™œ์šฉ ํŒ๊ณผ DRF๋ฅผ ํ†ตํ•œ ์•ˆ์ „ํ•œ ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ ๋…ธํ•˜์šฐ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.


๐Ÿ—๏ธ ์™œ 'Django + FastAPI' ํ•˜์ด๋ธŒ๋ฆฌ๋“œ์ธ๊ฐ€?

TradeNPU๋Š” ์ด๋ฏธ 15๊ฐœ๊ฐ€ ๋„˜๋Š” ์•ฑ์ด ๋Œ์•„๊ฐ€๋Š” ๊ฑฐ๋Œ€ํ•œ Django ์„ฑ๊ณฝ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์‹ค์‹œ๊ฐ„ LLM ํ†ต์‹ ์ด ๋นˆ๋ฒˆํ•œ AI ์ง์›(MCP ์„œ๋ฒ„) ๊ธฐ๋Šฅ์„ ๊ทธ๋Œ€๋กœ ์–น๊ธฐ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์šฐ๋ ค๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๋™๊ธฐ(Sync) vs ๋น„๋™๊ธฐ(Async): Django๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™๊ธฐ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž ์ „์šฉ API๋ผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ, ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— AI๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด I/O ๋ณ‘๋ชฉํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์„œ๋ฒ„ ํ˜น์‚ฌ ๋ฐฉ์ง€: ๋ฌด๊ฑฐ์šด Django ์„œ๋ฒ„๊ฐ€ LLM์˜ ๊ธด ์‘๋‹ต ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฌ๋А๋ผ ๋ฆฌ์†Œ์Šค๋ฅผ ์ ์œ ํ•˜๊ฒŒ ๋‘๋Š” ๊ฒƒ๋ณด๋‹ค, ๋น„๋™๊ธฐ์— ์ตœ์ ํ™”๋œ FastAPI์—๊ฒŒ ์ด ์—ญํ• ์„ ๋งก๊ธฐ๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๊ฒฝ์ œ์ ์ž…๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” ์ƒˆ๋กœ์šด ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋‚ฏ์„ค์—ˆ์ง€๋งŒ, "Django๋ฅผ ์•ˆ๋‹ค๋ฉด FastAPI๋Š” ์‹์€ ์ฃฝ ๋จน๊ธฐ"๋ผ๋Š” ์กฐ์–ธ๋Œ€๋กœ ๋‹จ 30๋ถ„ ๋งŒ์— ๊ธฐ๋ณธ ์„ธํŒ…์„ ๋งˆ์น  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ ์ƒํƒœ๊ณ„์˜ ์œ ์‚ฌ์„ฑ ๋•๋ถ„์— ๋น„๋™๊ธฐ ์„œ๋ฒ„์˜ ์„ธ๊ณ„๋กœ ๋น ๋ฅด๊ฒŒ ๋ฐœ์„ ๋“ค์˜€์ฃ .


 

๐Ÿ› ๏ธ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…: Django์˜ ์œ ์‚ฐ์„ FastAPI๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ

FastAPI์—์„œ ๊ธฐ์กด Django์˜ ๋ชจ๋ธ(DB)์„ ๊ทธ๋Œ€๋กœ ์“ฐ๋ ค๋‹ˆ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์—๋Ÿฌ๋“ค์ด ํ„ฐ์ ธ ๋‚˜์™”์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ ์šฉํ•œ ๋‘ ๊ฐ€์ง€ ํ•ต์‹ฌ ํŒ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ „์šฉ settings_fastapi.py ์ƒ์„ฑ: FastAPI๊ฐ€ Django์˜ settings.py๋ฅผ ํ†ต์งธ๋กœ ๋กœ๋“œํ•˜๋ฉด ๋ถˆํ•„์š”ํ•œ ์•ฑ๊ณผ ๋ฏธ๋“ค์›จ์–ด๊นŒ์ง€ ๋ชจ๋‘ ๋ถˆ๋Ÿฌ์˜ค๋ ค๋‹ค ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์•ฑ(INSTALLED_APPS)๋งŒ ๋‚จ๊ธด ๊ฒฝ๋Ÿ‰ํ™”๋œ ์„ค์ • ํŒŒ์ผ์„ ๋ณ„๋„๋กœ ๋งŒ๋“ค์–ด ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค.

  2. ์ •ํ™•ํ•œ ๊ฒฝ๋กœ ์ง€์ •: FastAPI๊ฐ€ Django ๋ชจ๋ธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก apps.py์˜ name์„ ํ”„๋กœ์ ํŠธ๋ช…๊นŒ์ง€ ํฌํ•จํ•œ ์ „์ฒด ๊ฒฝ๋กœ(์˜ˆ: MyProject.CS)๋กœ ์ˆ˜์ •ํ•ด์•ผ ๋ชจ๋“ˆ ์ธ์‹ ์˜ค๋ฅ˜๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


 

โš ๏ธ ํ˜„์‹ค์ ์ธ ๋ฒฝ: ASGI ๋ฐฐํฌ์™€ WSGI์˜ ์ƒ์กด ์ „๋žต

๊ฐœ๋ฐœ ์„œ๋ฒ„์—์„œ๋Š” ์™„๋ฒฝํ–ˆ๋˜ ๋น„๋™๊ธฐ ํ™˜๊ฒฝ์ด ๋ผ์ด๋ธŒ ์„œ๋ฒ„ ๋ฐฐํฌ ๋‹จ๊ณ„์—์„œ ์ œ๋™์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ํ˜ธ์ŠคํŒ…์‚ฌ๊ฐ€ ASGI๋ฅผ '์‹คํ—˜์ '์œผ๋กœ๋งŒ ์ง€์›ํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ ์‹ ๊ธฐ๋ก์„ ๊ฒฝ์‹  ์ค‘์ธ TradeNPU์—๊ฒŒ ์„œ๋ฒ„ ์…ง๋‹ค์šด์€ ์žˆ์„ ์ˆ˜ ์—†๋Š” ์ผ์ด์—ˆ์ฃ .

์—ฌ๊ธฐ์„œ ์ฐพ์€ ์šฐํšŒ ์ „๋žต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • WSGI์—์„œ ์ŠคํŠธ๋ฆฌ๋ฐ ๊ตฌํ˜„: Django์˜ StreamingHttpResponse๋ฅผ ํ™œ์šฉํ•˜๋˜, ์„œ๋ฒ„ ์ธก ๋ฒ„ํผ๋ง ์„ค์ •์„ ์ฝ”๋“œ ๋‹จ์—์„œ ์ œ์–ดํ•˜์—ฌ ๋น„๋™๊ธฐ์‹ ํ‘œํ˜„(Streaming)์„ ์„ฑ๊ณต์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

  • DRF๋ฅผ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ๊ฐ€๊ต: FastAPI ์„œ๋ฒ„๊ฐ€ ์™ธ๋ถ€ ํ˜ธ์ŠคํŒ…์— ์œ„์น˜ํ•  ๊ฒฝ์šฐ DB ์ง์ ‘ ์—ฐ๊ฒฐ์€ ๋ณด์•ˆ ๋ฐ ์Šคํ‚ค๋งˆ ๊ด€๋ฆฌ์— ๋ฆฌ์Šคํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  Django ์ชฝ์—์„œ DRF(Django REST Framework)๋กœ CRUD API๋ฅผ ์—ด์–ด์ฃผ๊ณ , FastAPI(MCP ์„œ๋ฒ„)๊ฐ€ ์ด๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.


 

๐Ÿงญ ๋งˆ์น˜๋ฉฐ: ๋‹ค์‹œ MCP์˜ ๊ถค๋„๋กœ

์•„ํ‚คํ…์ฒ˜ ๊ณ ๋ฏผ ๋•Œ๋ฌธ์— ์ž ์‹œ ์ƒ›๊ธธ๋กœ ์ƒœ์ง€๋งŒ, ๊ฒฐ๊ณผ์ ์œผ๋กœ '์•ˆ์ „ํ•œ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ(DRF)'๊ณผ '์œ ์—ฐํ•œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ(FastAPI)'๋ผ๋Š” ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ์žก์„ ์ค€๋น„๋ฅผ ๋งˆ์ณค์Šต๋‹ˆ๋‹ค.

์ด์ œ ์ธํ”„๋ผ ๊ณ ๋ฏผ์€ ๋’ค๋กœํ•˜๊ณ , ๋ณธ๊ฒฉ์ ์œผ๋กœ AI ์ง์›์—๊ฒŒ ์ผ์„ ์‹œํ‚ค๊ธฐ ์œ„ํ•œ MCP ์ฝ”๋”ฉ์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ๊ณผ์—ฐ ์ด ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ตฌ์กฐ ์œ„์—์„œ AI ์ง์›์ด ์–ผ๋งˆ๋‚˜ ๊ธฐ๋ฏผํ•˜๊ฒŒ ์›€์ง์—ฌ์ค„์ง€, ๋‹ค์Œ ๊ธฐ๋ก์—์„œ ๊ณ„์†ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 


๐Ÿ’ก ์•ˆ๋‚ด: ์ด ํฌ์ŠคํŒ…์€ ๊ธฐ์กด ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ์˜ 5, 6ํšŒ์ฐจ ์—ฐ์žฌ๋ถ„์„ ํ†ตํ•ฉํ•˜์—ฌ ์žฌ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๋Œ€ํ•ด์ง„ ๋ ˆ๊ฑฐ์‹œ ์„œ๋ฒ„(Django)์™€ ์œ ์—ฐํ•œ ๋น„๋™๊ธฐ ์„œ๋ฒ„(FastAPI)๋ฅผ ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐํ•˜๊ณ , ๋ฐฐํฌ ํ™˜๊ฒฝ์˜ ์ œ์•ฝ์„ ์–ด๋–ป๊ฒŒ ๊ทน๋ณตํ–ˆ๋Š”์ง€์— ๋Œ€ํ•œ ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค.







๐Ÿ’ก TradeNPU|Knowledge Basket์—์„œ
์‚ฌ์•ˆ์— ๋Œ€ํ•œ ๋” ๊นŠ์ด ์žˆ๋Š” ๋ฒ•๋ฅ  ๋ถ„์„๊ณผ ์‹ค๋ฌด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•ด ๋ณด์„ธ์š”.