inspeep

FastAPI & Docker ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ(Zero-Downtime) ํ™˜๊ฒฝ ๊ตฌ์ถ•๊ธฐ: Nginx ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋กœ 502 Bad Gateway ์™„๋ฒฝ ํ•ด๊ฒฐ๊ธฐ

์กฐํšŒ ์ˆ˜ 10
์ถ”์ฒœ ์ˆ˜ 0
๋Œ“๊ธ€ 0

์›น์‚ฌ์ดํŠธ๋ฅผ ์šด์˜ํ•˜๋‹ค ๋ณด๋ฉด ํ•˜๋ฃจ์—๋„ ๋ช‡ ๋ฒˆ์”ฉ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ์ผ์ด ์ƒ๊น๋‹ˆ๋‹ค. ์ž์ž˜ํ•œ ์˜คํƒ€ ์ˆ˜์ •๋ถ€ํ„ฐ ์ƒˆ๋กœ์šด ๋ฉ”๋‰ด ์ถ”๊ฐ€, ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”(SEO)๋ฅผ ์œ„ํ•œ ๋ฉ”ํƒ€ ํƒœ๊ทธ ํŠœ๋‹๊นŒ์ง€ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์—๋Š” ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ๋‚˜๋ฉด ๋ฐ˜๋“œ์‹œ docker-compose restart ๋ช…๋ น์–ด๋ฅผ ์ณ์„œ ์„œ๋ฒ„๋ฅผ ๊ป๋‹ค ์ผœ์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ์ด '๊ป๋‹ค ์ผœ๋Š”' 10์ดˆ ๋‚จ์ง“ํ•œ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์ด ์ฐฐ๋‚˜์˜ ์ˆœ๊ฐ„์— ๊ฒŒ์‹œ๊ธ€์„ ์ฝ๊ณ  ์žˆ๊ฑฐ๋‚˜ ๋Œ“๊ธ€์„ ์ž‘์„ฑํ•˜๋˜ ์œ ์ €๋“ค์€ ๋”์ฐํ•œ 502 Bad Gateway ํ•˜์–€ ์—๋Ÿฌ ํ™”๋ฉด์„ ๋งˆ์ฃผํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ๊ธ€ ์• ๋“œ์„ผ์Šค ์‹ฌ์‚ฌ ๋กœ๋ด‡(Mediapartners-Google) ์—ญ์‹œ ํ•˜ํ•„ ์ด ํƒ€์ด๋ฐ์— ์ ‘์†ํ•˜๊ฒŒ ๋˜๋ฉด "์‚ฌ์ดํŠธ๊ฐ€ ๋‹ค์šด๋˜์—ˆ๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ"์ด๋ผ๋Š” ์น˜๋ช…์ ์ธ ํŒ์ •์„ ๋‚ด๋ฆฌ๊ณ  ๋ง™๋‹ˆ๋‹ค.

์œ ์ €๋“ค์˜ ๋ถˆํŽธ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ํ•ญ์ƒ ์ƒˆ๋ฒฝ 3์‹œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์„œ๋ฒ„๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋˜ ๊ณ ๋‹จํ•œ ์ผ์ƒ์„ ๋ฒ—์–ด๋‚˜๊ณ ์ž, Nginx์™€ Docker๋ฅผ ํ™œ์šฉํ•œ ์™„๋ฒฝํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ(Zero-Downtime Deployment) ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•œ ๊ณผ์ •์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.



1. ์™œ 502 Bad Gateway๊ฐ€ ๋ฐœ์ƒํ• ๊นŒ? (Downtime์˜ ์ดํ•ด)


Nginx๋Š” ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๊ฐ€์žฅ ๋จผ์ € ๋ฐ›์•„ ๋’ท๋‹จ์˜ ํŒŒ์ด์ฌ(FastAPI) ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•ด ์ฃผ๋Š” 'ํ˜„๊ด€๋ฌธ(Reverse Proxy)' ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ๋ฐฐํฌ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  1. ๊ฐœ๋ฐœ์ž๊ฐ€ ์—…๋ฐ์ดํŠธ ๋ช…๋ น์„ ๋‚ด๋ฆผ.

  2. ๊ธฐ์กด FastAPI ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋จ. (์ด๋•Œ๋ถ€ํ„ฐ ํ˜„๊ด€๋ฌธ์— ๋“ค์–ด์˜จ ์œ ์ €๋“ค์€ ๊ธธ์„ ์žƒ๊ณ  502 ์—๋Ÿฌ๋ฅผ ๋ฐ›์Œ)

  3. ์ƒˆ๋กœ์šด ์ฝ”๋“œ๊ฐ€ ์ ์šฉ๋œ FastAPI ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋จ.

  4. Uvicorn ์„œ๋ฒ„๊ฐ€ ๊ฐ€๋™๋˜๊ณ  DB์™€ ์—ฐ๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ์•ฝ 5์ดˆ ๋Œ€๊ธฐ.

  5. ์„œ๋ฒ„ ์ค€๋น„ ์™„๋ฃŒ. ์ •์ƒ ์„œ๋น„์Šค ์žฌ๊ฐœ.

2๋ฒˆ๊ณผ 5๋ฒˆ ์‚ฌ์ด์˜ ์‹œ๊ฐ„์ด ๋ฐ”๋กœ '๋‹ค์šดํƒ€์ž„(Downtime)'์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์—†์• ๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ์•„์ด๋””์–ด๋Š” ์•„์ฃผ ๋‹จ์ˆœํ•ฉ๋‹ˆ๋‹ค. "์ƒˆ๋กœ์šด ์„œ๋ฒ„(Green)๊ฐ€ ์™„์ „ํžˆ ์ผœ์ ธ์„œ ํŠธ๋ž˜ํ”ฝ์„ ๋ฐ›์„ ์ค€๋น„๊ฐ€ ๋๋‚œ ๊ฒƒ์„ ํ™•์ธํ•œ ๋’ค์—, ๊ธฐ์กด ์„œ๋ฒ„(Blue)๋ฅผ ๋„๋ฉด ๋˜์ง€ ์•Š์„๊นŒ?"



2. ํ•ด๊ฒฐ์ฑ… 1๋‹จ๊ณ„: Nginx Upstream ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ


๋จผ์ € Nginx๊ฐ€ ํ•˜๋‚˜์˜ ๊ณ ์ •๋œ ํฌํŠธ(์˜ˆ: 8000)๋งŒ ๋ฐ”๋ผ๋ณด๋˜ ๊ฒƒ์„, ๋‘ ๊ฐœ์˜ ํฌํŠธ(์˜ˆ: 8001, 8002)๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ๋ฐ”๋ผ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด nginx.conf ํŒŒ์ผ์— upstream ๋ธ”๋ก์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ Nginx๋Š” 8001๋ฒˆ๊ณผ 8002๋ฒˆ ํฌํŠธ ์ค‘ ์‚ด์•„์žˆ๋Š” ๊ณณ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋˜‘๋˜‘ํ•˜๊ฒŒ ๋ถ„๋ฐฐ(Load Balancing)ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ๊ฐ–์ถ”๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.



3. ํ•ด๊ฒฐ์ฑ… 2๋‹จ๊ณ„: ๋™์  ์Šค์œ„์นญ ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ(deploy.sh) ์ž‘์„ฑ


ํ”„๋ก ํŠธ์—”๋“œ ์ตœ์ ํ™”(๋น ๋ฅธ ๋กœ๋”ฉ)์™€ ๊น”๋”ํ•œ ๋””์ž์ธ(Clean design)์„ ์œ ์ง€ํ•˜๋ ค๋ฉด ๋ฐฑ์—”๋“œ์˜ ๊ต์ฒด ๊ณผ์ •์ด ๋ฌผ ํ๋ฅด๋“ฏ ์ž์—ฐ์Šค๋Ÿฌ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” Docker์˜ docker-compose up -d --scale ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ๊ต๋Œ€ ๊ทผ๋ฌด๋ฅผ ์„œ๋Š” ์ž๋™ํ™” ์‰˜ ์Šคํฌ๋ฆฝํŠธ(deploy.sh)๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ์˜ ํ•ต์‹ฌ ๋…ผ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ํ˜„์žฌ 8001 ํฌํŠธ๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  2. 8001์ด ์‹คํ–‰ ์ค‘์ด๋ผ๋ฉด, ์ƒˆ ์ฝ”๋“œ๋ฅผ ์ž…ํžŒ ์ปจํ…Œ์ด๋„ˆ๋ฅผ 8002 ํฌํŠธ์— ๋„์›๋‹ˆ๋‹ค.

  3. 8002 ํฌํŠธ์— curl ๋ช…๋ น์–ด๋ฅผ ๋‚ ๋ ค 200 OK ์‘๋‹ต์ด ์˜ฌ ๋•Œ๊นŒ์ง€(Uvicorn์ด ์™„์ „ํžˆ ์ผœ์งˆ ๋•Œ๊นŒ์ง€) 1์ดˆ๋งˆ๋‹ค ๋ฐ˜๋ณตํ•ด์„œ ํ—ฌ์Šค ์ฒดํฌ(Health Check)๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

  4. ์ƒˆ ์„œ๋ฒ„๊ฐ€ ์™„๋ฒฝํžˆ ์ผœ์ง„ ๊ฒƒ์ด ํ™•์ธ๋˜๋ฉด, Nginx์—๊ฒŒ sudo systemctl reload nginx ๋ช…๋ น์„ ๋‚ด๋ ค ํ˜„๊ด€๋ฌธ์˜ ๋ฐฉํ–ฅ์„ 8002๋ฒˆ์œผ๋กœ ๋Œ๋ฆฝ๋‹ˆ๋‹ค.

  5. ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ตฌ๋ฒ„์ „์ด ๋˜์–ด๋ฒ„๋ฆฐ 8001 ํฌํŠธ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ข…๋ฃŒ(stop ๋ฐ rm)์‹œํ‚ต๋‹ˆ๋‹ค.

์ด ๋ฐฉ์‹์„ ์ ์šฉํ•œ ํ›„, ๋ฐฐํฌ ๋„์ค‘ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์ดํŠธ ์ƒˆ๋กœ๊ณ ์นจ(F5)์„ ์—ฐํƒ€ํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” ๊ฒฝ์ด๋กœ์› ์Šต๋‹ˆ๋‹ค. ํ™”๋ฉด์ด ๋ฉˆ์ถ”๊ฑฐ๋‚˜ 502 ์—๋Ÿฌ๊ฐ€ ๋œจ๋Š” ํ˜„์ƒ์ด ๋‹จ ํ•œ ๋ฒˆ๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ์œ ์ € ์ž…์žฅ์—์„œ๋Š” ์„œ๋ฒ„๊ฐ€ ์–ธ์ œ ์—…๋ฐ์ดํŠธ๋˜์—ˆ๋Š”์ง€์กฐ์ฐจ ๋ˆˆ์น˜์ฑŒ ์ˆ˜ ์—†์„ ๋งŒํผ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ƒˆ๋กœ์šด ์ฝ”๋“œ๊ฐ€ ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.



๋งบ์œผ๋ฉฐ: ์„œ๋ฒ„์˜ ์•ˆ์ •์„ฑ์ด ๊ณง '๊ฐ€์น˜ ์žˆ๋Š” ์›น์‚ฌ์ดํŠธ'์˜ ์ฆ๋ช…์ด๋‹ค


๊ตฌ๊ธ€ ์• ๋“œ์„ผ์Šค 2026 ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋Š” "๋น ๋ฅธ ๋กœ๋”ฉ(Fast loading)"๊ณผ "์‚ฌ์ดํŠธ์˜ ๊ธฐ์ˆ ์  ์™„์„ฑ๋„(Apply only after site looks complete)"๋ฅผ ๋งค์šฐ ๊น๊นํ•˜๊ฒŒ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ๊ธ€(Text)๋งŒ 1,500์ž๋ฅผ ์ฑ„์› ๋‹ค๊ณ  ํ•ด์„œ ๊ณ ํ’ˆ์งˆ ์‚ฌ์ดํŠธ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์„œ๋ฒ„์˜ ๋‹ค์šดํƒ€์ž„์€ ๊ฒ€์ƒ‰์—”์ง„ ๋ด‡์—๊ฒŒ๋Š” ์น˜๋ช…์ ์ธ ๊ฐ์  ์š”์†Œ์ž…๋‹ˆ๋‹ค. ๋ด‡์ด ์‚ฌ์ดํŠธ์˜ ๋‚ด์šฉ์„ ์ˆ˜์ง‘ํ•˜๋Ÿฌ ์™”๋Š”๋ฐ 502 ์—๋Ÿฌ๋ฅผ ๋ฑ‰์–ด๋‚ธ๋‹ค๋ฉด, ๊ตฌ๊ธ€์€ ํ•ด๋‹น ์‚ฌ์ดํŠธ๋ฅผ '์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋งค์ฒด'๋กœ ๋ถ„๋ฅ˜ํ•˜์—ฌ ์ƒ‰์ธ(Indexing)์„ ๋ˆ„๋ฝ์‹œํ‚ค๊ฑฐ๋‚˜ ์• ๋“œ์„ผ์Šค ์‹ฌ์‚ฌ๋ฅผ ๊ฑฐ์ ˆํ•ด ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ(Zero-Downtime) ํ™˜๊ฒฝ ๊ตฌ์ถ•์„ ํ†ตํ•ด, ์ €๋Š” ์‹œ๊ฐ„๊ณผ ์žฅ์†Œ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๊ณ  ์–ธ์ œ๋“  ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์–‘์งˆ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š” ์ž์œ ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. 1์ธ ๊ฐœ๋ฐœ์ž๋กœ์„œ ํŠธ๋ž˜ํ”ฝ์„ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ ์  ํƒ„ํƒ„ํ•จ(E-E-A-T)์„ ์ฆ๋ช…ํ•ด ๋ƒˆ์œผ๋‹ˆ, ๊ตฌ๊ธ€ ์‹ฌ์‚ฌ๊ด€ ์—ญ์‹œ ์ด ์›น์‚ฌ์ดํŠธ์˜ ์ง„๊ฐ€๋ฅผ ์•Œ์•„๋ด ์ค„ ๊ฒƒ์ด๋ผ ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.


์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ (FAQ)


Q1. Nginx reload์™€ Nginx restart์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

A. ์™„๋ฒฝํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ reload๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. restart๋Š” Nginx ํ”„๋กœ์„ธ์Šค ์ž์ฒด๋ฅผ ๊ฐ•์ œ๋กœ ์ฃฝ์˜€๋‹ค๊ฐ€ ๋‹ค์‹œ ์‚ด๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์ˆœ๊ฐ„ ์ ‘์† ์ค‘์ด๋˜ ์œ ์ €๋“ค์˜ ์—ฐ๊ฒฐ์ด ํˆญ ๋Š์–ด์ง‘๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด reload๋Š” ํ˜„์žฌ ๋“ค์–ด์™€ ์žˆ๋Š” ์œ ์ €๋“ค์˜ ์—ฐ๊ฒฐ์€ ๋๊นŒ์ง€ ์œ ์ง€ํ•œ ์ฑ„, ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ๋ถ€ํ„ฐ๋งŒ ์ƒˆ ์„ค์ • ํŒŒ์ผ(๋ฐ”๋€ ํฌํŠธ)๋กœ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋„˜๊ฒจ์ฃผ๋ฏ€๋กœ ์œ ์ € ๊ฒฝํ—˜(UX) ํ›ผ์†์ด ์ „ํ˜€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Q2. Docker๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ผ๋ฐ˜์ ์ธ ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ๋„ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ๊ฐ€์š”?

A. ๋„ค, ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ์ž์ธ PM2, Gunicorn, ๋˜๋Š” Supervisor ๋“ฑ์„ ํ™œ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. Gunicorn์˜ ๊ฒฝ์šฐ kill -HUP <PID> ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋งˆ์Šคํ„ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฃฝ์ด์ง€ ์•Š๊ณ  ์›Œ์ปค(Worker) ํ”„๋กœ์„ธ์Šค๋งŒ ์ƒˆ ์ฝ”๋“œ๋กœ ๊ต์ฒดํ•˜๋Š” ๊ทธ๋ ˆ์ด์Šคํ’€ ๋ฆฌ๋กœ๋“œ(Graceful Reload) ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋ฏ€๋กœ, Docker ์—†์ด๋„ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ์™€ ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q3. ๋ฐฐํฌ ์ค‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB) ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜(Migration)์ด ์žˆ์„ ๋•Œ๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?

A. ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์—์„œ ๊ฐ€์žฅ ๊นŒ๋‹ค๋กœ์šด ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์ƒํ™ฉ์—์„œ๋Š” ๊ตฌ๋ฒ„์ „(Blue)๊ณผ ์‹ ๋ฒ„์ „(Green) ์„œ๋ฒ„๊ฐ€ ์•„์ฃผ ์งง์€ ์‹œ๊ฐ„ ๋™์•ˆ ๋™์‹œ์— ์‚ด์•„์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์‹ ๋ฒ„์ „์ด DB ์ปฌ๋Ÿผ ์ด๋ฆ„์„ ๋ฐ”๊ฟ”๋ฒ„๋ฆฌ๋ฉด, ์•„์ง ์ผœ์ ธ ์žˆ๋Š” ๊ตฌ๋ฒ„์ „ ์„œ๋ฒ„์—์„œ ์—๋Ÿฌ๊ฐ€ ํญ์ฃผํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ DB ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ํ•ญ์ƒ 'ํ•˜์œ„ ํ˜ธํ™˜์„ฑ'์„ ์ง€ํ‚ค๋„๋ก ๋‘ ๋‹จ๊ณ„๋กœ ์ชผ๊ฐœ์–ด ์ž‘์—…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (1๋‹จ๊ณ„: ์ƒˆ ์ปฌ๋Ÿผ ์ถ”๊ฐ€ ํ›„ ๋ฐฐํฌ -> 2๋‹จ๊ณ„: ์•ฑ ์ฝ”๋“œ์—์„œ ๊ตฌ ์ปฌ๋Ÿผ ์‚ฌ์šฉ์„ ์™„์ „ํžˆ ์—†์•ค ํ›„ ๊ตฌ ์ปฌ๋Ÿผ ์‚ญ์ œ ๋ฐฐํฌ).

๐Ÿ’ฌ ๋Œ“๊ธ€ 0๊ฐœ

IT ๊ฒŒ์‹œํŒ

๊ณต์ง€
Notice
๊ณต์ง€ inspeep ์ปค๋ฎค๋‹ˆํ‹ฐ ์ด์šฉ ๋ฐ ๊ฒŒ์‹œ๋ฌผ ๊ด€๋ฆฌ ๊ทœ์ • ์•ˆ๋‚ด
๐Ÿ‘ค ๊ด€๋ฆฌ์ž ๐Ÿ“… 2026.04.15 ๐Ÿ‘€ ์กฐํšŒ 57 ๐Ÿ‘ ์ถ”์ฒœ 0
BEST
์ธ๋„ค์ผ
BEST 2. ์ฝ”๋”ฉ ๋ฌธ์™ธํ•œ์˜ ์›Œ๋“œํ”„๋ ˆ์Šค ์ •๋ณต๊ธฐ: VS Code์™€ FTP์˜ ์Šต๊ฒฉ
๐Ÿ‘ค ๊ด€๋ฆฌ์ž ๐Ÿ“… 2026.03.05 ๐Ÿ‘€ ์กฐํšŒ 135 ๐Ÿ‘ ์ถ”์ฒœ 0
Random Pick
์ธ๋„ค์ผ
Random Pick ๋Œ€๊ตฌ ๋ชจํ…”๋ฐฉ ์•ˆ ์Šค๋งˆํŠธํฐ ์ˆ˜์‹ญ๋Œ€์˜ ์ •์ฒด.....jpg
๐Ÿ‘ค ์•ผ๋ฆฌํƒ€ ๐Ÿ“… 2026.10.15 ๐Ÿ‘€ ์กฐํšŒ 0 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ๊ธฐ
No Image
๊ฐœ๋ฐœ๊ธฐ
์ธ๋„ค์ผ
11. ํ•ญ์ƒ ๋งŒ๋“ค๊ณ  ๋‚˜๋ฉด ์กฐ๊ธˆ์”ฉ ์•„์‰ฝ๋‹ค: ๊ณ„์†๋˜๋Š” ๋‹ค๋“ฌ๊ธฐ
๐Ÿ‘ค ๊ด€๋ฆฌ์ž ๐Ÿ“… 2026.03.05 ๐Ÿ‘€ ์กฐํšŒ 114 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ๊ธฐ
์ธ๋„ค์ผ
๊ฐœ๋ฐœ๊ธฐ
์ธ๋„ค์ผ
๊ฐœ๋ฐœ๊ธฐ
์ธ๋„ค์ผ
๊ฐœ๋ฐœ๊ธฐ
์ธ๋„ค์ผ
2. ์ฝ”๋”ฉ ๋ฌธ์™ธํ•œ์˜ ์›Œ๋“œํ”„๋ ˆ์Šค ์ •๋ณต๊ธฐ: VS Code์™€ FTP์˜ ์Šต๊ฒฉ
๐Ÿ‘ค ๊ด€๋ฆฌ์ž ๐Ÿ“… 2026.03.05 ๐Ÿ‘€ ์กฐํšŒ 135 ๐Ÿ‘ ์ถ”์ฒœ 0
« ์ฒ˜์Œ ‹ ์ด์ „ 1 2 3 4 5 6 7
โœ๏ธ ๊ธ€์“ฐ๊ธฐ