Kubernetes( ์ฟ ๋ฒ๋คํฐ์ฆ ์ดํ ์งง๊ฒ ์ฟ ๋ฒ ๋ผ๊ณ ํธ์นญํ๊ฒ ์ )๋ฅผ ์ฒ์์ ๋ฐฐ์ฐ๊ธฐ ์์ํ๊ฒ ๋๊ฑด ๋น์ฉ์ ๊ฐ์ด์๋ค.
docker๋ฅผ ์ฐ๊ธฐ ์์ํ ์ดํ docker๊ฐ ๋ง์์ ธ์ ๊ด๋ฆฌ๊ฐ ๋งค์ฐ ๋ถํธํด์ง๋ ์ํฉ์ด ์๊ณ , (๋น์ ๋ด๊ฐ ์๊ธฐ๋ก๋ ) ๊ตฌ๊ธ์์ gcp ์์ ํ๊ฐ์ ๋จธ์ ์ ํ๊ฐ์ docker ์ปจํ
์ด๋๋ฅผ ์ฌ๋ ค์ฃผ๋ ์๋น์ค๋ ์์์ง๋ง, ํ๋์ ์๋ฒ์ ์ฌ๋ฌ๊ฐ์ docker ์ปจํ
์ด๋๋ฅผ ์ฌ๋ ค์ฃผ๋ ์๋น์ค๊ฐ ์์ด์ ์์ฌ์ ํ๋ ์ฐฐ๋์ ๋๊ตฐ๊ฐ ์ฟ ๋ฒ ๋ฅผ ์๋ ค์ฃผ์ด ์๊ฒ ๋์๋ค. ์ฌ์ค, ๊ฐ๋ณ์ ์ผ๋ก ๊ด๋ฆฌํ๋ฉด ์๊ด์๋๋ฐ, ์ฟ ๋ฒ ์ ๊ฐ์ ์๋น์ค๋ฅผ ์ด์ฉํ๊ณ ์ถ์๋ ์ด์ ๋ "๋น์ฉ ์ ๊ฐ"์ด์๋ค. ๊ฐ๊ฐ์ docker ์ปจํ
์ด๋๋ค์ด ํญ์ ํ๋ก๋๊ฐ ๊ฑธ๋ฆฌ๋๊ฒ๋ ์๋๊ณ , ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๊ฒ๋ ์๋๋ฐ, ์ ๋ ดํ ๋น์ฉ์ผ๋ก ๋ง์ docker ์ปจํ
์ด๋๋ฅผ ๋๋ฆฌ๊ณ ์ถ์๋๊ฒ.
๋๊ตฌ๋ ์ฐ๋ฆฌ ํ์ฌ๋ ์ฑ๋ด์ด๋ผ๋ ์๋น์ค๋ฅผ ํ๋๋ฐ, ์ฑ๋ด์ ํน์ฑ์ ํญ์ ๊ท ์ผํ๊ฒ ์๋ฒ์ ๋ก๋๊ฐ ๊ฑธ๋ฆฌ์ง ์๋๋ค. ์ฟ ๋ฒ ๋ฅผ ์๊ณ ๋๋ค, ์ด๊ฑด ์ ๋ง ๋๋ฅผ ์ํ ์๋น์ค๊ตฌ๋..ํ๋ ์๊ฐ์ ํ๊ฒ ๋์๋ค.
์ฟ ๋ฒ ๋ฅผ ์๊ธฐ์ ํ๋์ ์๋ฒ์์ ๋์ปค๋ฅผ ์ด์ฉํ๊ธฐ ์ํด์ ์์ฒด์ ์ผ๋ก shell script์ node๋ฅผ ์ด์ฉํด์ ๊ด๋ฆฌ์์คํ
์ ๋ง๋ค์์๋ค.
ํ๋์ ๋ช
๋ น์ด๋ก ์๋ฒ์ ๋์ปค๋ค์ ์
๋ฐ์ดํธํ๊ณ ์ต์ ๋ฒ์ ์ผ๋ก ์ ์งํ๊ณ ๋ฑ๋ฑ์ ํ๊ธฐ ์ํ, ๊ทธ๋ฌ๋ ์ฟ ๋ฒ ๋ฅผ ์๊ณ ๋ณด๋ ์ฐธ ๋ถ์ง์๋ ์ง์ด์..
์ฟ ๋ฒ๋คํฐ์ฆ๋ ๊ทธ๋ฆฌ์ค์ด๋ก "ํค์ก์ด"๋ฅผ ์๋ฏธํ๋ค.
๊ตฌ๊ธ์ด Go ์ธ์ด๋ฅผ ์ด์ฉํด ๋ง๋ค์์ผ๋ฉฐ 2014๋
์ค๋ฐ์ฏค ๋ฐํ๋ ์์คํ
์ด๋ค.
๊ตฌ๊ธ์ด ์ฒ์ ๋ง๋ค์์ง๋ง ์คํ์์คํํ๋ก ๊ธฐ๋ถ๋์๊ณ , ๊ตฌ๊ธ์์๋ GKE ( https://cloud.google.com/kubernetes-engine/?hl=ko )๋ผ๋ ์ด๋ฆ์ผ๋ก ์๋น์ค ์ค์ด๊ณ , AWS์์๋ EKS ( https://aws.amazon.com/ko/eks/ ) ๋ผ๋ ์ด๋ฆ์ ์๋น์ค. Azure ์์๋ ๊ทธ๋ฅ ์๋์ ์ด๋ฆ๋๋ก ( https://azure.microsoft.com/ko-kr/services/container-service/kubernetes/ ) ์๋น์ค๊ฐ ๋๊ณ ์๋ค.
( ๋งํฌ์ ์ฌ์ดํธ๋ฅผ ํ๋ฒ์ฉ ๋ฐฉ๋ฌธํด๋ณด๋๊ฒ๋ ์ข์๋ฏ )
์ฟ ๋ฒ ์ ์ฅ์ ๊ณผ ํน์ง์ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ง๋ง, ๊ฐ๋ตํ ๋งํ์๋ฉด ์์์ ๋งํ๋ฏ์ด "์ฌ๋ฌ๋์ ์๋ฒ๊ฐ ๋์๊ฐ๋ ์์คํ ์์ , ๊ฐ๊ฐ์ ๋์ปค ์ปจํ ์ด๋๋ค์ด ๊ฐ๊ฐ์ ์๋ฒ์์ ํ๋์ ์๋น์ค๋ก ๋์๊ฐ ์ ์๋๋ก ์ ๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐํด์ฃผ๋๊ฒ"์ด๋ค.
์ค์ผ์คํธ๋ ์ด์ ์ด๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ฉ์ด๋ ์ธํฐ๋ท์์ ์ฐพ์ ๋ ๊บผ๊ณ , ์๋ฅผ๋ค์๋ฉด ์ด๋ฐ๊ฒ์ด๋ค.
์ฐ์ ์๋ฒ๋ฅผ 3๋ ์ธํ ํ๋ค. 3๋์ ์๋ฒ์์๋ nginx ๋ฅผ ์ด์ฉํ๋ ์ปจํ ์ด๋๊ฐ 3๊ฐ๊ฐ ๋์๊ฐ๊ณ , ๊ฐ๊ฐ์ nginx๋ ๊ทธ ๋ค์ ์ฌ๋ฌ๊ฐ์ ๋ค์ํ node.js ์ปจํ ์ด๋๋ค์ ๋ค์ํ๊ฒ ๊ตฌ๋ํ๋ค๊ณ ์น์. ๊ฐ๊ฐ์ node.js ์ปจํ ์ด๋๋ค์ ๊ฐ๊ฐ ๋ค๋ฅธ url์ ๋ผ์ฐํ ํ๋ค.
์ด๋ฐ ๊ฒฝ์ฐ ๋จ์ผ ์๋ฒ์์ ์ด์ํ๋๊ฒ๋ ์ฝ์ง ์์๋ฐ, ์ฌ์ง์ด ์๋ฒ๊ฐ ์ฌ๋ฌ๋๊ฐ ๋๋ฉด ๋์ฑ ๋ต์ด ์๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ฟ ๋ฒ ๊ฐ ํด๊ฒฐํด์ค๋ค. ์๋ฒ 3๋๋ฅผ ๊ฐ๊ฐ ๊ฐ๋ณ node ๋ผ๊ณ ๋ถ๋ฅธ๋ค. ( node.js์ node ๊ฐ ์๋๋ค! )
๊ฐ๊ฐ์ nginx ์ปจํ
์ด๋๋ฅผ ํ๋๋ก ๋ฌถ์ด ํ๋์ pod ๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๊ฐ๋ณ์ ์ธ pod์๋ ์ฌ๋ฌ๊ฐ์ ์ปจํ
์ด๋๊ฐ ๋์์ ๋์๊ฐ๋ค.
pod์์ ์ปจํ
์ด๋๋ค์ node์ ๋ถ์ฐ๋์ด ๋์๊ฐ๊ฒ ๋๋ค.
์ฆ, ํ๋์ ์์คํ ์๋ node๋ผ๊ณ ๋ถ๋ฅด๋ ๋ฌผ๋ฆฌ์ ์ธ ์๋ฒ ( ๋ฌผ๋ก ํด๋ผ์ฐ๋ ์ผ์๋ ์๋ค. ) ๊ฐ ์๊ณ , ๊ฐ๊ฐ์ node์๋ pod๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฐ์ํ ๋ ์ปจํ ์ด๋ ๋ฌถ์๋ค์ด ์ด์๋๊ฒ ๋๋ค.
์ด๋ฌํ ์์คํ ์ ํ์ฉํ๋ฉด GCP์ ๊ฒฝ์ฐ ์ ์ ํ( preemptible ) ์๋ฒ๋ฅผ ํ์ฉํด ๋น์ฉ์ ์ค ์ผ ์๋ ์๋ค.( ํ์ฌ๋ ๋ฒ ํ์ )
์์ง์ ์ด์ง์ธ ์ํฉ์ด๋ผ.. ์์ง์ ์ ๋ชจ๋ฅด๋๊ฒ ๋ง์ง๋ง, ๊ณต๋ถ๋ฅผ ํด๋๊ฐ๋ฉด์ ํฌ์คํ ์ ๋ ํด์ผ ํ ๋ฏ.
์ด๊ธ์ ์ฌ๊ธฐ๊น์ง..