<aside>

</aside>

์•ˆ๋…•ํ•˜์„ธ์š”! ๋“œ๋””์–ด ์ด ๊ฐ•์˜์˜ ๋งˆ์ง€๋ง‰ ์—ฌ์ •, 8๋ถ€: ๋ฐฐํฌ ๋ฐ ์šด์˜์˜ ์ฒซ ์‹œ๊ฐ„, 37๊ฐ•์ž…๋‹ˆ๋‹ค! ๐Ÿšขโ˜๏ธ

7๋ถ€๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” FastAPI์˜ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™, ์ธ์ฆ/๋ณด์•ˆ, ์„ฑ๋Šฅ ์ตœ์ ํ™” ํŒ๊นŒ์ง€ ๋ฐฐ์šฐ๋ฉฐ ๊ธฐ๋Šฅ์ ์œผ๋กœ ์™„์„ฑ๋„ ๋†’๊ณ  ์„ฑ๋Šฅ ์ข‹์€ ToDo List API๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง ๊ธด ์—ฌ์ •์ด์—ˆ๊ณ , ์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘ ์ •๋ง ๋Œ€๋‹จํ•œ ์„ฑ์žฅ์„ ์ด๋ฃจ์…จ์–ด์š”! ๐Ÿฅณย ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์ด ๋ฉ‹์ง„ API๋Š” ์•„์ง ์šฐ๋ฆฌ ๊ฐœ๋ฐœ ์ปดํ“จํ„ฐ ์•ˆ์—์„œ๋งŒ ์ž‘๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ์‚ฌ์šฉ์ž๋“ค์ด ์ด API๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด, ์•ˆ์ •์ ์ธ ์„œ๋ฒ„ ํ™˜๊ฒฝ(์˜ˆ: ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„)์— ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์˜ฎ๊ฒจ์„œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ **๋ฐฐํฌ(Deployment)**๋ผ๊ณ  ํ•˜์ฃ .

๊ทธ๋Ÿฐ๋ฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์ž˜ ๋Œ์•„๊ฐ€๋˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ๋Š” ์˜จ๊ฐ– ๋ฌธ์ œ(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „ ์ถฉ๋Œ, ์„ค์ • ์˜ค๋ฅ˜, ์šด์˜์ฒด์ œ ์ฐจ์ด ๋“ฑ)๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋น„์ผ๋น„์žฌํ•ฉ๋‹ˆ๋‹ค. "์–ด? ์ œ ์ปดํ“จํ„ฐ์—์„œ๋Š” ์ž˜ ๋˜๋Š”๋ฐ์š”? ๐Ÿค”" ๋ผ๋Š” ๋ง์ด ๊ดœํžˆ ๋‚˜์˜จ ๊ฒŒ ์•„๋‹ˆ์ฃ !

์ด๋ฒˆ 8๋ถ€์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ฐฐํฌ์˜ ์–ด๋ ค์›€์„ ํ•ด๊ฒฐํ•˜๊ณ , ํ˜„๋Œ€์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์•ˆ์ •์ ์ด๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋ฐฐํฌ ๋ฐ ์šด์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค. ๊ทธ ์ฒซ๊ฑธ์Œ์œผ๋กœ, ์ด๋ฒˆ 37๊ฐ•์—์„œ๋Š” Docker๋ผ๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์šฐ๋ฆฌ FastAPI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ **์ปจํ…Œ์ด๋„ˆ(Container)**๋กœ ํฌ์žฅํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆํ™”(Containerization) ๊ณผ์ •์„ ๋ฐฐ์šฐ๊ฒ ์Šต๋‹ˆ๋‹ค! Docker๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ค ํ™˜๊ฒฝ์—์„œ๋“  ๋™์ผํ•˜๊ฒŒ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์น˜ ์ด์‚ฟ์ง์„ ๊ทœ๊ฒฉํ™”๋œ ์ปจํ…Œ์ด๋„ˆ ๋ฐ•์Šค์— ๋‹ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ์š”! ๐Ÿ“ฆ๐Ÿณ


๐Ÿ“š ์ฑ•ํ„ฐ ์†Œ๊ฐœ

8๋ถ€ '๋ฐฐํฌ ๋ฐ ์šด์˜' ์‹œ์ž‘. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ์–ด๋ ค์›€์˜ ํ˜„๋Œ€์  ํ•ด๋ฒ•์ธ Docker ์ปจํ…Œ์ด๋„ˆ ์†Œ๊ฐœ ๋ฐ FastAPI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ Docker ์ด๋ฏธ์ง€ ์ƒ์„ฑ๋ฒ• ํ•™์Šต.

์ „ํ†ต์  ๋ฐฐํฌ์˜ ์–ด๋ ค์›€(์˜์กด์„ฑ, ํ™˜๊ฒฝ ๋ถˆ์ผ์น˜) ํŒŒ์•…. ํ•ด๊ฒฐ์ฑ…์ธ ๊ฐ€์ƒํ™” ๊ธฐ์ˆ , **๊ฐ€์ƒ ๋จธ์‹ (VM)**๊ณผ **์ปจํ…Œ์ด๋„ˆ(Container)**์˜ ์ฐจ์ด์  ๋น„๊ต ๋ฐ ์ปจํ…Œ์ด๋„ˆ ์žฅ์  ํ•™์Šต.

๊ฐ€์žฅ ๋„๋ฆฌ ์“ฐ์ด๋Š” ์ปจํ…Œ์ด๋„ˆ ํ”Œ๋žซํผ Docker์˜ ๊ธฐ๋ณธ ๊ฐœ๋…(์ด๋ฏธ์ง€, ์ปจํ…Œ์ด๋„ˆ, Dockerfile) ์ดํ•ด. Docker๋ฅผ ํ†ตํ•ด ์•ฑ ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํฌํ•จํ•œ ํ‘œ์ค€ '์ด๋ฏธ์ง€' ์ƒ์„ฑ, ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์–ด๋””์„œ๋“  ๋™์ผํ•˜๊ฒŒ ์‹คํ–‰๋˜๋Š” ๊ฒฉ๋ฆฌ '์ปจํ…Œ์ด๋„ˆ' ํ™˜๊ฒฝ ๊ตฌ์ถ• ๊ฐ€๋Šฅ.

ํ”„๋กœ์ ํŠธ ํŒŒ์ด์ฌ ์˜์กด์„ฑ ๊ด€๋ฆฌ์šฉ requirements.txt ํŒŒ์ผ ์ƒ์„ฑ ์‹ค์Šต. ์•ฑ์˜ Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ฐฉ๋ฒ•์„ ๋ช…์‹œํ•˜๋Š” Dockerfile ์ž‘์„ฑ ๋‹จ๊ณ„๋ณ„ ์‹ค์Šต. Dockerfile์„ ์ด์šฉํ•œ docker build๋กœ Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ, docker run์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ํ›„ Docker ํ™˜๊ฒฝ ๋‚ด ์•ฑ ๊ตฌ๋™ ํ™•์ธ.


๐ŸŽฏ ์ฑ•ํ„ฐ ๋ชฉํ‘œ

์ด ๊ฐ•์˜๋ฅผ ๋งˆ์น˜๋ฉด ์—ฌ๋Ÿฌ๋ถ„์€ ๋‹ค์Œ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค:

  1. ์ „ํ†ต์  ๋ฐฐํฌ์˜ ์–ด๋ ค์›€๊ณผ Docker ์ปจํ…Œ์ด๋„ˆ์˜ ํ•ด๊ฒฐ ๋ฐฉ์‹ ์ดํ•ด.
  2. **๊ฐ€์ƒ ๋จธ์‹ (VM)**๊ณผ ์ปจํ…Œ์ด๋„ˆ์˜ ์ฐจ์ด์  ์„ค๋ช….
  3. Docker ๊ธฐ๋ณธ ๊ฐœ๋…(์ด๋ฏธ์ง€, ์ปจํ…Œ์ด๋„ˆ, Dockerfile) ์ดํ•ด.
  4. pip freeze๋ฅผ ์‚ฌ์šฉํ•œ requirements.txt ํŒŒ์ผ ์ƒ์„ฑ.
  5. FastAPI์šฉ Dockerfile ์ž‘์„ฑ ๋ฐ ์ฃผ์š” ๋ช…๋ น์–ด(FROM, WORKDIR, COPY, RUN, EXPOSE, CMD) ์‚ฌ์šฉ.
  6. docker build ๋ช…๋ น์–ด๋กœ Dockerfile๋กœ๋ถ€ํ„ฐ Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ.