ย ์ฐ๋ฆฌ์ PC์์ process ๋์ ๊ตฌ์กฐ
์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ PC๋ SW / HW๋ก ๊ตฌ๋ถ๋์ด ์๊ณ , SW๋ ๋ Kernel mode์ ์ด์์ฒด์ ๋ฑ์ ์ฌ์ฉํ๋ ์์ญ๊ณผ User mode์ ์ฌ์ฉ์๊ฐ application์ ํตํด์ ์ฌ์ฉํ๋ ์์ญ์ผ๋ก ๋๋ ์ ์๋ค.
PC์ ๊ธฐ๋ณธ ๊ตฌ์กฐ
โข
H/W - CPU , RAM / HDD
โข
S/W
โฆ
Kernel - OS
โฆ
User - Application
์ด๋ Applicatoin์ ์ฌ์ฉํ ๋ Process๊ฐ ๋์ํ๋๋ก ํ๋ ๊ณ ์ ์ ๊ณต๊ฐ(Memory)๋ฅผ ๋ณด์ฅํด ์ฃผ๋๋ฐ ๊ทธ๋์ ์ ์ฅ ๊ณต๊ฐ์ Virtual Memory๋ฅผ ์ฌ์ฉํ๋ค.
Virtual Memory๋ ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ธ RAM๊ณผ ํ๋๋์คํฌ ๋ฑ์ ๊ณต๊ฐ์ ํฉ์ณ์ ํ๋์ ๋ฉ๋ชจ๋ฆฌ๋ก ์ถ์ํํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์๋ฅผ ๋ค์ด Process์๊ฒ 4GB์ Virtual Memory๋ฅผ ํ ๋นํด ์ค๋ค. ์ด๋ ์ค์ง์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๊ณต๊ฐ์ ์๋ง๋ 2GB ๋ด์ธ์ผ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ์ด๋ Process๋ง๋ค ๋
๋ฆฝ์ ์ธ ๊ณต๊ฐ์ด๋ฏ๋ก, ์๋ก์ ๊ณต๊ฐ์ ์นจ๋ฒํด์๋ ์๋๋ค.(์ด๋ฐ ์ํฉ์ด ๋๋ฉด ์ฐ๋ฆฌ๊ฐ ํํ ๋งํ๋ ํ๋ก๊ทธ๋จ์ด ์ฃฝ๋ ๊ฒฝ์ฐ์ ํด๋น. ) ์ฌ๋ฌ ๊ฐ์ Process๋ง๋ค ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฌ์ฉํด์ ๋์ํ ์ ์๋๋ก OS๊ฐ ์ง์ํ๋ค. ์ด๋ฅผ, Multitasking์ด๋ผ๊ณ ํ๋ค.
Virtual Machine
์ฐ๋ฆฌ๊ฐ ๋คํธ์ํฌ๋ฅผ ํตํด์ Process๋ฅผ ๋์ํ์๊ณ ํ๋ ค๊ณ ํ ๋์๋, ์ด๋์ ๋ฌผ๋ฆฌ์ ์ธ ๋์์ NIC์์ ์ผ์ด๋๋ฉฐ, ํ๋กํ ์ฝ์ TCP/IP๋ฅผ ํตํด์ ํต์ ์ ํ ๊ฒ์ด๊ณ , ์ด๋ File์ socket๋ฅผ ํตํด์ ํต์ ์ ํ ๊ฒ์ด๋ค.
์ด๋ฌํ ๊ฐ์ ์ ํ๋ ์ด์ ๋ ์ฐ๋ฆฌ๊ฐ VM๋ฅผ ํตํด์ ์๋์ PC์์ ํต์ ์ ํ ๋์๋ ๋คํธ์ํฌ๋ฅผ ํตํด์ ํต์ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ ์ฐ๋ฆฌ๊ฐ VM์ ์ฌ์ฉํ๊ธฐ ์ํด์ VMware๋ฅผ ์ค์นํ๋ค๊ณ ํ์, ์ด๋ ์ฐ๋ฆฌ PC์ HW๋ก NIC๊ฐ ํ๋๊ฐ ์กด์ฌํ๋ค๊ณ ํ ๋, VM์ ํตํด์ ์ฌ๋ฌ ๊ฐ์ SW๋ฅผ ํตํด์ VMNetwork๋ฅผ ๊ตฌ์ฑํ ์ ์๊ฒ ๋๋ค. ์ด๋์ ๊ฐ๊ฐ์ PC๋ฅผ ๋๊ณ NIC๋ฅผ ํตํด์ ํต์ ํ๋ ๊ฒ์ฒ๋ผ ์ค์นํ ์ ์๊ฒ ๋๋ค.
NIC๋ ๋ง์น HW NIC์ฒ๋ผ SW๋ฅผ ํตํด์ ๊ฐ์์ NIC์ ๊ฐ์ด ๋์ํ๋๋ก ํ๋ ๊ฒ์ด๋ค. SW - NIC์ Virtual NIC Driver๋ฅผ ํตํด์ ํต์ ํ๊ฒ ๋๋ค. HostOS๋ฅผ ๊ฐ๊ฐ์ Guest OS์์ Virtual NIC Driver ํตํด์ ํต์ ํ๊ฒ ๋๋ค. ์ด๋ VMNetwork๋ L2 ์ค์์น ์ฒ๋ผ ๋์ํ์ฌ ๊ฐ๊ฐ์ GuestOS๊ฐ ๋์ํ ์ ์๋๋ก ์ง์ํด์ค๋ค. ๊ทธ๋ฆฌ๊ณ , ์ด๋ ๋งจ ์์ VMNetwork๋ก ์ ๋ฌ, ์ ๋ฌ๋์ด ๋งจ ์ ๋คํธ์ํฌ์์ ๋ง์น NAT(๊ณต์ ๊ธฐ)๊ฐ์ด ๊ฐ๊ฐ์ ๊ธฐ๊ธฐ์ ์ฐ๊ฒฐ๋ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๋ก Host OS๋ฅผ ์ฐ๊ฒฐํ๊ณ , Host OS์์ NIC๋ฅผ ํตํด์ ์ธํฐ๋ท๊ณผ ์ฐ๊ฒฐํ๋ค.
ย ์ ์ฐ๋ฆฌ๋ Docker๋ฅผ ๊ด์ฌ๊ฐ์ง๊ฒ ๋์๋๊ฐ?
์ด๋ ํ๋ก์ธ์ค๋ฅผ ์ธ์ด๋ณด์. ๊ทธ๋ผ GuestOS๊ฐ ์ฆ๊ฐํ๋ค๋ฉด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฌ์ฉํ๋ ํ๋ก์ธ์ค๋ ๋์ด๋ ๊ฒ์ด๋ค. 4 - 5, 7 - 8์ ์ ๊ผญ ํ์ํ๊ฐ? (Kurnel - NIC) ์ด๋ ๊ธฐ ๋๋ฌธ์ Docker๊ฐ ๋์๋ค.
ย Docker
VM๋ ์ปดํจํฐ ์์ ์ปดํจํฐ๋ฅผ ๋๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋์ด์๋ ๊ฒ์ ์ค๋ณต๋ Guest OS์ Hypervisor๋ฅผ ๋ฌถ์ด์ ์ถ์ํํ๋ ๊ณผ์ ์ผ๋ก Docker์์ Contaner Runtime์์ GuestOS์ ์ค๋ณต๋ ์์(OS (Kurnel) / NIC ๋ฑ)์ ํ์ฉํด์ ์ ๊ณตํ๋ ๊ฒ์ด๋ค.
Hypervisor : ์ด์ ์ ์๊ธฐํ๋ ํ๋์ ๋ฌผ๋ฆฌ์ Host OS๋ฅผ ์ฌ๋ฌ ๊ฐ์ Guest OS๊ฐ ๋์ํ๋๋ก ์ง์ํด์ฃผ๋ ์ํํธ์จ์ด ์ํคํ
์ณ๋ฅผ ์๋ฏธํ๋ค.
Docker๋ HW๋ OS์ Docker์ Engine์ผ๋ก ์ ๊ณตํ์ฌ ์ฐ๋ฆฌ๊ฐ Container๋ผ๋ ๊ตฌ์กฐ(Application, binary)๋ง ๊ตฌ์ฑ์ ํ๋ค๋ฉด ํ์ํ ์์คํ
์ฝ์ด ์จ๋ค๋ฉด Engine์์ ์ด์ ๋ํ response๋ฅผ ์์์ ์ ๊ณตํด์ค๋ค. ์ด๋ฌํ ๊ณผ์ ์ ํตํด์ ์์ ํ์ฉ์ ํจ์จ์ด ์ข์์ง๊ณ , ๋ฐฐํฌํ๊ธฐ์๋ ํธํ๋ค. ์ด๋ Container (ex. web, WAS โฆ ) ๋ง ๋ง๋ ๋ค๋ฉด ์ด๋ฅผ Docker์์ ๋์๋ง ์์ผ์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
๋ํ์ ์ธ ์๋ก ์ ๊ณต๋๋ ์๋น์ค๊ฐ ์จ๋ผ์ธ IDE์ด๋ค. ๊ตฌ๋ฆ IDE์์ ์ฐ๋ฆฌ๋ ์ธ์ด๋ฅผ ์ ํํ๋๋ฐ, ์ด ์ธ์ด๊ฐ ์ปจํ
์ด๋๋ก ๊ตฌ์ฑ๋์ด ์์ด ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ด๋ฐ์๋๊ณ , ์ฌ์ฉ์์๊ฒ ๋ค์ํ ํ๊ฒฝ์ ์ ๊ณตํ๋ค.
๊ทธ๋ผ ํ๋ฒ๋คํฐ์ค๋ ์ ํ์ํ๊ฐ?
Docker ๋ด์์ ๋์ํ๋ ์๋น์ค ๋ง๋ฅ ์ ๋์๊ฐ๋ค๋ฉด ์ข๊ฒ ์ง๋ง, ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐํ๊ณ ๋ฐฐํฌํ๋ฉด์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๊ณ ์ด์ ์๋น์ค๊ฐ ์ฃฝ์ ์๋ ์๊ณ ๊ด๋ฆฌ๊ฐ ํ์ํ๋ค. ์ด๋ฌํ ๊ด๋ฆฌ ๋์์ ์ ๊ณตํ๋ ๊ฒ์ด ์ฟ ๋ฒ๋คํฐ์ค์ด๋ค.
์ง์ํ๋ ๊ธฐ๋ฅ์์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ๋ค.
โข
์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ์ ๋ก๋ ๋ฐธ๋ฐ์ฑย
โฆ
์ฟ ๋ฒ๋คํฐ์ค๋ DNS ์ด๋ฆ์ ์ฌ์ฉํ๊ฑฐ๋ ์์ฒด IP ์ฃผ์๋ฅผ ์ฌ์ฉํ์ฌ ์ปจํ
์ด๋๋ฅผ ๋
ธ์ถํ ์ ์๋ค. ์ปจํ
์ด๋์ ๋ํ ํธ๋ํฝ์ด ๋ง์ผ๋ฉด, ์ฟ ๋ฒ๋คํฐ์ค๋ ๋คํธ์ํฌ ํธ๋ํฝ์ ๋ก๋๋ฐธ๋ฐ์ฑํ๊ณ ๋ฐฐํฌํ์ฌ ๋ฐฐํฌ๊ฐ ์์ ์ ์ผ๋ก ์ด๋ฃจ์ด์ง ์ ์๋ค.
โข
์คํ ๋ฆฌ์ง ์ค์ผ์คํธ๋ ์ด์
ย
โฆ
์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ก์ปฌ ์ ์ฅ์, ๊ณต์ฉ ํด๋ผ์ฐ๋ ๊ณต๊ธ์ ๋ฑ๊ณผ ๊ฐ์ด ์ํ๋ ์ ์ฅ์ ์์คํ
์ ์๋์ผ๋ก ํ์ฌ ํ ์ ์๋ค.
โข
์๋ํ๋ ๋กค์์๊ณผ ๋กค๋ฐฑย
โฆ
์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ๋ ์ปจํ
์ด๋์ ์ํ๋ ์ํ๋ฅผ ์์ ํ ์ ์์ผ๋ฉฐ ํ์ฌ ์ํ๋ฅผ ์ํ๋ ์ํ๋ก ์ค์ ํ ์๋์ ๋ฐ๋ผ ๋ณ๊ฒฝํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์๋ํํด์ ๋ฐฐํฌ์ฉ ์ ์ปจํ
์ด๋๋ฅผ ๋ง๋ค๊ณ , ๊ธฐ์กด ์ปจํ
์ด๋๋ฅผ ์ ๊ฑฐํ๊ณ , ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์ ์ปจํ
์ด๋์ ์ ์ฉํ ์ ์๋ค.
โข
์๋ํ๋ ๋น ํจํน(bin packing)ย
โฆ
์ปจํ
์ด๋ํ๋ ์์
์ ์คํํ๋๋ฐ ์ฌ์ฉํ ์ ์๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๋
ธ๋๋ฅผ ์ ๊ณตํ๋ค. ๊ฐ ์ปจํ
์ด๋๊ฐ ํ์๋ก ํ๋ CPU์ ๋ฉ๋ชจ๋ฆฌ(RAM)๋ฅผ ์ฟ ๋ฒ๋คํฐ์ค์๊ฒ ์ง์ํ๋ค. ์ฟ ๋ฒ๋คํฐ์ค๋ ์ปจํ
์ด๋๋ฅผ ๋
ธ๋์ ๋ง์ถ์ด์ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ฅ ์ ์ฌ์ฉํ ์ ์๋๋ก ํด์ค๋ค.
โข
์๋ํ๋ ๋ณต๊ตฌ(self-healing)ย
โฆ
์ฟ ๋ฒ๋คํฐ์ค๋ ์คํจํ ์ปจํ
์ด๋๋ฅผ ๋ค์ ์์ํ๊ณ , ์ปจํ
์ด๋๋ฅผ ๊ต์ฒดํ๋ฉฐ, '์ฌ์ฉ์ ์ ์ ์ํ ๊ฒ์ฌ'์ ์๋ตํ์ง ์๋ ์ปจํ
์ด๋๋ฅผ ์ฃฝ์ด๊ณ , ์๋น์ค ์ค๋น๊ฐ ๋๋ ๋๊น์ง ๊ทธ๋ฌํ ๊ณผ์ ์ ํด๋ผ์ด์ธํธ์ ๋ณด์ฌ์ฃผ์ง ์๋๋ค.
โข
์ํฌ๋ฆฟ๊ณผ ๊ตฌ์ฑ ๊ด๋ฆฌย
โฆ
์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ํธ, OAuth ํ ํฐ ๋ฐ SSH ํค์ ๊ฐ์ ์ค์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌ ํ ์ ์๋ค. ์ปจํ
์ด๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ๊ตฌ์ฑํ์ง ์๊ณ ์คํ ๊ตฌ์ฑ์ ์ํฌ๋ฆฟ์ ๋
ธ์ถํ์ง ์๊ณ ๋ ์ํฌ๋ฆฟ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
๊ตฌ์ฑ์ ๋ฐฐํฌ ๋ฐ ์
๋ฐ์ดํธ ํ ์ ์๋ค