์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 

[2025 ์‹ ๊ทœ] ์–ด์„œ์™€, Fast API๋Š” ์ฒ˜์Œ์ด์ง€?

โ˜…PYTHONโ˜… Fast API๋ฅผ ํ™œ์šฉํ•œ Server ๊ฐœ๋ฐœ ๊ธฐ์ดˆ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. Fast API, SQLAlchemy, Pydantic, Starlette ๋“ฑ ์—ฌ๋Ÿฌ Package๋ฅผ ํ™œ์šฉํ•ด ์‰ฝ๊ณ , ๋น ๋ฅด๊ณ , ๊ฐ„ํŽธํ•˜๊ฒŒ Server ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ๊ฐ€์„ธ์š”! PostgreSQL๊ณผ์˜ ์—ฐ๋™์€ ๋ฌผ๋ก  DB BackupํŒŒ์ผ๋„ ์ค€๋น„๋˜์–ด ์žˆ์œผ๋‹ˆ ๊ฑฑ์ •๋งˆ์„ธ์š”! Dash์™€ Plotly๋ฅผ ํ™œ์šฉํ•œ UI Design "๊ธฐ์ดˆ"๋ฅผ ์•Œ๋ ค๋“œ๋ฆฌ๊ณ  ๊ฐ•์˜์— ์‚ฌ์šฉ๋œ Source Code๋„ ์ œ๊ณตํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค :)

28๋ช… ์ด ์ˆ˜๊ฐ•ํ•˜๊ณ  ์žˆ์–ด์š”.

Thumbnail

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[๋ฐฑ์—”๋“œ, ์›น ๊ฐœ๋ฐœ] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • API์— ๋Œ€ํ•œ ๊ฐœ๋…

  • Fast API์— ๋Œ€ํ•œ ์ดํ•ด

  • DB Operation์— ๋Œ€ํ•œ ์ดํ•ด

  • Dash, Ploty๋ฅผ ํ™œ์šฉํ•œ UI ๊ธฐ์ดˆ Design ๋ฐฉ๋ฒ•

  • API ํ˜ธ์ถœ ์‹ค์Šต ๋ฐ ์‹œ๊ฐํ™”์— ๋Œ€ํ•œ ์ดํ•ด

Server ๊ฐœ๋ฐœ ๋„๋Œ€์ฒด ์–ด๋–ป๊ฒŒ ํ•˜๋Š”๊ฑธ๊นŒ์š”? ๐Ÿค”

๋‹ต์€ Fast API์— ์žˆ์Šต๋‹ˆ๋‹ค. Python ๋ฌธ๋ฒ•๊ณผ ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‰ฝ๊ณ , ๋น ๋ฅด๊ณ , ๊ฐ„ํŽธํ•˜๊ฒŒ Server๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์ด ๋ฐ”๋กœ Fast API์ž…๋‹ˆ๋‹ค.

๋ณธ ๊ฐ•์˜์—์„œ FastAPI์™€ PostgreSQL๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ€์žฅ ๋ณธ์—ฐ์˜ Server ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์–ด ๋ด…๋‹ˆ๋‹ค. FastAPI, SQLAlchemy, Pydantic, Starlette๋ฅผ ํ™œ์šฉํ•˜๊ณ  PostgreDB ์—์„œ์˜ CRUD ๋ฐฉ๋ฒ•, Dash/Ploty๋ฅผ ํ™œ์šฉํ•œ Web UI ๋“ฑ ์›น ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ์ „๋ฐ˜์ ์ธ ์ฃผ์ œ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค. Python๊ณผ ๊ฐ์ฒด ์ง€ํ–ฅ, ์„œ๋ฒ„์˜ ๊ฐœ๋…์„ ๋ชจ๋ฅด์…”๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค! ์ด ๊ฐ•์˜๋ฅผ ์‹œ์ž‘์œผ๋กœ Server ๊ฐœ๋ฐœ์€ ๋ฌผ๋ก , Web Full-Stack ๊ฐœ๋ฐœ์˜ ๊ธฐ์ดˆ๋ฅผ ์Œ“์œผ์„ธ์š”!

๐Ÿ’ก๋ฌด์—‡์„ ์–ป์–ด๊ฐ€์‹ค ์ˆ˜ ์žˆ์„๊นŒ์š”?

  • API ๊ฐœ๋…์„ ํ™•์‹คํžˆ ์•ˆ ์ƒํƒœ์—์„œ Server ๊ฐœ๋ฐœ ์ง€์‹์„ ์–ป์–ด๊ฐ€์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • MSA ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ API๋Š” ํ•„์ˆ˜ ์š”์†Œ์ž…๋‹ˆ๋‹ค. Server๋ฅผ ์ง์ ‘ ๊ฐœ๋ฐœํ•ด๋ณด๋ฉด์„œ Server๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ง์ ‘ ์ฒด๊ฐํ•ด๋ณด์„ธ์š”.

  • Python ๊ธฐ์ดˆ ๋ฌธ๋ฒ•๋งŒ ์•Œ๊ณ  ๊ณ„์‹ ๋‹ค๋ฉด ์ˆ˜๊ฐ•์— ์ „ํ˜€ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Server ๊ฐœ๋ฐœ์€ ๋ฌผ๋ก  UI ๋ถ€๋ถ„๋„ Python ๊ธฐ๋ฐ˜์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€๋Š” ๊ฐ•์˜ ๋•Œ ์นœ์ ˆํ•˜๊ฒŒ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค :)

์ด ๊ฐ•์˜์˜ ํŠน์ง•

๐Ÿ“Œ Fast API๋ฅผ ํ™œ์šฉ์— REST-API ๊ธฐ๋ฐ˜์˜ DB CRUD API ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด๋ด…๋‹ˆ๋‹ค.

๐Ÿ“Œ SQLAlchemy ORM์„ ํ†ตํ•ด DB Table์„ ๊ฐ์ฒด๋กœ Mappingํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

๐Ÿ“Œ Schema ์„ค๊ณ„๋ฅผ ํ†ตํ•ด Body์ „๋‹ฌ๋  Data๋ฅผ Class ๋‹จ์œ„๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

๐Ÿ“Œ Dash/Plotly๋ฅผ ํ™œ์šฉํ•œ UI ๊ธฐ์ดˆ Design์„ ๋ฐฐ์›๋‹ˆ๋‹ค. ์ง์ ‘ ๋งŒ๋“  API๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์‹œ๊ฐํ™” ํ•ด๋ณด์„ธ์š”.

  • โ˜…์ด๋ก  1% ์‹ค์Šต 99%โ˜… ์นœ์ ˆํ•œ ์„ค๋ช…๊ณผ ํ•จ๊ป˜ ์‹ค์Šต ์œ„์ฃผ์˜ ์ˆ˜์—…์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • DB Backup File, UI Template ๋“ฑ ์ž๋ฃŒ๋Š” ๋ชจ๋‘ ์ œ๊ณตํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ณธ์งˆ์„ ์ดํ•ดํ•˜๋Š”๋ฐ ์ง‘์ค‘ํ•˜์„ธ์š”.

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜ ์ถ”์ฒœํ•ด์š”

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ๋กœ ๋ ˆ๋ฒจ์—…ํ•˜๊ณ  ์‹ถ์–ด์š”.DB๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ๊ณ  ํ•ด๋‹น DB๋ฅผ ํ†ตํ•ด API ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์€๋ฐ, ๊ทธ ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„

Web ์„œ๋น„์Šค์— ๊ด€์‹ฌ์žˆ์–ด์š”.
Web UI๋Š” ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์–ด์ง€๊ณ  ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ API๋ฅผ ํ˜ธ์ถœํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•˜์‹  ๋ถ„

๊ฐœ๋ฐœ ๊ณผ์ •์ด ๊ถ๊ธˆํ•ด์š”.
ํŒŒ์ด์ฌ์œผ๋กœ Server ๊ฐœ๋ฐœ ๊ณผ์ •์€ ๋ฌผ๋ก , UI ๊ธฐ์ดˆ Design ๊ณผ์ •์ด ๊ถ๊ธˆํ•˜์‹  ๋ถ„

  • DB๋ฅผ ํ™œ์šฉํ•œ Server ๊ฐœ๋ฐœ(Back-end)์€ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ์ง€ ๋ง‰๋ง‰ํ•˜์‹  ๋ถ„

  • Back-end(Server+DB) ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, UI ๊นŒ์ง€ ๋ฐฐ์›Œ์„œ Web Full-Stack ๊ฐœ๋ฐœ ์ง€์‹์ด ํ•„์š”ํ•˜์‹  ๋ถ„

์ˆ˜๊ฐ• ํ›„์—๋Š”

  • Python, PostgreSQL, database, python-dash, FastAPI๋ฅผ ํ™œ์šฉํ•ด์„œ Web Full-Stack ๊ฐœ๋ฐœ์„ ํ•˜์‹ค ์ˆ˜ ์žˆ๊ฒŒ ๋ผ์š”.

  • SQLAlchemy์™€ ๋ฏธ๋ฆฌ ์ค€๋น„๋œ DB๋ฅผ ์‚ฌ์šฉํ•ด์„œ ORM์œผ๋กœ ์•ผ๋ฌด์ง€๊ฒŒ DB CRUDํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค๋“œ๋ ค์š”. ๋ฐฑ์—”๋“œ..? ๋” ์ด์ƒ ๋‘๋ ต์ง€ ์•Š๊ฒŒ ๋ผ์š”.

  • ๊ฐ„๋‹จํ•œ API ํ˜ธ์ถœ ํ…Œ์ŠคํŠธ๋Š” ์–ด๋–ป๊ฒŒ ํ• ๊นŒ์š”?? Dash๋กœ ๊ฐ„๋‹จํ•œ Web UI ๋งŒ๋“ค์–ด๋ณด๊ณ  ๊ฐ™์ด ํ˜ธ์ถœํ•ด๋ด์š”!

  • Plotly Express๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”๊นŒ์ง€ ๋ฐฐ์›Œ๊ฐ€์„ธ์š” ๐Ÿ˜ƒ

์ด๋Ÿฐ ๋‚ด์šฉ์„ ๋ฐฐ์›Œ์š”.

API ๊ธฐ๋ณธ ๊ฐœ๋…

API..? ๋Œ€์ฒด ๋ญ”๋ฐ?? UI๋Š” ์•Œ๊ฒ ๋Š”๋ฐ API๋Š” ๋ชจ๋ฅด๊ฒ ๋‹ค? ๊ฐœ๋…๋ถ€ํ„ฐ ์‹ค์ œ ํ™œ์šฉ ์˜ˆ์‹œ๊นŒ์ง€ ํ™•์‹คํ•˜๊ฒŒ ๋ฐฐ์›Œ๋ด…์‹œ๋‹ค!Server ๊ฐœ๋ฐœ ์ „ ํ•„์ˆ˜ ๊ฐœ๋…๋“ค์„ ๋น ๋ฅด๊ณ  ์žฌ๋ฐŒ๊ฒŒ ์ตํ˜€๋ด…์‹œ๋‹ค ๐Ÿ˜„

Server ๊ฐœ๋ฐœ

Server ๊ฐœ๋ฐœ์€ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์‰ฝ๊ณ , ๋น ๋ฅด๊ณ , ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? DB Session Open ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ CRUD๊นŒ์ง€ Back-end ๋™์ž‘์˜ ๊ธฐ๋ณธ ์›๋ฆฌ๋ฅผ ๋ฐฐ์›Œ๊ฐ€์„ธ์š”!

API ํ˜ธ์ถœ ์‹ค์Šต ํ…Œ์ŠคํŠธ

๋งŒ๋“ค์—ˆ์œผ๋ฉด ์จ๋ด์•ผ์ฃ ?! Server ๊ธฐ๋™ ํ›„์— ์ง์ ‘ ๋งŒ๋“  API๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•œ Dash UI๋„ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

Visualization

UI ๋‹จ์œผ๋กœ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋Š” ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? API Response Body๋ฅผ ํ•ด์„ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ UI ๋‹จ์—์„œ Table, Graph ๋“ฑ์œผ๋กœ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š” ๐Ÿ˜†

์ด ๊ฐ•์˜๋ฅผ ๋งŒ๋“  ์‚ฌ๋žŒ

์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ

์‹ค์Šต ํ™˜๊ฒฝ

  • ๊ฐ•์˜๋Š” Windows OS๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฐ•์˜์—์„œ๋Š” VS CODE ๋ฐ PostgreSQL, Python 3.8+์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ์„ค์ •๊นŒ์ง€ ๊ฐ™์ด ์ง„ํ–‰ํ•˜๋‹ˆ ๊ฑฑ์ • ๋งˆ์„ธ์š”!

ํ•™์Šต ์ž๋ฃŒ

  • ๊ฐ ๊ฐ•์˜๋งˆ๋‹ค ์ˆ˜์—… ๋…ธํŠธ ๋ฐ ์ˆ˜์—… ์ž๋ฃŒ ์—…๋กœ๋“œ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค :)

์„ ์ˆ˜ ์ง€์‹ ๋ฐ ์œ ์˜์‚ฌํ•ญ

  • ๊ธฐ๋ณธ์ ์ธ ํŒŒ์ด์ฌ ๋ฌธ๋ฒ•

  • ๋‚˜๋จธ์ง€๋Š” ์ €๋งŒ ๋ฏฟ๊ณ  ๋”ฐ๋ผ์˜ค์„ธ์š”~~~~

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • Python ๊ธฐ์ดˆ ๋ฌธ๋ฒ•์„ ์•„์‹œ๋Š” ๋ถ„

  • ์ด๊ฑฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค :) ๊ฑฑ์ •๋ง๊ณ  ์ˆ˜๊ฐ•ํ•˜์„ธ์š”!

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • Python

์•ˆ๋…•ํ•˜์„ธ์š”
RAZOR์ž…๋‹ˆ๋‹ค.

635

๋ช…

์ˆ˜๊ฐ•์ƒ

42

๊ฐœ

์ˆ˜๊ฐ•ํ‰

41

๊ฐœ

๋‹ต๋ณ€

4.6

์ 

๊ฐ•์˜ ํ‰์ 

5

๊ฐœ

๊ฐ•์˜

์•ˆ๋…•ํ•˜์„ธ์š”. ๊ฐœ๋ฐœ์ž RAZOR ์ž…๋‹ˆ๋‹ค. Python, C#/.NET(Winform, WPF, Blazor) ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค :)

์ œ ๊ฐ•์˜ ๋“ค์–ด์ฃผ์…”์„œ ์–ธ์ œ๋‚˜ ๊ฐ์‚ฌ๋“œ๋ฆฌ๋ฉฐ, ๊ฑฐ์นจ์—†์ด ํ•˜์ดํ‚ฅ(?) ๋ง๊ณ  F/B ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!๐ŸคŸ๐ŸคŸ๐ŸคŸ

 

โ˜…RAZOR๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ณ ํ’ˆ๊ฒฉ(?) ๊ฐ•์˜ List

โ—‹ Python Fast API ๊ฐ•์˜ LINK : https://inf.run/h7eTV

โ—‹ Winform ๊ฐ•์˜ LINK : https://inf.run/iovRi

โ—‹ WPF ๊ฐ•์˜ LINK : https://inf.run/ptAYH

โ—‹ Blazor WASM ๊ฐ•์˜ LINK : https://inf.run/tptBE

โ—‹ Blazor Server ๊ฐ•์˜ LINK : https://inf.run/fKHBg

 

โ˜…RAZOR์—๊ฒŒ ๋ฉ˜ํ† ๋ง ๋ฐ›๊ณ  ์‹ถ๋‹ค๋ฉด?

โ—‹ ๋ฉ˜ํ† ๋ง LINK : https://inf.run/7u6fC

 

 โ˜…RAZOR๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•œ ์˜จ๋ผ์ธ ๊ฐ•์˜ ํŒ๋งค๋กœ ๋ถ€์ˆ˜์ž… ์–ป๋Š” ๋ฒ• ๊ถ๊ธˆํ•˜๋‹ค๋ฉด?

โ—‹ 219์ผ๋งŒ์— 1300๋งŒ์› ๋ถ€์ˆ˜์ž… ์–ป๋Š” ๋ฐฉ๋ฒ• : PDF ์ „์ž์ฑ… ํ˜•ํƒœ๋กœ ํŒ๋งคํ•ฉ๋‹ˆ๋‹ค.

โ—‹ ๊ตฌ๋งค ์˜ํ–ฅ ์žˆ์œผ์‹œ๋ฉด ๋ฉ”์ผ(resti52@naver.com)๋กœ ์—ฐ๋ฝ์ฃผ์„ธ์š” :)

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

13๊ฐœ โˆ™ (4์‹œ๊ฐ„ 1๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!