ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿ›ฃ๏ธ๋“ค์–ด๊ฐ€๋ฉฐ

python์„ ์ด์ œ ํ•™์Šตํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ๋‹ค์งํ•˜๋ฉฐ, ์…”๋ฒ„์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” FastApi๋ฅผ ๊ตฌ์ถ•ํ•ด๋ณด๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค.

python ๊ธฐ๋ฐ˜ ์„œ๋ฒ„๊ตฌ์ถ•์„ ํ†ตํ•ด ์„œ๋ฒ„๋‹จ์—์„œ ์˜์ƒ์ฒ˜๋ฆฌ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์‚ฌ์šฉํ•  ๊ณ„ํš์„ ์„ธ์› ๋‹ค.

python ๋‰ด๋น„๋กœ์„œ ๊ตฌ์ถ• ๊ณผ์ •์„ ๊ธฐ๋กํ•œ๋‹ค.

 

๐Ÿ›– Scaffolding

Project Structure

๐Ÿ“ Directory ๋ถ„์„

ํ˜„์žฌ ๊ตฌ์กฐ๋Š” Spring ๊ตฌ์กฐ์™€ ๋น„์Šทํ•˜๊ฒŒ

api ์š”์ฒญ ์ˆ˜์‹  ๋ ˆ์ด์–ด (api) → ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ ˆ์ด์–ด (services)

→ DB ์ฒ˜๋ฆฌ ๋ ˆ์ด์–ด (repos)

๋กœ ๊ตฌ์„ฑ.

 

๐Ÿ“ api

  • router ๋ชจ์Œ

๐Ÿ“ services

  • ๊ธฐ๋Šฅ ๋ ˆ์ด์–ด

๐Ÿ“ repos

  • DB ๋ ˆ์ด์–ด

๐Ÿ“ core

  • ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๋ชจ์Œ
  • config.py๋กœ app ์„ค์ • ์ฝ”์–ด๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ฆ

๐Ÿ“ schemas

  • typing ๋ ˆ์ด์–ด
  • python ํƒ€์ž… ํžŒํŠธ์™€ Pydantic ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ์ •์  ํƒ€์ž… ๊ฐ•ํ™” ๋ชฉ์ 

๐Ÿ’ก ์ •์  ํƒ€์ž… ํšจ๊ณผ

  • IDE ๋ณด์กฐ๋ฅผ ๋ฐ›์•„ ๊ฐœ๋ฐœ๊ฒฝํ—˜(DX) ํ–ฅ์ƒ์— ๋„์›€๋จ
  • ์ •์  typing์„ ํ†ตํ•ด ๋ช…ํ™•์„ฑ์„ ๋†’์ด๋ฉด AI ๋ณด์กฐ๋ฅผ ๋” ์ž˜ ๋ฐ›์„์ˆ˜ ์žˆ์Œ.

๐Ÿ“š ์˜์กด์„ฑ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ

python ํŒจํ‚ค์ง€ ์‚ฌ์ดํŠธ

node ์ง„์˜ npm์„ ์‚ฌ์šฉํ•œ ๊ฒฝํ—˜์ด ์žˆ์–ด์„œ

python์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ์˜์กด์„ฑ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š”์ง€ ์•Œ๊ณ ์ž ํ•˜์˜€๋‹ค.

1. ๊ฐ€์ƒํ™˜๊ฒฝ(venv) ๊ตฌ์„ฑ

https://fastapi.tiangolo.com/virtual-environments/#check-the-virtual-environment-is-active

python์€ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๋ณ„๋กœ ์‹คํ–‰ ํ™˜๊ฒฝ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ.

venv ๊ฐœ๋…์„ ๋ชฐ๋ž์„ ๋•Œ๋Š”

๋‹น์—ฐํžˆ ํ”„๋กœ์ ํŠธ ๋‚ด์— ์˜์กด์„ฑ ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜๋Š”์ค„ ์•Œ์•˜๋Š”๋ฐ,

ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€์— ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜์•ˆ๋˜์–ด

๊ด€๋ จ ์ •๋ณด ํ™•์ธํ•ด๋ณด๋‹ˆ venv ๊ตฌ์„ฑ์„ ํ•˜์—ฌ์•ผ ํ–ˆ๋Š”๋ฐ,

์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์„œ ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋ฅผ ํ”„๋กœ์ ํŠธ ์ „์šฉ์œผ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

venv ํด๋” ์ƒ์„ฑ

# venv ํด๋” ์ƒ์„ฑ
## ๋ฃจํŠธ์— .venv ํด๋”๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.
python -m venv .venv

.venv ์ƒ์„ฑ๋œ ๋ชจ์Šต

ํ˜„์žฌ ํ”„๋กœ์ ํŠธ venv ํ™œ์„ฑํ™”

# venv ํ™œ์„ฑํ™”
## gitbash ๊ธฐ์ค€
source .venv/Scripts/activate

venv ํ™œ์„ฑํ™” ํ™•์ธ

where python
which pip

ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋‚ด์— venv ํ™˜๊ฒฝ๋‚ด์— python์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ • ๋จ.
pip๋„ venv ํ™˜๊ฒฝ path๋กœ ๋“ฑ๋ก๋˜์–ด์žˆ๋‹ค.

โš™๏ธ 2. ํŒจํ‚ค์ง€ ์„ค์น˜

https://fastapi.tiangolo.com/#installation

fastapi ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋Š” ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ๋ชจ๋‘ ์„ค์น˜ ๊ฐ€๋Šฅ.

# fastapi ์˜์กด์„ฑ ํŒจํ‚ค์ง€ ์„ค์น˜
## standar Extra ํ™œ์šฉ
## <https://pypi.org/project/fastapi/>
pip install "fastapi[standard]"

โ˜๏ธ [standard] ๋Š” ๋ญ˜๊นŒ?

  • ํŒจํ‚ค์ง€๋Š” Extras๋ฅผ ์ด์šฉํ•ด ํŒจํ‚ค์ง€ ์ •๋ณด๋ฅผ ํ™•์žฅ ํ•  ์ˆ˜ ์žˆ์Œ
    • <ํŒจํ‚ค์ง€>[Extra] ํ˜•ํƒœ
  • fastapi[standard] ๋Š” fastapi ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ์šฉ ์‹œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•„์š”ํ•œ ์˜์กด์„ฑ ํŒจํ‚ค์ง€ ๋ชฉ๋ก์„ ๋‹ด๊ณ ์žˆ์Œ

์ฐธ๊ณ ๋กœ ๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋ชฉ๋ก์„ ์„ค์น˜ ํ•˜์˜€๋‹ค.


requirements.txt

fastapi[standard]==0.133.0
opencv-python-headless==4.13.0.92
psycopg[binary]==3.3.3
  • opencv
    • ์˜์ƒ ์ฒ˜๋ฆฌ๊ด€๋ จ
  • psycopg
    • PostgreSQL ์–ด๋ށํ„ฐ

requirements ๊ธฐ๋ฐ˜ ์„ค์น˜

ํŒ€ ๋‹จ์œ„ ์ž‘์—… ์‹œ์—๋Š” requirements.txt๋กœ ์˜์กด์„ฑ ํŒจํ‚ค์ง€ ๋ชฉ๋ก์„ ๊ณต์œ ํ•˜๊ณ ,

ํ•ด๋‹น ํŒจํ‚ค์ง€ ๋ชฉ๋ก์„ ๋™์ผํ•˜๊ฒŒ ์„ค์น˜๋ฅผ ํ•˜๋Š” ๋ฐฉ์‹์„ ์ฑ„ํƒํ•œ๋‹ค.

์„ค์น˜ ๋ช…๋ น์–ด๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

pip install -r requirements.txt

 


์ด์ƒ ๊ธฐ๋ณธ์ ์ธ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๊ณ ,

๋‹ค์Œ์€ ์‹ค์ œ app ์‹คํ–‰์„ ์œ„ํ•œ ๊ตฌํ˜„ ๊ณผ์ •์„ ์•Œ์•„๋ณด์ž. ๐Ÿƒ

๋Œ“๊ธ€