"๋ด ์ปดํจํฐ์์ ์ ๋๋๋ฐ?" 1์ธ ๊ฐ๋ฐ์์ FastAPI Docker(๋์ปค) ์ปจํ ์ด๋ ๋์ ๊ธฐ
๊ฐ๋ฐ์๋ผ๋ฉด ๋๊ตฌ๋ ํ ๋ฒ์ฏค ๊ฒช์ด๋ณด์์ ์์ฃผ ๋ฌด์์ด ๊ดด๋ด์ด ํ๋ ์์ต๋๋ค. ๋ก์ปฌ(๋ด ์ปดํจํฐ) ํ๊ฒฝ์์ ๋ฐค์ ์์๊ฐ๋ฉฐ ์๋ฒฝํ๊ฒ ์ฝ๋๋ฅผ ์ง๊ณ , ํ ์คํธ๊น์ง ํ๋ฅญํ๊ฒ ํต๊ณผํด์ "์ด์ ์ง์ง ๋๋ฌ๋ค!" ํ๊ณ ์๋ฒ์ ์ฝ๋๋ฅผ ์ฌ๋ ธ๋๋ฐ... ์ ์ ์ค์ ์ด์ ์๋ฒ์์๋ ์๋ฌ๋ฅผ ๋ฟ์ผ๋ฉฐ ์คํ์กฐ์ฐจ ๋์ง ์๋ ํ์์ด์ฃ . ํํ ๋งํ๋ "์ด? ๋ด ๋ก์ปฌ PC์์ ์ ๋๋๋ฐ์?"์ ์ ์ฃผ์ ๋๋ค.
์ ์ญ์ ์ต๊ทผ ์ค๋ผํด ํด๋ผ์ฐ๋(Oracle Cloud)์ ๋น ๋ฆฌ๋ ์ค(Ubuntu) ์๋ฒ๋ฅผ ์๋ก ์๋ํ๊ณ ํ์ด์ฌ(FastAPI) ๋ฐฑ์๋๋ฅผ ๋ฐฐํฌํ๋ ๊ณผ์ ์์ ์ด ์ ์ฃผ๋ฅผ ์ ํต์ผ๋ก ๋ง์์ต๋๋ค. ์ค๋์ ํ์ด์ฌ ๋ฒ์ ์ถฉ๋๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์กด์ฑ ์ง์ฅ์์ ์ ๋ฅผ ๊ตฌ์ถํด ์ค ๋ง๋ฒ ๊ฐ์ ๊ธฐ์ , ๋์ปค(Docker) ๋์ ๊ธฐ๋ฅผ ์ ์ด๋ณด๋ ค ํฉ๋๋ค.
1. ๋ฉ๋ถ์ ์ฐ์: ์๋ฒ ํ๊ฒฝ๊ณผ ๋ก์ปฌ ํ๊ฒฝ์ ์์ ํ ๋ฌ๋๋ค
์ฌ๊ฑด์ ๋ฐ๋จ์ ์ด๋ ์ต๋๋ค. ์ ์๋์ฐ(Windows) ๋
ธํธ๋ถ์๋ ํ์ด์ฌ 3.11 ๋ฒ์ ์ด ๊น๋ ค ์์๊ณ , ๊ทธ ์์ FastAPI์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋์ ์ํ ์๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ pip install๋ก ๋์ง๋์ง ์ค์นํด ๋ ์ํ์์ต๋๋ค.
์ฝ๋๋ฅผ ๋ค ์ง๊ณ ๊นํ๋ธ(GitHub)๋ฅผ ํตํด ์ค๋ผํด ํด๋ผ์ฐ๋ ์ฐ๋ถํฌ ์๋ฒ๋ก ์ฝ๋๋ฅผ ๊ฐ์ ธ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๊ฐ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ค์นํ๋ ค๊ณ ํ๋๋ฐ, ์๋ฒ์ ๊ธฐ๋ณธ ํ์ด์ฌ ๋ฒ์ ์ 3.10์ด์๊ณ ์ด์์ฒด์ (OS)๊ฐ ๋ฆฌ๋ ์ค๋ค ๋ณด๋ ์๋์ฐ์์ ์๋ง ๊น๋ฆฌ๋ ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด C++ ์ปดํ์ผ๋ฌ ์๋ฌ๋ฅผ ๋ฑ์ผ๋ฉฐ ์ค์น๋ฅผ ๊ฑฐ๋ถํ๊ธฐ ์์ํ์ต๋๋ค.
๋ถ๋ด๋ถ๋ด ์ฐ๋ถํฌ ์๋ฒ์ ํ์ด์ฌ ๋ฒ์ ์ ๊ฐ์ ๋ก ์ฌ๋ฆฌ๋ ค๋ค ๋ฆฌ๋ ์ค ์์คํ ํจํค์ง๊ฐ ๊ผฌ์ฌ๋ฒ๋ ธ๊ณ , ๊ฒฐ๊ตญ ๋๋ฌผ์ ๋จธ๊ธ๊ณ ์๋ฒ ์ธ์คํด์ค๋ฅผ ํต์งธ๋ก ์ญ์ ํ ๋ค ์ฒ์๋ถํฐ ๋ค์ ์ธํ ํด์ผ๋ง ํ์ต๋๋ค. ์๋ฒ๋ฅผ ์ฎ๊ธธ ๋๋ง๋ค ์ด ์ง์ ๋ฐ๋ณตํด์ผ ํ๋ค๊ณ ์๊ฐํ๋ ๋์์ด ์บ์บํด์ก์ต๋๋ค.
2. ๊ตฌ์ํฌ์ ๋์ปค(Docker)์ ๋ฑ์ฅ: ๋ด ์ปดํจํฐ ํ๊ฒฝ์ ํต์งธ๋ก ์ผ๋ ค๋ฒ๋ฆฌ์
์ด ์ง๋ ํ 'ํ๊ฒฝ ๋ถ์ผ์น' ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ ๊น ๊ณ ๋ฏผํ๋ค๊ฐ ๋์ ํ ๊ฒ์ด ๋ฐ๋ก ๋์ปค(Docker)์ ๋๋ค.
๋์ปค์ ์๋ฆฌ๋ ์๊ฐ๋ณด๋ค ์์ฃผ ์ง๊ด์ ์ ๋๋ค. ์ฝ๋๋ฅผ ์คํํ๋ ค๋ฉด ์ฝ๋ ํ์ผ๋ฟ๋ง ์๋๋ผ, ๊ทธ ์ฝ๋๊ฐ ๋์๊ฐ๋ ํ์ด์ฌ ๋ฒ์ , ์ด์์ฒด์ (OS) ํ๊ฒฝ, ๊ฐ์ข ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ๋ชจ๋ ํ์ํ์ฃ ? ๋์ปค๋ ์ด ๋ชจ๋ ๊ฒ์ ํ๋์ ๊ฑฐ๋ํ '์ปจํ ์ด๋(์์)' ์์ ํต์งธ๋ก ์ผ๋ ค์ ํฌ์ฅํด ๋ฒ๋ฆฝ๋๋ค.
์ด๋ ๊ฒ ํฌ์ฅ๋ ์ปจํ ์ด๋ ๋ฐ์ค๋ฅผ ๋ค๊ณ ์ค๋ผํด ํด๋ผ์ฐ๋๋ , AWS๋ , ๊ตฌ๊ธ ํด๋ผ์ฐ๋๋ ์ด๋๋ก ๊ฐ์ ธ๊ฐ์ ์์ถ์ ํ๊ธฐ๋ง ํ๋ฉด '๋ด ๋ก์ปฌ ์ปดํจํฐ์ 100% ๋๊ฐ์ ํ๊ฒฝ'์ด ๊ทธ๋๋ก ํผ์ณ์ง๋ ๊ฒ์ ๋๋ค. ๋ ์ด์ ์๋ฒ์ ๊ธฐ๋ณธ ํ์ด์ฌ ๋ฒ์ ์ด ๋ฌด์์ธ์ง ์ ๊ฒฝ ์ธ ํ์๊ฐ ์ ํ ์์ด์ง๋ ๊ธฐ์ ์ด ์ผ์ด๋ฉ๋๋ค.
3. FastAPI ์๋ฒ๋ฅผ ๋์ปค๋ก ๊ฐ์ธ๊ธฐ: Dockerfile ์์ฑ
๋์ปค๋ฅผ ์ฐ๊ธฐ ์ํด์๋ ์ปจํ
์ด๋๋ฅผ ์ด๋ป๊ฒ ํฌ์ฅํ ๊ฒ์ธ์ง ์ค๋ช
์(๋ ์ํผ)๋ฅผ ์จ์ฃผ์ด์ผ ํฉ๋๋ค. ์ด ์ค๋ช
์๋ฅผ Dockerfile์ด๋ผ๊ณ ๋ถ๋ฆ
๋๋ค. ์ FastAPI ํ๋ก์ ํธ ์ต์๋จ ํด๋์ ํ์ผ๋ช
ํ์ฅ์ ์์ด Dockerfile์ ํ๋ ๋ง๋ค๊ณ ์๋์ ๊ฐ์ด ์์ฑํ์ต๋๋ค.

์ฝ๋ ์ฃผ์์๋ ์ ์ด๋์๋ฏ, ์ด ํ์ผ ํ๋๊ฐ "๊นจ๋ํ ์ปดํจํฐ๋ฅผ ๊ฐ์ ธ์์, ํ์ด์ฌ์ ๊น๊ณ , ํด๋๋ฅผ ๋ง๋ค๊ณ , ์ฝ๋๋ฅผ ๋ฃ๊ณ , ์๋ฒ๋ฅผ ์คํํด๋ผ"๋ผ๋ ๋ชจ๋ ๋ช ๋ น์ ๋์ ํด ์ค๋๋ค.
4. ์๋ฒ ๋ฐฐํฌ์ ์พ๊ฐ: ๋จ ๋ ์ค์ ๋ช ๋ น์ด๋ก ๋!
์ด์ ์ค๋ผํด ํด๋ผ์ฐ๋ ์๋ฒ์ ์ ์ํด์ ๋์ปค ์์ง(Docker Engine)๋ง ๋ฑ ํ๋ ์ค์นํด ๋๋ฉด ์ค๋น๋ ๋๋ฉ๋๋ค. ๋ ์ด์ ์๋ฒ์ ํ์ด์ฌ์ ๊น๊ฑฐ๋ pip install์ ์น๋ฉฐ ์๋ฌ ๋ฉ์์ง์ ์ธ์ธ ํ์๊ฐ ์์ต๋๋ค.
ํฐ๋ฏธ๋์์ ๋ฑ ๋ ์ค์ ๋ช ๋ น์ด๋ง ์ ๋ ฅํ์ต๋๋ค.

๋ช ๋ น์ด๋ฅผ ์น๊ณ ๋ช ์ด ๋ค, ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์ ์น์ฌ์ดํธ ์ฃผ์๋ก ์ ์ํด ๋ณด์์ต๋๋ค. ์๋์ฐ ํ๊ฒฝ์์ ํ ์คํธํ๋ ๊ทธ ๋ชจ์ต ๊ทธ๋๋ก, ๋จ ํ๋์ ์๋ฌ๋ ์์ด ์๋ฒฝํ๊ฒ ๋ฐฑ์๋ ์๋ฒ๊ฐ ์๋ต์ ๋ณด๋ด์์ต๋๋ค. ๊ณผ๊ฑฐ์ ํจํค์ง ์ถฉ๋๋ก ์๋ฒ๋ฅผ ๋ช ๋ฒ์ด๋ ์์๋ ๊ณ ์์ด ์ฃผ๋ง๋ฑ์ฒ๋ผ ์ค์ณ ์ง๋๊ฐ๋ฉฐ ์์ฒญ๋ ์พ๊ฐ์ด ๋ฐ๋ ค์์ต๋๋ค.
๋งบ์ผ๋ฉฐ: 1์ธ ๊ฐ๋ฐ์์ผ์๋ก ์ธํ๋ผ ์๋ํ๋ ํ์๋ค
๋ณดํต ๋์ปค๋ ์ฟ ๋ฒ๋คํฐ์ค ๊ฐ์ ์ปจํ ์ด๋ ๊ธฐ์ ์ ๋๊ธฐ์ ์ด๋ ๋๊ท๋ชจ ํธ๋ํฝ์ ๋ค๋ฃจ๋ ํฐ ํ์์๋ง ์ฐ๋ ๊ธฐ์ ์ด๋ผ๊ณ ์๊ฐํ๊ธฐ ์ฝ์ต๋๋ค. ํ์ง๋ง ์ ๊ฐ ์ง์ ๊ฒช์ด๋ณด๋, ์คํ๋ ค ์๋ฒ๋ฅผ ์ ๋ดํด ์ค ์ธํ๋ผ ์์ง๋์ด๊ฐ ์๋ 1์ธ ๊ฐ๋ฐ์์๊ฒ ๊ฐ์ฅ ์ ์คํ๊ฒ ํ์ํ ๊ธฐ์ ์ด ๋ฐ๋ก ๋์ปค์์ต๋๋ค.
๊ฐ๋ฐ ํ๊ฒฝ ์ธํ ์ ๋ฒ๋ ค์ง๋ ์์ญ ์๊ฐ์ ์ ์ฝํด ์ฃผ๊ณ , ์๋ฒฝ์ ์๋ฒ๊ฐ ๋ป์ด๋ ์ปจํ ์ด๋๋ง ๊ป๋ค ์ผ๋ฉด ๋ณต๊ตฌ๋๋ ์ด ์์ ์ฑ์ ํ ๋ฒ ๋ง๋ณด๋ฉด ์ ๋ ์ด์ (์ง์ ์ค์น)์ผ๋ก ๋์๊ฐ ์ ์๊ฒ ๋ง๋ญ๋๋ค.
์์ง๋ ์๋ฒ๋ฅผ ์ด์ฌํ ๋๋ง๋ค ํฐ๋ฏธ๋์ apt-get install์ ์์ญ ๋ฒ์ฉ ์น๊ณ ๊ณ์๋์? ๊ทธ๋ ๋ค๋ฉด ์ด๋ฒ ์ฃผ๋ง์๋ ๊ผญ ๋์ปค(Docker)๋ฅผ ๊ณต๋ถํด์ ์ฌ๋ฌ๋ถ์ ์์คํ ํ๋ก์ ํธ๋ฅผ ์ปจํ
์ด๋์ ๋ด์๋ณด์๊ธธ ๊ฐ๋ ฅํ๊ฒ ๊ถํด๋๋ฆฝ๋๋ค.
๐ฌ ๋๊ธ 0๊ฐ