์๋ ํ์ญ๋๊น!
๋๋ ์ฃผ์ ์ ๋ํด ๊ณง๋ฐ๋ก ์ด์ผ๊ธฐํ๊ณ ์ถ์ง๋ง ๋ด ์ด์ผ๊ธฐ์ ๋ํด ์กฐ๊ธ ์ด์ผ๊ธฐํ๋ ๊ฒ์ด ๋ ์ ํํ ๊ฒ์ ๋๋ค.
๊ธฐ์
์ ๋ ์๋ฒ์์ ํ๋ฐํธ์๋ ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ , scala/java ๋ฐ nodejs๋ฅผ ๊ฐ๋ฐํ ๊ฒฝํ์ด ์๋ ํ๋ก๊ทธ๋๋จธ์ ๋๋ค.
๊ฝค ์ค๋ ์๊ฐ ๋์(ํ์คํ XNUMX~XNUMX๋ ) ์ ๋ Docker๊ฐ ์ฒ๊ตญ์์ ์จ ๋ง๋์ด๊ณ ์ผ๋ฐ์ ์ผ๋ก ๋งค์ฐ ๋ฉ์ง ๋๊ตฌ์ด๋ฉฐ ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ ์ด๋ฅผ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ๊ฐ๋ฐ์๋ ๋ก์ปฌ ์ปดํจํฐ์ Docker๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค. ๋ด ์๊ฒฌ์ ์ด๋ป์ต๋๊น? ๋์ผํ hh์ ๊ฒ์๋ ๊ณต์์ ์ดํด๋ณด์ญ์์ค. ๋งค ๋ ๋ฒ์งธ์๋ docker์ ๋ํ ์ธ๊ธ์ด ํฌํจ๋์ด ์์ผ๋ฉฐ, ์ด๋ฅผ ์์ ํ๊ณ ์๋ค๋ฉด ์ด๊ฒ์ด ๊ฒฝ์ ์ฐ์๊ฐ ๋ ๊ฒ์ ๋๋ค ๐
๊ฐ๋ ๊ธธ์ ์ ๋ Docker์ ๊ทธ ์ํ๊ณ์ ๋ํด ์๋ก ๋ค๋ฅธ ํ๋๋ฅผ ๊ฐ์ง ๋ง์ ์ฌ๋๋ค์ ๋ง๋ฌ์ต๋๋ค. ์ด๋ค ์ฌ๋๋ค์ ์ด๊ฒ์ด ํฌ๋ก์ค ํ๋ซํผ ๊ธฐ๋ฅ์ ๋ณด์ฅํ๋ ํธ๋ฆฌํ ๊ฒ์ด๋ผ๊ณ ๋งํ์ต๋๋ค. ๋ ๋ฒ์งธ๋ ์ปจํ ์ด๋์์ ์คํํด์ผ ํ๋ ์ด์ ์ ๊ทธ๋ก๋ถํฐ ์ด๋ค ์ด์ต์ ์ป์ ์ ์๋์ง ์ดํดํ์ง ๋ชปํ๊ณ , ์ธ ๋ฒ์งธ๋ ์ ํ ์ ๊ฒฝ ์ฐ์ง ์๊ณ ๊ท์ฐฎ๊ฒ ํ์ง ์์์ต๋๋ค(๊ทธ๋ค์ ๋จ์ง ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ง์ผ๋ก ๊ฐ์ต๋๋ค. ๋๋ ๊ทธ๋ค์ด ๋ถ๋ฝ์ต๋๋ค. ๋ฐฉ๋ฒ :)
์ฌ์ฉ ์ด์
์ ๋์ปค๋ฅผ ์ฌ์ฉํ๋์? ์๋ง๋ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋๋ฌธ์ผ ๊ฒ์ ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ถ์, 99%์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ฅผ ์ฌ์ฉ
- ํ๋ก ํธ์๋ ๋ฐฐํฌ๋ฅผ ์ํด nginx๋ฅผ ์์ํ๊ณ ๋ฐฑ์๋๋ก ํ๋ก์ฑ
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ปค ์ด๋ฏธ์ง๋ก ํจํค์งํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ด ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์ปค๊ฐ ์๋ ๋ชจ๋ ๊ณณ์์ ์๋ํ๊ณ ๋ฐฐํฌ ๋ฌธ์ ๊ฐ ์ฆ์ ํด๊ฒฐ๋ฉ๋๋ค.
- ์ฆ์ ์๋น์ค ๊ฒ์์ ํตํด ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์์ฑํ ์ ์์ผ๋ฉฐ, ๊ฐ ์ปจํ ์ด๋(๊ณตํต ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋จ)๋ ๋ณ์นญ์ ํตํด ๋ค๋ฅธ ์ปจํ ์ด๋์ ์ฝ๊ฒ ๋๋ฌํ ์ ์์ด ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค.
- ์ปจํ ์ด๋๋ฅผ ๋ง๋ค๊ณ ๊ทธ ์์์ "๋์ด"ํ๋ ๊ฒ์ ์ฌ๋ฏธ์์ต๋๋ค.
๋ด๊ฐ ํญ์ docker์ ๋ํด ๋ง์์ ๋ค์ง ์๋ ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ํ๋ ค๋ฉด ์๋ฒ์ Docker ์์ฒด๊ฐ ํ์ํฉ๋๋ค. ๋ด ์ ํ๋ฆฌ์ผ์ด์ ์ด jre ๋๋ nodejs์์ ์คํ๋๊ณ ํด๋น ํ๊ฒฝ์ด ์ด๋ฏธ ์๋ฒ์ ์๋ ๊ฒฝ์ฐ ์ด๊ฒ์ด ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น?
- ์๊ฒฉ ์๋ฒ์์ ๋ก์ปฌ๋ก ๊ตฌ์ถ๋ ๋ด (๊ฐ์ธ) ์ด๋ฏธ์ง๋ฅผ ์คํํ๋ ค๋ฉด ์์ฒด docker ์ ์ฅ์๊ฐ ํ์ํ๊ณ ์ด๋๊ฐ์์ ์๋ํ ๋ ์ง์คํธ๋ฆฌ๊ฐ ํ์ํ๋ฉฐ docker cli๋ https๋ฅผ ํตํด์๋ง ์๋ํ๊ธฐ ๋๋ฌธ์ https๋ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. ์ ์ ์ฅ... ๋ฌผ๋ก ๋ค์์ ํตํด ์ด๋ฏธ์ง๋ฅผ ๋ก์ปฌ์ ์ ์ฅํ๋ ์ต์
๋ ์์ต๋๋ค.
docker save
scp๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ ๋ณด๋ด๋ฉด ๋ฉ๋๋ค... ๊ทธ๋ฐ๋ฐ ๋ชธ์ ์์ง์์ด ๋๋ฌด ๋ง์์. ๊ฒ๋ค๊ฐ ์์ ์ ์ ์ฅ์๊ฐ ๋ํ๋๊ธฐ ์ ๊น์ง๋ "๋ชฉ๋ฐ" ์๋ฃจ์ ์ฒ๋ผ ๋ณด์ ๋๋ค. docker-compose
. ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ๋ฐ๋ง ํ์ํฉ๋๋ค. ๊ทธ๊ฒ ๋ค์ผ. ๊ทธ๋ ๋ค๋ฅธ ์ด๋ค ๊ฒ๋ ํ ์ ์์ต๋๋ค.Docker-compose
์ฌ๋ฌ ๋ฒ์ ์ ํ์ผ๊ณผ ์์ฒด ๊ตฌ๋ฌธ์ด ์์ต๋๋ค. ์๋ฌด๋ฆฌ ์ ์ธ์ ์ด๋ผ๋ ๋๋ ๊ทธ๋ค์ ๋ฌธ์๋ฅผ ์ฝ๊ณ ์ถ์ง ์์ต๋๋ค. ๋ค๋ฅธ ๊ณณ์์๋ ํ์ํ์ง ์์ต๋๋ค.- ํ์ผ๋ก ์์
ํ ๋ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ Dockerfile์ ๋งค์ฐ ๋น๋ค๊ฒ ์์ฑํ๊ณ , ์ด๋ป๊ฒ ์บ์๋๋์ง ์ดํดํ์ง ๋ชปํ๊ณ , ํ์ํ๊ณ ํ์ํ์ง ์์ ๋ชจ๋ ๊ฒ์ ์ด๋ฏธ์ง์ ์ถ๊ฐํ๊ณ , Dockerhub ๋๋ ๊ฐ์ธ ์ ์ฅ์์ ์๋ ์ด๋ฏธ์ง์์ ์์ํ๊ณ , ์ผ๋ถ๋ฅผ ์์ฑํฉ๋๋ค.
docker-compose
๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ํ์ผ์๋ ์๋ฌด๊ฒ๋ ์ง์๋์ง ์์ต๋๋ค. ๋์์ ๊ฐ๋ฐ์๋ค์ Docker๊ฐ ํ๋ฅญํ๊ณ ๋ชจ๋ ๊ฒ์ด ๋ก์ปฌ์์ ์๋ํ๋ฉฐ HR์ ๊ณต์์ "์ฐ๋ฆฌ๋ Docker๋ฅผ ์ฌ์ฉํ๋ฉฐ ๊ทธ๋ฌํ ์ ๋ฌด ๊ฒฝํ์ ๊ฐ์ง ํ๋ณด์๊ฐ ํ์ํฉ๋๋ค."๋ผ๊ณ ์๋์ค๋ฝ๊ฒ ์ ์ธํฉ๋๋ค. - ๋๋ Docker์์ postgresql, kafka, redis ๋ฑ ๋ชจ๋ ๊ฒ์ ๋์ด๋ ๊ฒ์ ๋ํ ์๊ฐ์ ๋์์์ด ์๋ฌ๋ฆฝ๋๋ค. ์ปจํ ์ด๋์์ ๋ชจ๋ ๊ฒ์ด ์๋ํ๋ ๊ฒ์ ์๋๋ฉฐ ๋ชจ๋ ๊ฒ์ ๊ตฌ์ฑํ๊ณ ์คํํ๊ธฐ ์ฌ์ด ๊ฒ์ ์๋๋๋ค. ์ด๋ ๊ณต๊ธ์ ์ฒด ์์ฒด๊ฐ ์๋ ํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ง์ํฉ๋๋ค. ๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ฆ์ ์ง๋ฌธ์ด ์๊น๋๋ค. ๊ณต๊ธ์ ์ฒด๋ Docker์์ ์ ํ์ ์ ์ง ๊ด๋ฆฌํ๋ ๊ฒ์ ๋ํด ๊ฑฑ์ ํ์ง ์์ต๋๋ค. ์ ๊ทธ๋ด๊น์? ๋ญ๊ฐ ์๊ณ ์์๊น์?
- ์ปจํ
์ด๋ ๋ฐ์ดํฐ์ ์ง์์ฑ์ ๋ํ ์ง๋ฌธ์ ํญ์ ๋ฐ์ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํธ์คํธ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง์ดํธํด์ผ ํ๋์ง, ๋์ปค ๋ณผ๋ฅจ์ ์์ฑํด์ผ ํ๋์ง, ์๋๋ฉด ์ง๊ธ ์๋ ๋ฐ์ดํฐ ์ปจํ
์ด๋๋ฅผ ๋ง๋ค์ด์ผ ํ๋์ง ์๊ฐํฉ๋๋ค.
deprecated
? ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง์ดํธํ๋ ๊ฒฝ์ฐ ์ปจํ ์ด๋์ ์๋ ์ฌ์ฉ์์ uid ๋ฐ gid๊ฐ ์ปจํ ์ด๋๋ฅผ ์์ํ ์ฌ์ฉ์์ ID์ ์ผ์นํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ปจํ ์ด๋์์ ์์ฑ๋ ํ์ผ์ด ๋ฃจํธ ๊ถํ์ผ๋ก ์์ฑ๋ฉ๋๋ค. ๋ด๊ฐ ์ฌ์ฉํ๋ค๋ฉดvolume
๊ทธ๋ฐ ๋ค์ ๋ฐ์ดํฐ๋ ์ผ๋ถ์์ ์์ฑ๋ฉ๋๋ค./usr/*
๊ทธ๋ฆฌ๊ณ ์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก uid์ gid์ ๋ํด์๋ ๊ฐ์ ์ด์ผ๊ธฐ๊ฐ ๋์ฌ ๊ฒ์ ๋๋ค. ํ์ฌ ๊ตฌ์ฑ ์์๋ฅผ ์์ํ๋ ๊ฒฝ์ฐ ์ค๋ช ์๋ฅผ ์ฝ๊ณ "๊ตฌ์ฑ ์์๊ฐ ํ์ผ์ ์ฐ๋ ์ปจํ ์ด๋ ๋๋ ํฐ๋ฆฌ๋ ์ด๋์ ๋๊น?"๋ผ๋ ์ง๋ฌธ์ ๋ํ ๋ต์ ์ฐพ์์ผ ํฉ๋๋ค.
๋๋ Docker๋ฅผ ๋๋ฌด ์ค๋ซ๋์ ๋ง์ง์๊ฑฐ๋ ค์ผ ํ๋ค๋ ์ฌ์ค์ด ํญ์ ๋ง์์ ๋ค์ง ์์์ต๋๋ค. ์ด๊ธฐ ๋จ๊ณ์์: ์ปจํ
์ด๋๋ฅผ ์์ํ๋ ๋ฐฉ๋ฒ, ์์ํ ์ด๋ฏธ์ง๋ฅผ ํ์
ํ๊ณ ๊ธด Docker ๋ช
๋ น์ ๋ํ ๋ณ์นญ์ด ํฌํจ๋ Makefile์ ๋ง๋ค์์ต๋๋ค. ์ ๋ docker ์ํ๊ณ์ ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ๋ฐฐ์ฐ๊ณ ์ถ์ง ์์๊ธฐ ๋๋ฌธ์ docker-compose๋ฅผ ์ซ์ดํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ docker-compose up
๊ทธ๊ฒ ๋ง์์ ๊ฑธ๋ ธ์ด์. ํนํ ๊ทธ๋ค์ด ์์ง๋ ๊ทธ๊ณณ์์ ๋ง๋๋ค๋ฉด ๋ง์ด์ฃ . build
์ด๋ฏธ ์กฐ๋ฆฝ๋ ์ด๋ฏธ์ง๊ฐ ์๋ ๊ฑด์ถ๋ฌผ. ๋ด๊ฐ ์ ๋ง๋ก ์ํ๋ ๊ฒ์ ๋จ์ง ํจ์จ์ ์ด๊ณ ๋น ๋ฅด๊ฒ ์ ํ์ ๋ง๋๋ ๊ฒ๋ฟ์ด์์ต๋๋ค. ํ์ง๋ง ๋์ปค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ์ ์์์ต๋๋ค.
์ค์๋ธ ์๊ฐ
์ต๊ทผ(XNUMX๊ฐ์ ์ ) ์ ๋ DevOps ํ๊ณผ ํจ๊ป ์ผํ๋๋ฐ, ๊ทธ ํ์ ๊ฑฐ์ ๋ชจ๋ ๊ตฌ์ฑ์์ด Docker์ ๋ํด ๋ถ์ ์ ์ธ ํ๋๋ฅผ ๋ณด์์ต๋๋ค. ์ด์ :
- docker ๊ท์น iptables(daemon.json์์ ๋นํ์ฑํํ ์ ์์)
- docker๋ ๋ฒ๊ทธ๊ฐ ์์ด์ ํ๋ก๋์ ํ๊ฒฝ์์ ์คํํ์ง ์์ต๋๋ค.
- docker ๋ฐ๋ชฌ์ด ์ถฉ๋ํ๋ฉด ๊ทธ์ ๋ฐ๋ผ ์ธํ๋ผ๊ฐ ์๋ ๋ชจ๋ ์ปจํ ์ด๋๊ฐ ์ถฉ๋ํฉ๋๋ค.
- ๋์ปค๊ฐ ํ์ํ์ง ์์ต๋๋ค
- Ansible๊ณผ ๊ฐ์ ๋จธ์ ์ด ์๋ค๋ฉด docker๋ฅผ ์ฌ์ฉํ๋ ์ด์
๊ฐ์ ์ง์ฅ์์ ์ ๋ ๋ ๋ค๋ฅธ ๋๊ตฌ์ธ Ansible์ ์๊ฒ ๋์์ต๋๋ค. ํ ๋ฒ์ ๋ค์ด๋ดค์ง๋ง ๋๋ง์ ํ๋ ์ด๋ถ์ ์ฐ๋ ค๊ณ ๋
ธ๋ ฅํ ๊ฑด ์๋์์ด์. ๊ทธ๋ฆฌ๊ณ ์ด์ ์์
์ ์์ฑํ๊ธฐ ์์ํ๊ณ ๋ด ๋น์ ์ด ์์ ํ ๋ฐ๋์์ต๋๋ค! Ansible์๋ ๋์ผํ ๋์ปค ์ปจํ
์ด๋, ์ด๋ฏธ์ง ๋น๋, ๋คํธ์ํฌ ๋ฑ์ ์คํํ๊ธฐ ์ํ ๋ชจ๋์ด ์์ผ๋ฉฐ ์ปจํ
์ด๋๋ ๋ก์ปฌ๋ฟ๋ง ์๋๋ผ ์๊ฒฉ ์๋ฒ์์๋ ์คํํ ์ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๊ธฐ ๋๋ฌธ์
๋๋ค! ๋์ ๊ธฐ์จ์ ๋์ด ์์์ต๋๋ค. ๋๋ NORMAL ๋๊ตฌ๋ฅผ ๋ฐ๊ฒฌํ๊ณ Makefile๊ณผ docker-compose ํ์ผ์ ๋ฒ๋ฆฌ๊ณ yaml ์์
์ผ๋ก ๋์ฒด๋์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ์ฝ๋๊ฐ ์ค์ด๋ค์์ต๋๋ค. loop
, when
๋ฑ
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ํ์ฌ ๊ตฌ์ฑ ์์๋ฅผ ์คํํ๊ธฐ ์ํ Docker
๋๋ ์ต๊ทผ์ SSH ํฐ๋์ ๋ํด ์๊ฒ ๋์์ต๋๋ค. ์๊ฒฉ ์๋ฒ์ ํฌํธ๋ฅผ ๋ก์ปฌ ํฌํธ๋ก "์ ๋ฌ"ํ๋ ๊ฒ์ ๋งค์ฐ ์ฝ๋ค๋ ๊ฒ์ด ๋ฐํ์ก์ต๋๋ค. ์๊ฒฉ ์๋ฒ๋ ํด๋ผ์ฐ๋์ ๋จธ์ ์ด๊ฑฐ๋ VirtualBox์์ ์คํ๋๋ ๊ฐ์ ๋จธ์ ์ผ ์ ์์ต๋๋ค. ๋ด ๋๋ฃ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค(๋๋ ๋ค๋ฅธ ํ์ฌ ๊ตฌ์ฑ ์์)๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ด ๊ตฌ์ฑ ์์๋ก ์๋ฒ๋ฅผ ์์ํ๊ณ ์๋ฒ๊ฐ ํ์ํ์ง ์์ ๋ ๋ ์ ์์ต๋๋ค. ํฌํธ ์ ๋ฌ์ Docker ์ปจํ ์ด๋์์ ์คํ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋์ผํ ํจ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ด ๋ช ๋ น์ ๋ด ๋ก์ปฌ ํฌํธ๋ฅผ postgresql์ ์คํํ๋ ์๊ฒฉ ์๋ฒ๋ก ์ ๋ฌํฉ๋๋ค.
ssh -L 9000:๋ก์ปฌ ํธ์คํธ:5432 [์ด๋ฉ์ผ ๋ณดํธ]
์๊ฒฉ ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ฉด ํ ๊ฐ๋ฐ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค. ์ด๋ฌํ ์๋ฒ๋ ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ๋์์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก postgresql์ ๊ตฌ์ฑํ๊ณ Docker ๋ฐ ๊ธฐํ ๋ณต์กํ ์ฌํญ์ ์ดํดํ ํ์๊ฐ ์์ต๋๋ค. ์๊ฒฉ ์๋ฒ์์๋ ํน์ ๋ฒ์ ์ ์ค์นํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ Docker ์์ฒด์ ๋์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค์นํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์์๊ฒ ํ์ํ ๋ชจ๋ ๊ฒ์ SSH ์ก์ธ์ค๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค!
๋๋ ์ต๊ทผ SSH ํฐ๋์ด ์ผ๋ฐ VPN์ ์ ํ๋ ๊ธฐ๋ฅ์ด๋ผ๋ ๊ฒ์ ์ฝ์์ต๋๋ค! OpenVPN ๋๋ ๊ธฐํ VPN ๊ตฌํ์ ์ค์นํ๊ณ ์ธํ๋ผ๋ฅผ ์ค์ ํ ํ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ ์ ์๋๋ก ์ ๊ณตํ๋ฉด ๋ฉ๋๋ค. ๋๋ฌด ๋ฉ์ ธ!
๋คํํ AWS, GoogleCloud ๋ฑ์ XNUMX๋ ๋ฌด๋ฃ ์ฌ์ฉ์ ์ ๊ณตํ๋ฏ๋ก ๊ผญ ์ด์ฉํด ๋ณด์ธ์! ์ฌ์ฉํ์ง ์์ ๋ ๊บผ๋๋ฉด ๊ฐ๊ฒฉ์ด ์ ๋ ดํด์ง๋๋ค. gcloud ๊ฐ์ ์๊ฒฉ ์๋ฒ๊ฐ ์ ํ์ํ์ง ๋ ๊ถ๊ธํ๋๋ฐ, ์ฐพ๊ฒ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ก์ปฌ ๊ฐ์ ๋จธ์ ์ผ๋ก๋ Docker ์ปจํ ์ด๋์์ ํ๋ฐํ ์ฌ์ฉ๋๋ ๊ฒ๊ณผ ๋์ผํ Alpine์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ธ์, ๋๋ ๋จธ์ ๋ถํ ์ ๋ ๋น ๋ฅด๊ฒ ๋ง๋๋ ๋ค๋ฅธ ๊ฒฝ๋ ๋ฐฐํฌํ์ ๋๋ค.
๊ฒฐ๋ก : ์๊ฒฉ ์๋ฒ๋ VirtualBox์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ๊ธฐํ ์ธํ๋ผ ๊ธฐ๋ฅ์ ์คํํ ์ ์๊ณ ์คํํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ๋ชฉ์ ์๋ ๋์ปค๊ฐ ํ์ํ์ง ์์ต๋๋ค.
๋์ปค ์ด๋ฏธ์ง ๋ฐ ๋ฐฐํฌ์ ๋ํด ์กฐ๊ธ
๋๋ ์ด๋ฏธ ์ผ๋ค.
์ํํธ์จ์ด ๊ฐ๋ฐ์๊ฐ ์์ ์ ์ ํ์ Docker ์ด๋ฏธ์ง๋ก๋ง ํฌํ
ํ๋ ๊ณณ์ ๋ณธ ์ ์ด ์์ต๋๊น?
๋๋ถ๋ถ์ ์ ํ์ ๊ฒฐ๊ณผ๋ ํน์ ํ๋ซํผ์ ๋ํ ๋ฐ์ด๋๋ฆฌ ํ์ผ์ด๋ฉฐ, ์ํ๋ ํ๋ซํผ์์ ์์๋ ๋์ปค ์ด๋ฏธ์ง์ ์ถ๊ฐ๋๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. dockerhub์ ๋น์ทํ ์ด๋ฏธ์ง๊ฐ ์ ๊ทธ๋ ๊ฒ ๋ง์์ง ๊ถ๊ธํ ์ ์ด ์๋์? ์๋ฅผ ๋ค์ด nginx๋ฅผ ์
๋ ฅํ๋ฉด ๋ค์ํ ์ฌ๋๋ค์ 100500๊ฐ์ ์ด๋ฏธ์ง๊ฐ ํ์๋ฉ๋๋ค. ์ด ์ฌ๋๋ค์ nginx ์์ฒด๋ฅผ ๊ฐ๋ฐํ์ง ์์์ผ๋ฉฐ, ๋จ์ํ ๊ณต์ nginx๋ฅผ docker ์ด๋ฏธ์ง์ ์ถ๊ฐํ๊ณ ์ปจํ
์ด๋ ์์์ ํธ์๋ฅผ ์ํด ์์ฒด ๊ตฌ์ฑ์ผ๋ก ์๋
ํ์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋๊ตฐ๊ฐ docker์์ ์คํํด์ผ ํ๋ ๊ฒฝ์ฐ ๊ฐ๋จํ tgz์ ์ ์ฅํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด Dockerfile์ tgz๋ฅผ ์ถ๊ฐํ๊ณ ์ํ๋ ํ๊ฒฝ์์ ์์ํ๊ณ tgz์์ ์ ํ๋ฆฌ์ผ์ด์
์์ฒด๋ฅผ ๋ณ๊ฒฝํ์ง ์๋ ์ถ๊ฐ ๋นต์ ๋ง๋ค ์ ์์ต๋๋ค. ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ์ฌ๋์ ๋๊ตฌ๋ tgz๊ฐ ๋ฌด์์ธ์ง, ์์
์ ํ์ํ ๊ฒ์ด ๋ฌด์์ธ์ง ์ ๊ฒ์
๋๋ค. ์ด๊ฒ์ด ๋ด๊ฐ ๋์ปค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์
๋๋ค
๊ฒฐ๋ก : ๋์ปค ๋ ์ง์คํธ๋ฆฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์ผ์ข ์ S3๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ Google ๋๋ผ์ด๋ธ/๋๋กญ๋ฐ์ค์ ๊ฐ์ ํ์ผ ์ ์ฅ์๋ง ์ฌ์ฉํ๊ฒ ์ต๋๋ค.
CI์ ๋์ปค
์ ๊ฐ ๋ค๋ ๋ ํ์ฌ๋ค์ ๋ค ๋น์ทํ์ด์. ๊ทธ๋ค์ ์ผ๋ฐ์ ์ผ๋ก ์๋ฃํ์ ๋๋ค. ์ฆ, ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ , ํ๋์ ๊ธฐ์ ์คํ(์, ์๋ง๋ ๋์ธ ๊ฐ์ง ํ๋ก๊ทธ๋๋ฐ ์ธ์ด)์ด ์์ต๋๋ค.
์ด๋ค ํ์ฌ๋ CI ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ ์๋ฒ์์ Docker๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ง๋ฌธ: ์๋ฒ์ Docker ์ปจํ ์ด๋์์ ํ๋ก์ ํธ๋ฅผ ๋น๋ํด์ผ ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์๋ฅผ ๋ค์ด, ํ์ํ ๋ฒ์ ์ nodejs, php, jdk๋ฅผ ์ค์นํ๊ณ SSH ํค ๋ฑ์ ๋น๋๊ฐ ์ํ๋ ์๋ฒ์ ์ค์นํ๋ Ansible ํ๋ ์ด๋ถ์ ์์ฑํ๋ ๋ฑ ๋น๋๋ฅผ ์ํ ํ๊ฒฝ์ ์ค๋นํ๋ฉด ์ด๋จ๊น์?
์ด์ ๋๋ ์ด๊ฒ์ด ๋ด ๋ฐ์ ์ด์ ์๊ณ ์๋ค๋ ๊ฒ์ ์ดํดํฉ๋๋ค. ์๋ํ๋ฉด docker๋ ๊ฒฉ๋ฆฌ๋ก ์ธํด ์ด์ต์ ์ป์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋๋ค. Docker์ CI์์ ๋ฐ์ํ ๋ฌธ์ :
- ๋ค์ ๋น๋ํ๋ ค๋ฉด ๋์ปค ์ด๋ฏธ์ง๊ฐ ํ์ํฉ๋๋ค. ์ด๋ฏธ์ง๋ฅผ ์ฐพ๊ฑฐ๋ ์์ ๋ง์ dockerfile์ ์์ฑํด์ผ ํฉ๋๋ค.
- 90%๋ ๋์ปค ์ด๋ฏธ์ง์ ์ฐ๊ณ ์ถ์ง ์์ ์ผ๋ถ SSH ํค, ๋น๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด์ผ ํฉ๋๋ค.
- ์ปจํ ์ด๋๊ฐ ์์ฑ๋๊ณ ์ข ๋ฃ๋๋ฉด ๋ชจ๋ ์บ์๋ ํจ๊ป ์์ค๋ฉ๋๋ค. ๋ค์ ๋น๋์์๋ ๋ชจ๋ ํ๋ก์ ํธ ์ข ์์ฑ์ ๋ค์ ๋ค์ด๋ก๋ํ๋ฏ๋ก ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๊ณ ๋นํจ์จ์ ์ด๋ฉฐ ์๊ฐ์ ๊ณง ๋์ ๋๋ค.
๊ฐ๋ฐ์๋ ๋์ปค ์ปจํ ์ด๋์์ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ์ง ์์ต๋๋ค. (์ ๋ ํ๋ ๊ทธ๋ฐ ํฌ์ด์์ต๋๋ค. ๊ณผ๊ฑฐ์๋ ์ ์์ ์ด ์ํ๊น์ต๋๋ค. xD). Java์์๋ ์ฌ๋ฌ ๋ฒ์ ์ด ์๊ณ ํ๋์ ๋ช ๋ น์ผ๋ก ์ง๊ธ ํ์ํ ๋ฒ์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. nodejs์๋ ๋์ผํ๋ฉฐ nvm์ด ์์ต๋๋ค.
์ถ๋ ฅ
๋๋ docker๊ฐ ๋งค์ฐ ๊ฐ๋ ฅํ๊ณ ์ ์ฐํ ๋๊ตฌ๋ผ๊ณ ๋ฏฟ์ต๋๋ค. ์ด๊ฒ์ด ๋จ์ ์ ๋๋ค(์ด์ํ๊ฒ ๋ค๋ฆฌ๋ค์, ๊ทธ๋ ์ต๋๋ค). ๋์์ ๋ฐ์ผ๋ฉด ๊ธฐ์ ์ ์ฝ๊ฒ ๊ทธ๊ฒ์ ๋น ์ ธ ํ์ํ ๋์ ํ์ํ์ง ์์ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ปจํ ์ด๋์ ์ผ๋ถ ํ๊ฒฝ์ ์์ํ ๋ค์ ๋ชจ๋ ๊ฒ์ด CI์ ํ๋ก๋์ ์ผ๋ก ์ํํ๊ฒ ํ๋ฌ๊ฐ๋๋ค. DevOps ํ์ ์ด๋ฌํ ์ปจํ ์ด๋๋ฅผ ์คํํ๊ธฐ ์ํด ์ผ์ข ์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์์ต๋๋ค.
๋ค์์์๋ง docker๋ฅผ ์ฌ์ฉํ์ธ์. ๊ฐ์ฅ ์ต๊ทผ์ ์์ ๋จ๊ณ์์ ์ฒ์๋ถํฐ ํ๋ก์ ํธ๋ก ๋์ด์ค์ง ๋ง์ญ์์ค. ๊ทธ๊ฒ์ ๊ทํ์ ๋น์ฆ๋์ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๋ฌธ์ ๋ฅผ ๋ค๋ฅธ ์์ค์ผ๋ก ์ฎ๊ธฐ๊ณ ๊ทธ ์์ ์ ํด๊ฒฐ์ฑ ์ ์ ์ํ ๋ฟ์ด๋ฉฐ, ๋น์ ์ ์ด์ค ์์ ์ ์ํํ๊ฒ ๋ ๊ฒ์ ๋๋ค.
๋์ปค๊ฐ ํ์ํ ๊ฒฝ์ฐ: ๋๋ docker๊ฐ ํน์ ํ๋ก์ธ์ค๋ฅผ ์ต์ ํํ๋ ๋ฐ๋ ๋งค์ฐ ๋ฅ์ํ์ง๋ง ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ๊ตฌ์ถํ๋ ๋ฐ์๋ ๋ฅ์ํ์ง ์๋ค๋ ๊ฒฐ๋ก ์ ๋๋ฌํ์ต๋๋ค.
์ฌ์ ํ docker๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค๋ฉด ๋ค์์ ์ํํ์ธ์.
- ๊ทน๋๋ก ์กฐ์ฌํ๋ค
- ๊ฐ๋ฐ์์๊ฒ Docker๋ฅผ ์ฌ์ฉํ๋๋ก ๊ฐ์ํ์ง ๋ง์ธ์
- ํ ๊ณณ์์ ์ฌ์ฉ์ ํ์งํํ๊ณ ๋ชจ๋ Dockefile ๋ฐ docker-compose ์ ์ฅ์์ ๋ถ์ฐ์ํค์ง ๋ง์ญ์์ค.
์ถ์ :
- ์ต๊ทผ์ ์ฐ์ฐํ ์ ํ
ํฌ์ฅ ๊ธฐ๊ณ Ansible๊ณผ ๋งค์ฐ ์ ์๋ํ๋ฉฐ ์ด๋ฏธ์ง(๋์ปค ์ด๋ฏธ์ง ํฌํจ) ๊ตฌ์ถ ํ๋ก์ธ์ค๋ฅผ ํตํฉํ ์ ์๋ค๊ณ ํฉ๋๋ค. ๋์ปค์ ๋ํด์๋ ํฅ๋ฏธ๋ก์ด ๊ธฐ์ฌ์ ๋๋ค.
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๊ทํ์ ์ ๋ฌด์์ ํฌ๋ช ํ ๊ฒฐ์ ๊ณผ ์์ฐ์ ์ธ ๊ทผ๋ฌด์ผ์ ๊ธฐ์ํฉ๋๋ค!
์ถ์ฒ : habr.com