์ค๊ฐ
[1] ํด๋ผ์ฐ๋ ์ปดํจํ ์ ํ์ ๋ฐฐ๊ฒฝ์ Public Cloud ์ ๊ณต์ ์์ ์ธก๋ฉด์์ ์ค๋ช ํฉ๋๋ค.
AWS๋ฅผ ์์๋ก ๋ค ์ ์๋๋ฐ, ์จ๋ผ์ธ ์ผํ๋ชฐ์ ์ํ ํ์ฌ ๋ด์์์ Private ํด๋ผ์ฐ๋๋ฅผ ์ฌ์ฉํ๋ฉด์ ์ฌ์ฉ์๋ค์ด ์จ๋ผ์ธ ์ผํ๋ชฐ์ ์ฌ์ฉํ์ง ์๋ ์๊ฐ์ ๊ฒฝ์ฐ ๋ ธ๋ ๋ฆฌ์์ค๋ค์ด ๋ง์๋ค. ํด๋น ์๊ฐ๋์ ์ฌ์ฉํ์ง ์๋ ๋ฆฌ์์ค๋ค์ ์์ต์ ์ป์ผ๋ฉฐ ์๋ํจ์ผ๋ก์จ Public ํด๋ผ์ฐ๋ ์ปดํจํ ์ด ํ์ํ๋ค.
[2] ํด๋ผ์ฐ๋ ์ปดํจํ ์ ์๋น์ค ๋ชจ๋ธ 3๊ฐ์ง๋ฅผ ๋์ดํ๊ณ , ๊ฐ๊ฐ ๋ฌด์์ ์ ๊ณตํ๋์ง ์ค๋ช ํฉ๋๋ค.
SaaS(Software as a Service) : ๊ตฌ๊ธ ๋ ์ค, ์ ํ๋ธ ๋ฑ ์ํํธ์จ์ด๋ฅผ ์๋น์ค๋ก ์ ๊ณตํ๋ค. PaaS(Platform as a Service) : ๊ฐ๋ฐ์๊ฐ API๋ฅผ ํ์ฉํด ๋ ํธ๋ฆฌํ๊ฒ ๊ฐ๋ฐํ ์ ์๋๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํด๋ค์ ์๋น์ค๋ก ์ ๊ณตํ๋ค. IaaS(Infrastructure as a Service) : ๊ธฐ์ด์ ์ธ ์ปดํจํ ์์์ ์ ๊ณตํด ์ค์ค๋ก ์ ์ดํ๋ฉฐ ์ฌ์ฉํ๋๋ก ํ๋ค.
[3] ํด๋ผ์ฐ๋ ์ปดํจํ ์์ Public Cloud, Private Cloud ๋ฐ Hybrid Cloud๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํฉ๋๋ค.
Public Cloud๋ ๊ตฌ๊ธ, ์๋ง์กด๊ณผ ๊ฐ์ด ์ 3์์ ํด๋ผ์ฐ๋๋ฅผ ๋๊ฐ๋ฅผ ์ง๋ถํ๊ณ ์ฌ์ฉํ๋ ๊ฒ์ ๋งํ๋ค. Private Cloud๋ ๋ค์์ ์ฌ์ฉ์๋ค๋ก ๊ตฌ์ฑ๋ ์กฐ์ง์ด ์์ ํ๊ณ , ์กฐ์ง ๋ด์์ ์ฌ์ฉํ๋ ํํ๋ฅผ ๋งํ๋ค. Hybrid Cloud๋ Private Cloud๋ฅผ ๊ฐ์ง๋ฉด์ ํ์์ ์ํด Public Cloud๋ฅผ ์ ํ์ ์ผ๋ก ํ์ฉํ๋ ํํ๋ฅผ ๋งํ๋ค.
[4] Pet ๋ชจ๋ธ๊ณผ Cattle ๋ชจ๋ธ์ ๋ฌด์์ด๋ฉฐ, ์ค์ Container์ ์ด์์ ์ด๋ป๊ฒ ์ ์ฉ๋๋์ง ์ค๋ช ํฉ๋๋ค.ย
Pet ๋ชจ๋ธ์ ๊ฐ ์๋ฒ๋ฅผ ๊ณ ์ ํ ์์คํ ์ผ๋ก ์ธ์ํ๊ณ ์ด๋ฆ์ ๋ถ์ฌ ์ง์ ์ ๊ฒํ๊ณ ๊ด๋ฆฌํ๋ ๋ชจ๋ธ์ ๋งํ๋ค. Cattle ๋ชจ๋ธ์ ์๋ฒ๋ ๋์ผํ ์์คํ ์ผ๋ก ์ธ์ํ๊ณ ํ๊ทธ๋ก ๊ตฌ๋ถ๋๋ฉฐ ๋ฌธ์ ๊ฐ ์๊ธธ ๊ฒฝ์ฐ ํด๋น ์ปจํ ์ด๋๋ฅผ ์ฌ์์ํ์ฌ ์ฌ๋์ ๊ฐ์ ์์ด ํด๊ฒฐํ๋ค.
[5] IaC๊ฐ ๋ฌด์์ด๋ฉฐ, ๊ธฐ์กด์ ๋ฐ์ดํฐ์ผํฐ๋ฅผ ๊ตฌ์ถํ๊ณ ์ํํธ์จ์ด๋ฅผ ์ด์ํ๋ ๋ฐฉ์๊ณผ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ์ค๋ช ํฉ๋๋ค.
IaC๋ Infrastructure as Code๋ก, ์ฝ๋๋ฅผ ํตํด์ ํ์ํ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ๊ฒ์ ๋งํ๋ค. ๊ณผ๊ฑฐ์๋ ๋ฐ์ดํฐ์ผํฐ๋ฅผ ๊ตฌ์ถํ ๋ ํ๋์จ์ด๋ฅผ ์๋์ผ๋ก ์ค์ ํ๊ณ , ์ํํธ์จ์ด๋ฅผ ๋ฐฐํฌํ๋ ๋ฑ ์์ ์ ์ฌ๋์ด ์ง์ ์๋์ผ๋ก ๊ตฌ์ถํด์ผ ํ์ง๋ง, IaC๋ ์๋ฒ, ๋คํธ์ํฌ ๋ฑ infrastructure๋ฅผ ์ํํธ์จ์ด๋ก ๋ค๋ฃจ๋ฉด์ ์ค์ ์ฝ๋๋ฅผ ํตํด ์๋์ผ๋ก ๋์ผํ ํ๊ฒฝ์ ์ค์ ํ ์ ์๋ค.
[6] Mutable infrastructure์ Immutable infrastructure๋ ๋ฌด์์ด๋ฉฐ, ์ Immutable infrastructure๋ฅผ ์งํฅํ๋์ง ์ค๋ช ํฉ๋๋ค.
์ฌ๋ฌ ์๋ฒ๋ฅผ ํตํด ์๋น์ค๋ฅผ ์ ๊ณตํ๋ฉด์ Mutable์ ๋์์์ด ๊ฐ ์๋ฒ์ ๋ํด ์ ๋ฐ์ดํธํ๊ณ ์กฐ์ ๋๋ ํ๊ฒฝ์ ๋งํ๊ณ , Immutable์ ๋ณํํ์ง ์๊ณ ๊ฐ ์๋ฒ์ ํ๊ฒฝ์ ๋์ผํ๊ฒ ์ ์งํ๋ ๊ฒ์ ์๋ฏธํ๋ค. Mutable์ ๊ฒฝ์ฐ ๊ฐ ์๋ฒ๊ฐ ์ ๋ฐ์ดํธ๋๊ธฐ ๋๋ฌธ์ ๊ฐ ์๋ฒ๋ง๋ค ์๋น์ค์์ ์ฐจ์ด๊ฐ ์๊ธฐ๊ณ , ๊ด๋ฆฌํ๊ธฐ ์ด๋ ต๋ค. ํ์ง๋ง, Immutable์ ๊ฒฝ์ฐ ๋์ผํ ํ๊ฒฝ์ ๊ฐ๊ธฐ ๋๋ฌธ์ ์ ๋ฐ์ดํธ๋ฅผ ํ ๋ฒ์ ํด์ฃผ๊ณ , ๋ค์ ๋กค๋ฐฑํ๋ ๋ฑ ๊ด๋ฆฌ๊ฐ ์ฝ๋ค๋ ์ธก๋ฉด์์ Immutable์ ์งํฅํ๋ค.
[7] Hypervisor๋ฅผ ์์ ์์ ๋ ๊ฐ์ง ํ์ ์ผ๋ก ์ ์ํ์์ต๋๋ค (type.1 & type.2). ๊ฐ๊ฐ์ด ์ด๋ป๊ฒ ๋์ํ๋ ์ง ์ค๋ช ํฉ๋๋ค.
Type1์ ํ๋์จ์ด ์์ ๋ฐ๋ก Hypervisor๊ฐ ์ฌ๋ผ๊ฐ ๋ชจ์์ด๊ณ , Type2๋ Host OS ์์ Hypervisor๊ฐ ์ฌ๋ผ๊ฐ ๋ฐฉ์์ด๋ค.
[8] Guest Linux OS over Host Linux OS ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํฉ๋๋ค.
๋ฐ์ดํฐ ์ผํฐ์ ๊ฒฝ์ฐ Public Cloud๋ฅผ ์ ๊ณตํ๋๋ฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌด๋ฃ์ธ ๋ฆฌ๋ ์ค๋ฅผ ์ฌ์ฉํ๋ค. ์ฌ์ฉ์์๊ฒ ์๋ฒ๋ฅผ ์๋ํ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ์ํ๋ ํ๊ฒฝ์ ๊ฐ์ถฐ์ค์ผ ํ๋ฏ๋ก VM์ ์ฌ์ฉํ๋ค. ์ด๋ Guest OS๋ก ๋ฆฌ๋ ์ค๊ฐ ์ฌ๋ผ๊ฐ ๊ฒฝ์ฐ ๋์ผํ OS๊ฐ ์ค๋ณต๋๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํด ๋ ๋ง์ ๋น์ฉ์ ์ฌ์ฉํ๊ฒ ๋๋ ๋ฌธ์ ๋ฅผ ๋งํ๋ค.
[9] ๋ฐ์ดํฐ์ผํฐ์์์ ์ํํธ์จ์ด ๊ฐ๋ฐ๊ณผ ์ด์์์, Container ๊ธฐ์ ์ด ๊ฐ์ ๋จธ์ ๊ธฐ์ ์ ๋์์ด ๋ ์ ์๋ ์ด์ ๋ฅผ ์ค๋ช ํฉ๋๋ค.
Guest Linux OS over Host Linux OS์ OS ์ค๋ณต ๋ฌธ์ ๋ก ์ธํด ๋ ๋ง์ ๋น์ฉ์ ์๋ชจํ๋, ์ปจํ ์ด๋ ๊ธฐ์ ์ OS๋ฅผ ํธ์คํธ OS์ ๊ณต์ ํ๊ณ ํ๋ก๊ทธ๋จ ์ฝ๋, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํจํค์งํ์ฌ ๊ฐ ์ปจํ ์ด๋๋ง๋ค ๋ ๋ฆฝ๋ ํ๋ก์ธ์ค๋ก ๋์ํ ์ ์๋ค๋ ์ ์์ ๋น ๋ฅธ ์๋, ์ ์ ์ฉ๋์ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋น์ฉ๋ ๊ฐ์ํ๋ ํจ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๋ฉฐ ๊ฐ์ ๋จธ์ ๊ธฐ์ ์ ๋์์ด ๋ ์ ์๋ค.
[10] Docker๋ฅผ ๊ตฌ์ฑํ๋ CLI/Daemon ๋ฐ REST API์ ๋ํด์, ๊ฐ๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํฉ๋๋ค.
CLI(Command-Line Interface)๋ ๊ธ์๋ก ์ ๋ ฅํด ์ปดํจํฐ์ ๋ช ๋ น์ ๋ด๋ฆฌ๋ ๋ฐฉ์์ผ๋ก, ๋์ปค์ ํด๋ผ์ด์ธํธ ์ญํ ์ ํ๋ค. Daemon์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์จ ๋ช ๋ น์ ๋ฃ๊ณ ๋ช ๋ น์ ์ํํ๋ค. REST API๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์์ฒญ์ ๋ณด๋์ ๋ ๊ทธ์ ๋ฐ๋ฅธ ์๋ต์ ๋๋ ค์ฃผ๋ ํ์์ ์๋ฏธํ๋ค.
[11] IaC๋ ์ํํธ์จ์ด ๊ฐ๋ฐ๊ณผ ์ ์ฌํ ๊ณผ์ ์ ๊ฑฐ์น๋ ๊ฒ์ผ๋ก ์ค๋ช ํ๊ฒ ๋ฉ๋๋ค. Docker container๋ฅผ ๊ฐ๋ฐํ๊ณ ์คํํ๋ ๊ณผ์ ์ python/C++ ๋ฑ์ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๊ณ ์คํํ๋ ๊ณผ์ ๊ณผ ๋น๊ตํ์ฌ ์ค๋ช ํด ๋ด ๋๋ค.
python/C++์ ์์ค์ฝ๋๋ฅผ ๋ง๋๋ ๊ฒ๊ณผ ๊ฐ์ด ํ์ํ ์ปค๋ฉ๋๋ฅผ ํฌํจํ Dockerfile์ ๋ง๋ ๋ค. Dockerfile์ ์ด์ฉํด ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ณ , python/C++์ ์ปดํ์ผ, ๋น๋๋ก ์คํํ์ผ์ ๋ง๋๋ ๊ฒ๊ณผ ๊ฐ์ด ์ด๋ฏธ์ง๋ฅผ ์ด์ฉํด ์ปจํ ์ด๋๋ฅผ ๋ง๋ ๋ค. ์ดํ, ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ฒ๊ณผ ๊ฐ์ด, ์ปจํ ์ด๋์ ์คํ ๋ช ๋ น์ ์ฃผ์ด ์ปจํ ์ด๋๋ฅผ ์คํ์ํจ๋ค.
[12] Docker compose๋ ๋ณต์์ ์ปจํ ์ด๋(์๋น์ค)๋ฅผ ํ๋์ ์ดํ๋ฆฌ์ผ์ด์ ์ฒ๋ผ ๊ตฌ๋ํ๋๋ก ํฉ๋๋ค. ๋คํธ์ํฌ ์ธก๋ฉด์์ ์ด๋ฅผ ์ํ์ฌ ์ด๋ค ๊ธฐ๋ฅ์ ์ํํ๋์ง ๊ฐ๋จํ๊ฒ ์ค๋ช ํฉ๋๋ค.
๋ณต์์ ์ปจํ ์ด๋๋ฅผ ๊ตฌ๋ํ๊ธฐ ๋๋ฌธ์ ์ปจํ ์ด๋ DNS(Domain Name Service) ์๋ฒ๋ฅผ ๋ง๋ค์ด ์ด๋ฆ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ๊ตฌ๋ถํ ์ ์๋๋ก ํ๋ค.
[13] PAT๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํ๊ณ , Docker ์ปจํ ์ด๋์์ ์ ํ์ํ์ง ์ค๋ช ํฉ๋๋ค.
PAT(Port Address Translation)๋ private ํฌํธ์ public ํฌํธ๋ฅผ ์ฐ๊ฒฐํ๋ ์ญํ ์ ํ๋ค. ์ปจํ ์ด๋๋ ํธ์คํธ์ ๋จ์ด์ ธ ๋ ๋ฆฝ์ ์ผ๋ก ํจํค์ง๋์๊ธฐ ๋๋ฌธ์ ํฌํธ๋ฅผ ์ค์ ํด๋ ์ธ๋ถ์์๋ ๋ด๋ถ์ ํฌํธ๋ฅผ ์ธ์ํ์ง ๋ชปํ๋ค. ๋๋ฌธ์, ๋ด๋ถ์ ํฌํธ๋ ์ธ๋ถ์ ํต์ ๊ณผ ์ฐ๊ฒฐํ ์ ์๋๋ก private ํฌํธ์ public ํฌํธ๋ฅผ ์ฐ๊ฒฐํด ํต์ ์ด ๊ฐ๋ฅํ๋๋ก ๋ง๋ ๋ค.
[14] curl ํ๋ก๊ทธ๋จ์ด ๋ฌด์์ด๋ฉฐ, ์์ ์์ ์ด๋ค ์ฉ๋๋ก ํ์ฉํ ์ ์๋์ง ์ค๋ช ํฉ๋๋ค.
curl(Client URL) ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ค์ ์ ์กํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ปค๋ฉ๋ ๋ผ์ธ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ ์ํํธ์จ์ด ํ๋ก์ ํธ์ด๋ค. ์๋ฒ ํด๋ผ์ด์ธํธ๋ฅผ ๋์ ์ ๊ฒฝ์ฐ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ณ ๋ฐ์์ค๋ http ํ๋กํ ์ฝ์ ์ฌ์ฉํ ์ ์๋ค.
[15] Docker์์ Volume์ ์ด๋ค ์ฉ๋๋ก ํ์ฉํ๋ฉฐ, ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ด๋ป๊ฒ ๊ตฌํ๋๋์ง ์ค๋ช ํฉ๋๋ค.
Volume์ ์ปจํ ์ด๋๋ฅผ ์์ฑํด ์ฌ์ฉํ๊ฑฐ๋, ๋ฐ์ดํฐ ๋ณต์ฌ๋ณธ์ ์ ์ฅํด ์ฌ์ฉํ๊ณ , ์ปจํ ์ด๋๋ฅผ ์ญ์ ํ์ ๋ ๋ฐ์ดํฐ๊ฐ ์์ด์ง์ง ์๊ฒ ํ๊ธฐ ์ํด ์ฌ์ฉํ๊ณ , ํธ์คํธ ํ์ผ์์คํ ์ ํ ๋ถ๋ถ์ ๋์ปค๊ฐ ์ ์ ํ์ฌ ์ ์ฅ๋๋ค.
[16] Docker์์ Bind Mounts๋ ์ด๋ค ์ฉ๋๋ก ํ์ฉํ๋ฉฐ, Volume๊ณผ์ ์ฐจ์ด์ ์ ๋ฌด์์ธ์ง ์ค๋ช ํฉ๋๋ค.
Bind Mounts๋ ํธ์คํธ ์ปดํจํฐ์ ์คํ ๋ฆฌ์ง ์ค ํน์ ์์น๋ฅผ ์ง์ ํด ์ฐ๊ฒฐํ๋ค. ๋ฏผ๊ฐํ ํ์ผ์ ์ ๊ทผํ๊ฑฐ๋, ์ปจํ ์ด๋๊ฐ ๋ง๋ค์ด์ง๊ธฐ ์ ์ ์์ฑ๋ ํ์ผ์ ์ฌ์ฉํ ๋ ํ์ฉํ๋ค. Volumn์ ๊ฒฝ์ฐ ๋์ปค ํ๋ก์ธ์ค๊ฐ ์๋๋ผ๋ฉด ํ์ผ์ ์์ ํด์๋ ์ ๋์ง๋ง, Bind Mounts๋ ๋์ปค ํ๋ก์ธ์ค๊ฐ ์๋๋๋ผ๋ ์ธ์ ๋ ์์ ํ ์ ์๋ค.
[17] Docker Machine์ ์ด๋ค ๊ธฐ๋ฅ์ ์ํํ๋ฉฐ, ์ด๋ค ์ฉ๋๋ก ํ์ฉํ๋์ง ์ค๋ช ํฉ๋๋ค.
๊ฐ์ ๋จธ์ ์ ๋์ปค ์์ง์ ์ค์นํ ์ ์๋๋ก ํ๋ค. ๋์ปค ๋จธ์ ์ ์ค๋๋ ๋ฆฌ๋ ์ค ๋ฐ์คํฌํ์ ๊ฐ์ง๊ณ ์๊ณ , ๋งฅ์ด๋ ์๋์ฐ์์ ๋์ปค๋ฅผ ์คํํ๊ณ ์ถ์ ๊ฒฝ์ฐ. ํน์ ์๊ฒฉ ์์คํ ์ ๋์ปค ํธ์คํธ๋ฅผ ๊ณต๊ธํ๊ณ ์ถ์ ๊ฒฝ์ฐ์ ํ์ฉํ๋ค.
[18] Jenkins๋ฅผ ์ฌ์ฉํ์ฌ CI/CD๋ฅผ ๊ตฌํํ ์ ์๋ค๋ ๊ฒ์ ์ด๋ค ์๋ฏธ์ธ์ง ์ค๋ช ํฉ๋๋ค.
์ฝ๋ ์์ฑ์ ๋ง์น๊ณ ๊นํ๋ธ์ ์ฌ๋ฆฐ ํ ์ปดํ์ผ, ๋น๋, ํ ์คํธ, ๋ฐฐํฌ ๋ฑ์ ์์ ์ ์ฌ๋์ ๊ฐ์ ์์ด ์๋์ผ๋ก ์ํํ๋ ๊ณผ์ ์ ๊ตฌํํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ์๊ฐ์ ์ค์ ํด์ ๋ฐฐํฌํ๋ ๋ฑ ์ค์ ํ ์ ์๋ค.
๊ธฐ๋ง
[1] Docker Swarm์์ manager์ worker(slave)๋ ์ด๋ค ์ญํ ์ ์ํํ๋์ง ์ค๋ช ํฉ๋๋ค.
manager๋ Worker์ ๋ ผ๋ฆฌ์ ์ฐ๊ฒฐ์ ๋ง๋ค๊ณ Worker๋ค์ ๊ด๋ฆฌํ๋ค.
Worker๋ Swarm์ ์๋น์ค๋ฅผ ์คํํ๋ ์ญํ ์ ์ํํ๋ค.
[2] Docker Swarm์์ join๊ณผ leave๋ ์ด๋ค ๊ธฐ๋ฅ์ ์ํํ๋์ง ์ค๋ช ํฉ๋๋ค.
join์ Worker๊ฐ Manager์๊ฒ ๋ฑ๋ก๋์ด Manager์ ๊ด๋ฆฌ๋ฅผ ๋ฐ๋ฅผ ์ ์๋๋ก ํ๋ค. leave๋ Manager์์ ๋ฑ๋ก๋ Worker๊ฐ ๋ถ๋ฆฌ๋๋๋ก ํ๋ค.
[3] Monolithic architecture ๋๋น Microservice architecture๋ ์ด๋ค ๊ฒ์ธ์ง ์ค๋ช ํฉ๋๋ค.
Monolithic architecture๋ ํ๋์ ์ปค๋ค๋ ์๋น์ค๋ฅผ ๋ง๋๋ ๊ฒ์ ๋งํ๊ณ , Microservice architecture๋ ํ๋์ ์ปค๋ค๋ ์๋น์ค๋ฅผ ์ชผ๊ฐ์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ถ๋ฆฌํ๊ณ ์๋ก ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํํ์ ๊ธฐ์
[4] Monolithic architecture ๋๋น Microservice architecture๊ฐ Scalability, Availability (Fault tolerance), Agility, Polyglot persistence, Maintainability๊ฐ ๋๋ค๋ ๊ฒ์ด ์ด๋ค ๋ด์ฉ์ธ์ง ๊ฐ๊ฐ์ ๋ํด์ ์ค๋ช ํฉ๋๋ค.ย
๋ชจ๋๋ฆฌํฑ์ ํ ๊ฐ์ง ๊ธฐ๋ฅ์ ํ์ฅํ๋ ค๋ฉด ๋ค๋ฅธ 99๊ฐ์ง ๊ธฐ๋ฅ๋ค๋ ํจ๊ป ์ฐ๊ฒฐ๋์ด ํ์ฅํด์ผ ํ์ง๋ง ๋ง์ดํฌ๋ก์๋น์ค๋ ๋ ๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ ์ํฅ ์์ด ํ์ฅ ๊ฐ๋ฅํ๋ค. ๋ชจ๋๋ฆฌํฑ์ ํ ์๋น์ค์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋ค๋ฅธ ์๋น์ค์ ์ํฅ์ ์ฃผ์ด ๋ชจ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋, ๋ง์ดํฌ๋ก์๋น์ค๋ ๋ฏธ์น๋ ์ํฅ์ด ์ ๋ค. ๋ชจ๋๋ฆฌํฑ์ ๋ชจ๋ ํ๋๋ก ์ฐ๊ฒฐ๋์ด ๋ชจ๋๊ฐ ๊ธฐ๋ฅ ์ ์์ ์๋ฃํด์ผ ๋ฐฐํฌํ ์ ์์ง๋ง ๋ง์ดํฌ๋ก์๋น์ค๋ ๊ฐ ๊ธฐ๋ฅ๋ง๋ค ๋ฐ๋ก ๋น๋, ๋ฐฐํฌ๋ฅผ ํ ์ ์๋ค๋ ์ ์์ Agility๊ฐ ๋๋ค. ๋ชจ๋๋ฆฌํฑ์ ํตํฉ์ ์ธ ํ ๊ฐ์ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ผ ํ์ง๋ง ๋ง์ดํฌ๋ก์๋น์ค๋ ๊ฐ์์ ๊ฒฝ์ฐ์ ๋ง๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๋ชจ๋๋ฆฌํฑ์ ๋นํด ๋ง์ดํฌ๋ก์๋น์ค๋ ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๊ฐ์๋ ์ฝ๋ ์์ผ๋ก ์ธํด ์ ์ง ๋ณด์ํ๊ธฐ ํธ๋ฆฌํ๋ค.
[5] Kubernetes์ Pod๊ณผ Docker์ Container์ ๋ํด์, ๊ธฐ์ ์ ์ด ์ ์ฌ์ (๊ณตํต์ ๋ฑ)๊ณผ ์ฐจ์ด์ ์ ์ค๋ช ํฉ๋๋ค.
์ปจํ ์ด๋๊ฐ ํ๋ก๊ทธ๋จ, ์คํ ๋ฆฌ์ง, ํ๊ฒฝ ๋ณ์ ๋ฑ์ ๋ฌถ์ด ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ด ํ๋ ๋ค์ํ ์ปจํ ์ด๋๋ฅผ ํ๋๋ก ๋ฌถ์ด ์ฌ์ฉํ๋ค๋ ์ ์์ ์ ์ฌํ๋ค.
์ปจํ ์ด๋๋ ๊ฐ๊ฐ์ด ๊ฐ๋ณ์ ์ผ๋ก ์์ฑํ๊ณ ์๋ํ์ง๋ง ์ฟ ๋ฒ๋คํฐ์ค์ ํ์ ์ฌ๋ฌ ์ปจํ ์ด๋๋ฅผ ๋ฌถ์ด ์คํ ๋ฆฌ์ง, ๋คํธ์ํฌ ๋ฑ์ ๋ค๋ฅธ ์ญํ ์ ํ๋ ์ปจํ ์ด๋๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ค๋ ์ ์์ ์ฐจ์ด์ ์ ๊ฐ๋๋ค.
[6] Kubernetes์ Ingress๋ ๋ฌด์์ด๊ณ , ์ด๋ค ๊ธฐ๋ฅ์ ์ํํ๋์ง ์ค๋ช ํฉ๋๋ค.
Ingress๋ ์๋น์ค์ ๋ํ ์ธ๋ถ ์ ๊ทผ์ ๋ค๋ฃจ๋ ๊ฐ์ฒด์ด๋ค. ํด๋ฌ์คํฐ์ ์ธ๋ถ์ ํต์ ์ ์ํํ๊ณ ๋ฐ์ ์์ฒญ์ ์ด๋ค ํ์ผ๋ก ๋ณด๋ผ ์ง ์กฐ์ ํ๋ load balancing, ํ ๋์ ์ปดํจํฐ๊ฐ ์ฌ๋ฌ ์ด๋ฆ์ ๋ฐ์ ํด๋นํ๋ ๋ผ๋ฒจ๋ก ์ ๋ฌํ๋ name-based virtual hosting์ ์ํํ๋ค.
[7] Kubernetes์ NodePort๋ ๋ฌด์์ด๊ณ , ์ด๋ค ๊ธฐ๋ฅ์ ์ํํ๋์ง ์ค๋ช ํฉ๋๋ค.
NodePort๋ ํน์ ๋ ธ๋์ ํฌํธ๋ฅผ ๋ซ์ด ๋ ธ๋๊ฐ ์ธ๋ถ์ ํต์ ํ ์ ์๋๋ก ํ๋ ๋ฐฉ์์ด๋ค. NodePort๋ฅผ ํตํด ์ธ๋ถ์์ ์๋น์ค๋ก ์์ฒญ์ ๋ณด๋ด ํ์์ ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๋ค.
[8] Kubernetes์์ ์๋น์ค ์ด์์ IP ์ด๋๋ ์ค๋ฅผ ์ฌ์ฉํ์ง ์๋๋ก ํ๋ ์ด์ ์, IP ์ด๋๋ ์ค๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ ๋ฌด์์ ์ฌ์ฉํด์ผ ํ๋์ง์ ๋ํด์ ์ค๋ช ํฉ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค์ ํ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํด๋ ๊ณ ์ณ์ ์ฌ์ฉํ์ง ์๊ณ ์ข ๋ฃํ๊ณ ์๋ก ์์ฑํ๋ cattle ๋ฐฉ์์ด๋ค. ๋๋ฌธ์ ์๋ก ์์ฑ๋ ๋๋ง๋ค ์๋ก์ด IP ์ฃผ์๋ฅผ ๋ฐ๊ธฐ ๋๋ฌธ์ IP ์ฃผ์๋ฅผ ๋งค๋ฒ ์ง์ ํด์ค ์ ์์ด IP ์ฃผ์๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค. IP ์ฃผ์ ๋์ Label์ ์ค์ ํด์ ์ด๋ฆ์ ์ง์ ํ๊ณ label์ ์ฌ์ฉํด ๋์์ ์ง์ ํ๋ค.
[9] Replica Controller์ ์ญํ ๊ณผ ์ด์ ๊ตฌ๋์ ์ํ yaml ํ์ธ ์์ selector, template, replicas๊ฐ ์ด๋ค ์๋ฏธ์ธ์ง ์ค๋ช ํฉ๋๋ค.
selector : ์ด์์๊ฐ ์๊ตฌํ ๋ฌด์ธ๊ฐ๋ฅผ ๋ช ๋ นํ ๋์์ ์ง์ ํ๊ธฐ ์ํ ์ด๋ฆ์ ์ค์ ํ๋ค.
replicas : ์์ฑํ๊ณ ์ ํฌ๋งํ๋ ํ์ ๊ฐ์๋ฅผ ์ค์ ํ๋ค.
template : ๋ณต์ ํ ์๋ก์ด ํ์ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ์์ฑํ ํ ํ๋ฆฟ์ ์ค์ ํ๋ค.
[10] Deployment๋ ์ด๋ ํ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋์ง ์์ ์์์ ํ์ฉ ์ฌ๋ก๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํฉ๋๋ค.
๊ธฐ์กด ๋ฒ์ 1์ Replication Controller๊ฐ ๋ฒ์ 1 ํ์ ๋ง๋ค์ด ์ฌ์ฉํ๊ณ ์์ ๋ ์๋ก์ด ๋ฒ์ 2์ Replication Controller๋ฅผ ์์ฑํด ๋ฒ์ 2์ ํ์ ๋ง๋ค์ด ์ฌ์ฉํ๋ ๋ฑ 2๊ฐ ์ด์ ๋ณต์์ ReplicaSet Controller๋ฅผ ์ฌ์ฉํ ๋ Deployment๋ฅผ ์ฌ์ฉํ๋ค.
[11] Kubernetes์ Client API๋ ๋ฌด์์ด๋ฉฐ, ์ ํ์ํ๊ณ , ์ด๋ค ์ฉ๋๋ก ํ์ฉํ๋์ง ์ค๋ช ํฉ๋๋ค.
Client API๋ ์ฟ ๋ฒ๋คํฐ์ค์ ๊ฐ์ฒด ์์ฑ, ์ญ์ ๋ฑ์ ๋์์ ํน์ ๋ช ๋ น์ ํตํด์ ๋์์ํฌ ์ ์๋๋ก ํ๋ ๋ฐฉ์์ด๋ค.
API๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ๋ด๊ฐ ์ํ๋ ๋์์ ํ๋ ์ฝ๋๋ฅผ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ตฌ์ฑํด์ผ ํ์ง๋ง API๋ฅผ ํตํด์ ๊ฐ๋จํ ๋ช ๋ น์ด๋ฅผ ํตํด ๋์์ํฌ ์ ์๋ค๋ ์ ์์ ํ์ํ๋ค.
๋ด๊ฐ ์์ฑํ ํ๋ก๊ทธ๋จ์์ ์ฟ ๋ฒ๋คํฐ์ค API๋ฅผ ์ฌ์ฉํ ์ ์๊ณ kubectl์ ํตํด CLI์์๋ ์ฟ ๋ฒ๋คํฐ์ค API๋ฅผ ํธ์ถํด ์ํ๋ ๋ช ๋ น์ ๋ด๋ฆด ์ ์๋ค.
[12] Kubernetes์ย object๋ผ๋ย ๊ฒ์ดย ๋ฌด์์ด๊ณ ,ย ์ด๋คย ์ฉ๋๋กย ํ์ฉํ๋์งย ์ค๋ช ํฉ๋๋ค.ย ๊ทธ๋ฆฌ๊ณ ย ์ย ํ๋ก๊ทธ๋๋ฐย ์ธ์ด์์์ย object์ย ์ ์ฌํ๋ค๊ณ ย ํ๋์งย ์ถ๊ฐย ์ค๋ช ํฉ๋๋ค.
Object๋ ๋ฆฌ์์ค ํ์ ์ ํ๋์ ์ธ์คํด์ค๋ฅผ ๋งํ๋ค. ๊ฐ์ฒด๋ฅผ ์์ฑํจ์ผ๋ก์จ ์ฟ ๋ฒ๋คํฐ์ค ์์คํ ์ ํด๋ฌ์คํฐ์ desired state๋ฅผ ์ ๋ ฅํ ์ ์๋ค.
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ผ์ ํ์ ํด๋์ค๋ฅผ ์ ์ํ๊ณ ๊ทธ ์ธ์คํด์ค object๋ฅผ ์์ฑํ๋ ๊ฒ๊ณผ ๊ฐ์ด ์ฟ ๋ฒ๋คํฐ์ค๋ ํด๋์ค์ ์ ์ฌํ ๋ฆฌ์์ค ํ์ ์ ์ ์ํ๊ณ ๊ทธ ์ธ์คํด์ค ๊ฐ์ฒด๋ฅผ ์์ฑํด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ ์ฌํ๋ค.
[13] Kubernetes์์ imagePullPolicy์๋ ์ด๋ค ๊ฒ๋ค์ด ์์ผ๋ฉฐ, ๊ฐ๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ์ค๋ช ํฉ๋๋ค.ย
IfNotPresent : ์ด๋ฏธ์ง๊ฐ Local, ํด๋น ๋ ธ๋์ ์์ง ์๋ค๋ฉด, ์ด๋ฏธ์ง๋ฅผ pullํ์ฌ ์คํํ๋ค.
Always : ์ด๋ฏธ์ง๋ฅผ ํ์ด ์์๋๋ ๋์ ํญ์ pullํ๋ค. (์์๋ก ์ ๋ฐ์ดํธ๊ฐ ๋๊ณ ์ต์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ)
Never : Remote์ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ Local์ ์๋ ๊ฒ๋ง ์ฌ์ฉํ๋ค. (๋ณด์ ์์ ๊ฒฝ์ฐ)
[14] Kubernetes์ย Cluster IP, Node Port, Ingress๋ย ๋ฌด์์ด๋ฉฐ,ย ์ด๋คย ์ฉ๋๋กย ํ์ฉํ๋์งย ์ค๋ช ํฉ๋๋ค.
Cluster IP๋ ํด๋ฌ์คํฐ ์์์ ์ ํจํ IP ์ฃผ์๋ฅผ ์ง์ ํ๋ ๊ฐ์ฒด์ด๋ค. ํด๋ฌ์คํฐ ๋ด๋ถ์ ๋ค๋ฅธ ํ๊ณผ ํต์ ํ๊ธฐ ์ํ ๋ด๋ถ IP ์ฃผ์์ด๋ค.
NodePort๋ ๋ ธ๋์ ํฌํธ๋ฅผ ๋ซ๋ ๊ฐ์ฒด์ด๋ค. ํฌํธ๋ฅผ ํตํด ์ธ๋ถ์์ ํต์ ์ด ๊ฐ๋ฅํ๋๋ก ๋ง๋ ๋ค.
Ingress๋ ํด๋ฌ์คํฐ์์ ์๋น์ค์ ๋ํ ์ธ๋ถ ์ ๊ทผ์ ๋ค๋ฃจ๋ ๊ฐ์ฒด์ด๋ค. ๊ฐ ์๋น์ค๋ก ํธ๋ํฝ์ ๋๋๋ load balancing, ํ ๋์ ์ปดํจํฐ์ ์ฌ๋ฌ ์ด๋ฆ์ ๊ฐ๋ name-based virtual hosting์ ์ํํด ๋ผ๋ฒจ์ ๋ฐ๋ผ ์ ๋ฌํด์ฃผ๋ ์ฉ๋๋ก ํ์ฉํ๋ค.
[15] Kubernetes์ Storage์ธ emptyDir, hostPath, PVC(Persistent Volume Claim)์ ๋ํด์, ๊ฐ๊ฐ ๋ฌผ๋ฆฌ์ ์ธ ์์น๊ฐ ์ด๋์ด๊ณ , ํ์ฉ ์ฉ๋๋ ๋ฌด์์ธ์ง ์ค๋ช ํฉ๋๋ค.
emptyDir๋ ํ์ ์์นํ๋ค. ์์์ ์ผ๋ก ์ปจํ ์ด๋๊ฐ ์์ ํ๊ธฐ ์ํ ๊ฒ๋ค์ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค. hostPath๋ ๋ ธ๋์ ์์นํ๋ค. ๋ ธ๋์ ์์นํด ๋ ธ๋์ ํน์ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์ปจํ ์ด๋ ํ์ผ์์คํ ์ ๋ง์ดํธํ๋ค. PVC๋ ํด๋ฌ์คํฐ์ ์์นํ๋ค. PV ์ฌ์ฉ ์์ฒญ์ ํตํด PV๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ํ์ฉํ๋ค.