01. Docker
01. Docker ๊ด๋ จ
Docker๋ 2013๋ 3์ Docker, Inc(๊ตฌ dotCloud)์์ ์ถ์ํ ์คํ ์์ค ์ปจํ ์ด๋ ํ๋ก์ ํธ์ ๋๋ค. ํ์ฌ ์ ์ธ๊ณ์ ์ผ๋ก ํฐ ์ธ๊ธฐ๋ฅผ ๋๊ณ ์์ผ๋ฉฐ ์ปจํ ์ด๋ ๋ถ์ผ์์ ์ฌ์ค์ ํ์ค์ผ๋ก ์๋ฆฌ์ก์์ต๋๋ค.
2010๋ ์ ๋์ด์๋ฉด์ ์๋ฒ ์์ฅ์ ๊ธ์ํ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ผ๋ก ์ฎ๊ฒจ๊ฐ์ต๋๋ค. ์ด๋ ๊ฒ ๋๋ค ๋ณด๋ ๋ฌผ๋ฆฌ์ ์ธ ์๋ฒ๋ฅผ ๊ตฌ์ ํ๊ธฐ ๋ณด๋ค๋ ์ฌ์ฉ ์๊ธ๋ง ๋ด๊ณ ๊ฐ์ ์๋ฒ๋ฅผ ๋น๋ ค ์ฐ๊ฒ ๋์์ต๋๋ค. ํนํ ๋ฌผ๋ฆฌ์ ์ธ ์๋ฒ๋ฅผ ๊ตฌ์ถํ๋ ค๋ฉด ์๋ฒ ๊ตฌ์ ๊ณผ ์ค์น์ ์๋นํ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค. ํ์ง๋ง ํด๋ผ์ฐ๋ ํ๊ฒฝ์์๋ 1๋๊ฐ ๋์๋ 1,000๋๊ฐ ๋์๋ ํด๋ฆญ ๋ช ๋ฒ ๋ง์ผ๋ก ๊ฐ์ ์๋ฒ๋ฅผ ๋ง๋ค์ด๋ผ ์ ์๊ฒ ๋์์ต๋๋ค.
์ด๋ ๊ฒ ์์ฑ๋ ๊ฐ์ ์๋ฒ์ ๊ฐ์ข ์ํํธ์จ์ด๋ฅผ ์ค์นํ๊ณ ์ค์ ์ ํด์ผ ํ๋๋ฐ, ์๋ฒ๊ฐ ํ ๋ ๋๋ผ๋ฉด ์ฝ๊ฒ ์ค์ ์ ํ ์ ์์ง๋ง ์๋ฒ ๊ฐ์๊ฐ ๋ง์์ง๋ฉด ์ฌ๋์ด ํ๊ธฐ๊ฐ ์ด๋ ค์์ง๋๋ค. ๋ฐ๋ผ์ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ์ค์น์ ๋ฐฐํฌ๊ฐ ํฐ ์ด๋ ค์์ผ๋ก ๋ค๊ฐ์์ต๋๋ค.
๋ฆฌ๋ ์ค/์ ๋์ค ํ๊ฒฝ์์ ์ค๋ซ๋์ ์ฌ์ฉํด์๋ ์ ธ ์คํฌ๋ฆฝํธ๋ก ์ค์น ๋ฐ ์ค์ ์๋ํ๋ฅผ ๊ตฌํํด๋ ๋์ง๋ง ์ด๊ฒ๋ ํ๊ณ๊ฐ ์์ต๋๋ค. ์ ธ ์คํฌ๋ฆฝํธ๋ก๋ ์ค์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ด๋ ๋ณต์กํ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ํ๋ญ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฆฌ๋ ์ค ํ๊ฒฝ์ ์ค์นํด์ผ ํ ์์ฉํ๋ก๊ทธ๋จ์ด ๋ง๊ณ , ์ค์ ๋ ๋ณต์กํฉ๋๋ค. ํนํ ์ฌ์ํ ์ค์ ํ๋๊ฐ ์ด์์ฒด์ ์ ์๋น์ค์ ์์ ์ฑ์ ํฐ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์ด๋ฐ ์ํฉ์์ Immutable Infrastructure๋ผ๋ ํจ๋ฌ๋ค์์ด ๋์์ต๋๋ค. Immutable Infrastructure๋ ํธ์คํธ OS์ ์๋น์ค ์ด์ ํ๊ฒฝ(์๋ฒ ํ๋ก๊ทธ๋จ, ์์ค ์ฝ๋, ์ปดํ์ผ๋ ๋ฐ์ด๋๋ฆฌ)์ ๋ถ๋ฆฌํ๊ณ , ํ ๋ฒ ์ค์ ํ ์ด์ ํ๊ฒฝ์ ๋ณ๊ฒฝํ์ง ์๋๋ค(Immutable)๋ ๊ฐ๋ ์ ๋๋ค. ์ฆ ์๋น์ค ์ด์ ํ๊ฒฝ์ ์ด๋ฏธ์ง๋ก ์์ฑํ ๋ค ์๋ฒ์ ๋ฐฐํฌํ์ฌ ์คํํฉ๋๋ค. ์ด๋ ์๋น์ค๊ฐ ์ ๋ฐ์ดํธ๋๋ฉด ์ด์ ํ๊ฒฝ ์์ฒด๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ , ์ด๋ฏธ์ง๋ฅผ ์๋ก ์์ฑํ์ฌ ๋ฐฐํฌํ๋ ๊ฒ์ ๋๋ค.
Immutable Infrastructure๋ ์ฌ๋ฌ ๊ฐ์ง ์ฅ์ ์ด ์์ต๋๋ค.
- ํธ๋ฆฌํ ๊ด๋ฆฌ: ์๋น์ค ์ด์ ํ๊ฒฝ์ ์ด๋ฏธ์ง๋ก ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ์ง ์์ฒด๋ง ๊ด๋ฆฌํ๋ฉด ๋ฉ๋๋ค. ํนํ ์ด๋ฏธ์ง๋ฅผ ์ค์ ๊ด๋ฆฌํ์ฌ ์ฒด๊ณ์ ์ธ ๋ฐฐํฌ์ ๊ด๋ฆฌ๋ฅผ ํ ์ ์์ต๋๋ค. ๋ํ, ์ด๋ฏธ์ง ์์ฑ ์ค์ ๋ ํ์ผ๋ก ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ ํ์ฉํ ์ ์์ต๋๋ค.
- ํ์ฅ: ์ด๋ฏธ์ง ํ๋๋ก ์๋ฒ๋ฅผ ๊ณ์ ์ฐ์ด๋ผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํด๋ผ์ฐ๋ ํ๋ซํผ์ ์๋ ํ์ฅ(Auto Scaling) ๊ธฐ๋ฅ๊ณผ ์ฐ๋ํ๋ฉด ์์ฝ๊ฒ ์๋น์ค๋ฅผ ํ์ฅํ ์ ์์ต๋๋ค.
- ํ ์คํธ: ๊ฐ๋ฐ์์ PC๋ ํ ์คํธ ์๋ฒ์์ ์ด๋ฏธ์ง๋ฅผ ์คํํ๊ธฐ๋ง ํ๋ฉด ์๋น์ค ์ด์ ํ๊ฒฝ๊ณผ ๋์ผํ ํ๊ฒฝ์ด ๊ตฌ์ฑ๋๊ธฐ ๋๋ฌธ์ ํ ์คํธ๊ฐ ๋งค์ฐ ์ฝ์ต๋๋ค.
- ๊ฐ๋ณ๋ค: ์ด์์ฒด์ ์ ์๋น์ค ์ด์ ํ๊ฒฝ์ ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ณ๊ณ (Lightweight) ์ด๋์๋ ์คํ ๊ฐ๋ฅํ(Portable) ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
์ด ๋ฌธ์์์๋ Immutable Infrastructure๋ฅผ ๊ตฌํํ ํ๋ก์ ํธ์ธ Docker๋ฅผ ๋ค๋ฃจ๊ฒ ์ต๋๋ค.
Docker ๋ก๊ณ ์ ๋จ์ด๋ฅผ ๋ณด๋ฉด Docker์ ๊ธฐ๋ฅ์ ์ง์ํ ์ ์์ต๋๋ค. ๊ณ ๋๊ฐ ์ปจํ ์ด๋ ๋ฐ์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ์ฃ๊ณ ๋ค๋๋๋ฐ, ์๋ฒ์์ ์ฌ๋ฌ ๊ฐ์ ์ปจํ ์ด๋(์ด๋ฏธ์ง)๋ฅผ ์คํํ๋ค๋ ๊ฒ์ ๋ ์ฌ๋ฆด ์ ์์ต๋๋ค. ๋ํ, ์ด๋ฏธ์ง ์์ฑ๊ณผ ์คํ๋ฟ๋ง ์๋๋ผ ์ด๋ฏธ์ง ์ ์ฅ๊ณผ ๋ฐฐํฌ(์ด๋ฐ)๋ ์๋ฏธํฉ๋๋ค. ๋จ์ด์ ์ฌ์ ์ ์๋ฏธ๋ ์ปจํ ์ด๋๋ฅผ ํ์ญํ๋ ํญ๋ง(๋ถ๋) ๋ ธ๋์๋ฅผ ๋ปํ๋๋ฐ, ์ปจํ ์ด๋๋ฅผ ๋ค๋ฃจ๋ Docker์ ๊ธฐ๋ฅ๊ณผ ๋น์ทํฉ๋๋ค.
์ปจํ ์ด๋์ ๋ฌผ๊ฑด์ ์ฃ๋ ๊ฒ์ฒ๋ผ ์๋น์ค ์ด์์ ํ์ํ ๋ชจ๋ ์์๋ฅผ ๋ชจ์ Docker ์ปจํ ์ด๋์ ๋ฃ์ต๋๋ค. ์์ฃผ ์ฐ์ด๋ ์คํ ์์ค ์ํํธ์จ์ด๋ ๋ฌผ๋ก ์ด๊ณ , ์ง์ ๋ง๋ ํ๋ก๊ทธ๋จ๋ ๋ฃ์ ์ ์์ต๋๋ค.