์๋
์ ๊ฑธ์ณ Pinterest์ 300์ต ๋ช
์ ์ฌ์ฉ์๋ 200์ต ๊ฐ๊ฐ ๋๋ ๋ณด๋์ 4์ต ๊ฐ๊ฐ ๋๋ ํ์ ๋ง๋ค์์ต๋๋ค. ์ด๋ฌํ ์ฌ์ฉ์ ์ง๋จ๊ณผ ๋ฐฉ๋ํ ์ฝํ
์ธ ๊ธฐ๋ฐ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ํฌํธ์ ๋ช ๊ฐ์ CPU๋ก ์ฒ๋ฆฌํ ์ ์๋ ๋ง์ดํฌ๋ก์๋น์ค๋ถํฐ ์ ์ฒด ๊ฐ์ ๋จธ์ ์์ ์คํ๋๋ ๊ฑฐ๋ํ ๋ชจ๋๋ฆฌ์ค์ ์ด๋ฅด๊ธฐ๊น์ง ์์ฒ ๊ฐ์ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค. ๊ทธ๋ฌ๋ค ํ์ฌ์ ์์ ์ด k8s์ ์ ๋ฆฌ๋ ์๊ฐ์ด ์๋ค. Pinterest์์ "ํ๋ธ"๊ฐ ์ข์ ๋ณด์ด๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์? ์ต๊ทผ ๊ธฐ์ฌ ๋ฒ์ญ์ ํตํด ์ด์ ๋ํด ๋ฐฐ์ธ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์์ต ๋ช
์ ์ฌ์ฉ์์ ์์ต ๊ฐ์ ํ์ด ์์ต๋๋ค. ์ด๋ฌํ ์ฌ์ฉ์ ์ง๋จ๊ณผ ๋ฐฉ๋ํ ์ฝํ
์ธ ๊ธฐ๋ฐ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ๋ช ๊ฐ์ CPU๋ก ์ฒ๋ฆฌํ ์ ์๋ ๋ง์ดํฌ๋ก์๋น์ค๋ถํฐ ์ ์ฒด ๊ฐ์ ๋จธ์ ์์ ์คํ๋๋ ๊ฑฐ๋ํ ๋ชจ๋๋ฆฌ์ค์ ์ด๋ฅด๊ธฐ๊น์ง ์์ฒ ๊ฐ์ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค. ๋ํ CPU, ๋ฉ๋ชจ๋ฆฌ ๋๋ I/O ์ก์ธ์ค๊ฐ ํ์ํ ์ ์๋ ๋ค์ํ ํ๋ ์์ํฌ๊ฐ ์์ต๋๋ค.
์ด๋ฌํ ๋๊ตฌ ๋ชจ์์ ์ ์ง ๊ด๋ฆฌํ๋ ๊ณผ์ ์์ ๊ฐ๋ฐ ํ์ ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ๊ฐ์ง ๊ณผ์ ์ ์ง๋ฉดํฉ๋๋ค.
- ์์ง๋์ด๊ฐ ํ๋ก๋์ ํ๊ฒฝ์ ์คํํ๋ ๋ฐ ํต์ผ๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค. ์ํ ๋น์ ์ฅ ์๋น์ค, ์ํ ์ ์ฅ ์๋น์ค ๋ฐ ํ๋ฐํ๊ฒ ๊ฐ๋ฐ ์ค์ธ ํ๋ก์ ํธ๋ ์์ ํ ๋ค๋ฅธ ๊ธฐ์ ์คํ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ด๋ก ์ธํด ์์ง๋์ด๋ฅผ ์ํ ์ ์ฒด ๊ต์ก ๊ณผ์ ์ด ๋ง๋ค์ด์ก๊ณ ์ธํ๋ผ ํ์ ์์ ๋ ์ฌ๊ฐํ๊ฒ ๋ณต์กํด์ก์ต๋๋ค.
- ์์ฒด ๊ฐ์ ๋จธ์ ์ ๋ณด์ ํ ๊ฐ๋ฐ์๋ ๋ด๋ถ ๊ด๋ฆฌ์์๊ฒ ์์ฒญ๋ ๋ถ๋ด์ ์๊ฒจ์ค๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก OS๋ AMI ์ ๋ฐ์ดํธ์ ๊ฐ์ ๊ฐ๋จํ ์์ ์๋ ๋ช ์ฃผ, ๋ช ๋ฌ์ด ๊ฑธ๋ฆฝ๋๋ค. ์ด๋ก ์ธํด ๊ฒ์ผ๋ก๋ ์ ๋์ ์ผ๋ก ์ผ์์ ์ธ ์ํฉ์์ ์์ ๋์ด ์ฆ๊ฐํฉ๋๋ค.
- ๊ธฐ์กด ์๋ฃจ์ ์์ ๊ธ๋ก๋ฒ ์ธํ๋ผ ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ๋ง๋๋ ๋ฐ ์ด๋ ค์์ด ์์ต๋๋ค. ๊ฐ์ ๋จธ์ ์ ์์ ์๋ฅผ ์ฐพ๋ ๊ฒ์ด ์ฝ์ง ์๊ธฐ ๋๋ฌธ์ ์ํฉ์ ๋์ฑ ๋ณต์กํด์ง๋๋ค. ์ฆ, ์ด ์ฉ๋์ ์ธํ๋ผ์ ๋ค๋ฅธ ๋ถ๋ถ์์ ์๋ํ๊ธฐ ์ํด ์์ ํ๊ฒ ์ถ์ถํ ์ ์๋์ง ์ ์ ์์ต๋๋ค.
์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์์คํ ์ ์ํฌ๋ก๋ ๊ด๋ฆฌ๋ฅผ ํตํฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ํ๋ก์ ํธ์ ๊ด๋ จ๋ ๋ชจ๋ ๋ฆฌ์์ค๊ฐ ํ๋์ ์ค์ ์ง์ค์ ์์คํ ์์ ๊ด๋ฆฌ๋๋ฏ๋ก ๊ฐ๋ฐ ์๋๊ฐ ํฅ์๋๊ณ ์ธํ๋ผ ๊ด๋ฆฌ๊ฐ ๋จ์ํ๋ฉ๋๋ค.
๊ทธ๋ฆผ 1: ์ธํ๋ผ ์ฐ์ ์์(์ ๋ขฐ์ฑ, ๊ฐ๋ฐ์ ์์ฐ์ฑ ๋ฐ ํจ์จ์ฑ)
Pinterest์ ํด๋ผ์ฐ๋ ๊ด๋ฆฌ ํ๋ซํผ ํ์ 8๋ ์ K2017์ ๋ฐ๊ฒฌํ์ต๋๋ค. 2017๋ ์๋ฐ๊ธฐ๊น์ง ์ฐ๋ฆฌ๋ API์ ๋ชจ๋ ์น ์๋ฒ๋ฅผ ํฌํจํ ๋๋ถ๋ถ์ ์์ฐ ๊ธฐ๋ฅ์ ๋ฌธ์ํํ์ต๋๋ค. ์ดํ ์ปจํ ์ด๋ ์๋ฃจ์ ์กฐ์ , ํด๋ฌ์คํฐ ๊ตฌ์ถ ๋ฐ ์์ ์ ์ํ ๋ค์ํ ์์คํ ์ ๋ํ ์ฒ ์ ํ ํ๊ฐ๋ฅผ ์ํํ์ต๋๋ค. 2017๋ ๋ง์ ์ฐ๋ฆฌ๋ Kubernetes๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ์์ ๋งค์ฐ ์ ์ฐํ๊ณ ๋๋ฆฌ ์ง์๋์์ต๋๋ค.
์ง๊ธ๊น์ง ์ฐ๋ฆฌ๋ Kops๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฒด ํด๋ฌ์คํฐ ๋ถํ ๋๊ตฌ๋ฅผ ๊ตฌ์ถํ๊ณ ๋คํธ์ํน, ๋ณด์, ๋ฉํธ๋ฆญ, ๋ก๊น , ID ๊ด๋ฆฌ ๋ฐ ํธ๋ํฝ๊ณผ ๊ฐ์ ๊ธฐ์กด ์ธํ๋ผ ๊ตฌ์ฑ ์์๋ฅผ Kubernetes๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ์ต๋๋ค. ๋ํ ๋ฆฌ์์ค์ ๋ํ ์ํฌ๋ก๋ ๋ชจ๋ธ๋ง ์์คํ ์ ๊ตฌํํ๋๋ฐ, ๊ทธ ๋ณต์ก์ฑ์ ๊ฐ๋ฐ์์๊ฒ ์จ๊ฒจ์ ธ ์์ต๋๋ค. ์ด์ ์ฐ๋ฆฌ๋ ํด๋ฌ์คํฐ์ ์์ ์ฑ์ ๋ณด์ฅํ๊ณ ํ์ฅํ๋ฉฐ ์๋ก์ด ํด๋ผ์ด์ธํธ๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐ ์ค์ ์ ๋๊ณ ์์ต๋๋ค.
Kubernetes: Pinterest ๋ฐฉ์
์ฐ๋ฆฌ ์์ง๋์ด๋ค์ด ์ข์ํ ํ๋ซํผ์ธ Pinterest ๊ท๋ชจ์ Kubernetes๋ฅผ ์์ํ๋ ค๋ฉด ๋ง์ ์ด๋ ค์์ด ๋ฐ๋ฆ ๋๋ค.
๋๊ธฐ์ ์ผ๋ก์ ์ฐ๋ฆฌ๋ ์ธํ๋ผ ๋๊ตฌ์ ๋ง๋ํ ํฌ์๋ฅผ ํด์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ธ์ฆ์ ์ฒ๋ฆฌ ๋ฐ ํค ๋ฐฐํฌ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ณด์ ๋๊ตฌ, ํธ๋ํฝ ์ ์ด ๊ตฌ์ฑ ์์, ์๋น์ค ๊ฒ์ ์์คํ , ๊ฐ์์ฑ ๊ตฌ์ฑ ์์, ๋ก๊ทธ ๋ฐ ๋ฉํธ๋ฆญ ๋์คํจ์น ๊ตฌ์ฑ ์์๊ฐ ์์ต๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ด ์์ง๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ํ์ฐฉ์ค์ ์ผ๋ฐ์ ์ธ ๊ฒฝ๋ก๋ฅผ ๊ฑฐ์ณค๊ธฐ ๋๋ฌธ์ ์ ํ๋ซํผ์์ ๊ธฐ์กด ํ ์ ๋ค์ ๋ง๋๋ ๋์ ์ด ๋ชจ๋ ์ฅ๋น๋ฅผ Kubernetes์ ์ ์ธํ๋ผ์ ํตํฉํ๊ณ ์ถ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ง์์ด ์ด๋ฏธ ์กด์ฌํ๊ณ ์ฒ์๋ถํฐ ์๋ก ๋ง๋ค ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ ๋ฐ์ ์ผ๋ก ๋จ์ํํ์ต๋๋ค.
๋ฐ๋ฉด์ Kubernetes ์์ฒด์ ๋ถํ ์์ธก ๋ชจ๋ธ(์: ๋ฐฐํฌ, ์์ ๋ฐ ๋ฐ๋ชฌ ์ธํธ)์ ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ์ด๋ฌํ ์ ์ฉ์ฑ ๋ฌธ์ ๋ Kubernetes๋ก ์ ํํ๋ ๋ฐ ํฐ ์ฅ์ ๋ฌผ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์๋น์ค ๊ฐ๋ฐ์๋ค์ด ๋ก๊ทธ์ธ ์ค์ ์ด ๋๋ฝ๋๊ฑฐ๋ ์ฌ๋ฐ๋ฅด์ง ์๋ค๊ณ ๋ถํํ๋ ๊ฒ์ ๋ค์์ต๋๋ค. ๋ํ ๋์ผํ ์ฌ์๊ณผ ์์ ์ผ๋ก ์๋ฐฑ ๊ฐ์ ๋ณต์ฌ๋ณธ์ด ์์ฑ๋ ๋ ํ ํ๋ฆฟ ์์ง์ ์๋ชป๋ ์ฌ์ฉ์ด ๋ฐ์ํ์ฌ ์ ๋ชฝ ๊ฐ์ ๋๋ฒ๊น ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋์ผํ ํด๋ฌ์คํฐ์์ ์๋ก ๋ค๋ฅธ ๋ฒ์ ์ ์ ์งํ๋ ๊ฒ๋ ๋งค์ฐ ์ด๋ ค์ ์ต๋๋ค. ๋ชจ๋ ๋ฌธ์ , ๋ฒ๊ทธ ๋ฐ ์ ๋ฐ์ดํธ์ ํจ๊ป ๋์ผํ ๋ฐํ์ ํ๊ฒฝ์ ์ฌ๋ฌ ๋ฒ์ ์์ ๋์์ ์์ ํด์ผ ํ๋ ๊ฒฝ์ฐ ๊ณ ๊ฐ ์ง์์ ๋ณต์ก์ฑ์ ์์ํด ๋ณด์ญ์์ค.
Pinterest ์ฌ์ฉ์ ์์ฑ ๋ฐ ์ปจํธ๋กค๋ฌ
์์ง๋์ด๊ฐ Kubernetes๋ฅผ ๋ ์ฝ๊ฒ ๊ตฌํํ๊ณ ์ธํ๋ผ๋ฅผ ๋จ์ํํ๊ณ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ์์ฒด ์ฌ์ฉ์ ์ ์ ๋ฆฌ์์ค ์ ์(CRD)๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค.
CRD๋ ๋ค์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๋ค์ํ ๊ธฐ๋ณธ Kubernetes ๋ฆฌ์์ค๋ฅผ ๊ฒฐํฉํ์ฌ ๋จ์ผ ์ํฌ๋ก๋๋ก ์๋ํฉ๋๋ค. ์๋ฅผ ๋ค์ด PinterestService ๋ฆฌ์์ค์๋ ๋ฐฐํฌ, ๋ก๊ทธ์ธ ์๋น์ค ๋ฐ ๊ตฌ์ฑ ๋งต์ด ํฌํจ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ DNS ์ค์ ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค.
- ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ง์์ ๊ตฌํํฉ๋๋ค. ์ฌ์ฉ์๋ ๋น์ฆ๋์ค ๋ก์ง์ ๋ฐ๋ผ ์ปจํ ์ด๋ ์ฌ์์๋ง ์ง์คํ๋ฉด ๋๋ฉฐ, CRD ์ปจํธ๋กค๋ฌ๋ ํ์ํ ๋ชจ๋ ์ด๊ธฐํ ์ปจํ ์ด๋, ํ๊ฒฝ ๋ณ์ ๋ฐ ํฌ๋ ์ฌ์์ ๊ตฌํํฉ๋๋ค. ์ด๋ ๊ฐ๋ฐ์์๊ฒ ๊ทผ๋ณธ์ ์ผ๋ก ๋ค๋ฅธ ์์ค์ ํธ์ํจ์ ์ ๊ณตํฉ๋๋ค.
- CRD ์ปจํธ๋กค๋ฌ๋ ๋ํ ๊ธฐ๋ณธ ๋ฆฌ์์ค์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ๋๋ฒ๊ทธ ๊ฐ์ฉ์ฑ์ ํฅ์์ํต๋๋ค. ์ฌ๊ธฐ์๋ ์ํ๋ ์ฌ์๊ณผ ์ค์ ์ฌ์์ ์กฐ์ , CRD ์ํ ์ ๋ฐ์ดํธ, ์ด๋ฒคํธ ๋ก๊ทธ ์ ์ง ๊ด๋ฆฌ ๋ฑ์ด ํฌํจ๋ฉ๋๋ค. CRD๊ฐ ์์ผ๋ฉด ๊ฐ๋ฐ์๋ ์ฌ๋ฌ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํด์ผ ํ๋ฏ๋ก ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ด ๋์์ง ๋ฟ์ ๋๋ค.
๋ค์์ ์ปจํธ๋กค๋ฌ๊ฐ ๊ด๋ฆฌํ๋ PinterestService ๋ฐ ๋ด๋ถ ๋ฆฌ์์ค์ ์์ ๋๋ค.
์์์ ๋ณผ ์ ์๋ฏ์ด ์ฌ์ฉ์ ์ ์ ์ปจํ
์ด๋๋ฅผ ์ง์ํ๋ ค๋ฉด init ์ปจํ
์ด๋์ ์ฌ๋ฌ ์ถ๊ฐ ๊ธฐ๋ฅ์ ํตํฉํ์ฌ ๋ณด์, ๊ฐ์์ฑ ๋ฐ ๋คํธ์ํฌ ํธ๋ํฝ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ๋ํ ๊ตฌ์ฑ ๋งต ํ
ํ๋ฆฟ์ ์์ฑํ๊ณ ๋ฐฐ์น ์์
์ ์ํ PVC ํ
ํ๋ฆฟ ์ง์์ ๊ตฌํํ์ผ๋ฉฐ ์ฌ๋ฌ ํ๊ฒฝ ๋ณ์๋ฅผ ์ถ์ ํ์ฌ ID, ๋ฆฌ์์ค ์๋น ๋ฐ ๊ฐ๋น์ง ์์ง์ ์ถ์ ํ์ต๋๋ค.
๊ฐ๋ฐ์๊ฐ ๊ตฌ์ฑ์ ์ถ๊ฐ๋ก ์ ์ง ๊ด๋ฆฌํ๊ณ ๋๋ฒ๊น ํ๋ ๊ฒ์ ๊ณ ์ฌํ๊ณ CRD ์ง์ ์์ด ์ด๋ฌํ ๊ตฌ์ฑ ํ์ผ์ ์ง์ ์์ฑํ๊ธฐ๋ฅผ ์ํ๋ค๋ ๊ฒ์ ์์ํ๊ธฐ ์ด๋ ต์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ์ํฌํ๋ก
์ ์ด๋ฏธ์ง๋ Pinterest ์ฌ์ฉ์ ์ ์ ๋ฆฌ์์ค๋ฅผ Kubernetes ํด๋ฌ์คํฐ์ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
- ๊ฐ๋ฐ์๋ CLI ๋ฐ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ํตํด Kubernetes ํด๋ฌ์คํฐ์ ์ํธ ์์ฉํฉ๋๋ค.
- CLI/UI ๋๊ตฌ๋ Artifactory์์ ์ํฌํ๋ก ๊ตฌ์ฑ YAML ํ์ผ ๋ฐ ๊ธฐํ ๋น๋ ์์ฑ(๋์ผํ ๋ฒ์ ID)์ ๊ฒ์ํ ๋ค์ ์ด๋ฅผ Job Submission Service์ ์ ์ถํฉ๋๋ค. ์ด ๋จ๊ณ๋ฅผ ์ํํ๋ฉด ํ๋ก๋์ ๋ฒ์ ๋ง ํด๋ฌ์คํฐ์ ์ ๋ฌ๋ฉ๋๋ค.
- JSS๋ Kubernetes๋ฅผ ํฌํจํ ๋ค์ํ ํ๋ซํผ์ ์ํ ๊ฒ์ดํธ์จ์ด์ ๋๋ค. ์ฌ๊ธฐ์์ ์ฌ์ฉ์๊ฐ ์ธ์ฆ๋๊ณ ํ ๋น๋์ด ๋ฐํ๋๋ฉฐ CRD ๊ตฌ์ฑ์ด ๋ถ๋ถ์ ์ผ๋ก ํ์ธ๋ฉ๋๋ค.
- JSS ์ธก์์ CRD๋ฅผ ํ์ธํ ํ ํด๋น ์ ๋ณด๋ฅผ k8s ํ๋ซํผ API๋ก ์ ์กํฉ๋๋ค.
- CRD ์ปจํธ๋กค๋ฌ๋ ๋ชจ๋ ์ฌ์ฉ์ ๋ฆฌ์์ค์ ์ด๋ฒคํธ๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค. CR์ ๊ธฐ๋ณธ k8s ๋ฆฌ์์ค๋ก ๋ณํํ๊ณ , ํ์ํ ๋ชจ๋์ ์ถ๊ฐํ๊ณ , ์ ์ ํ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๊ณ , ์ปจํ ์ด๋ํ๋ ์ฌ์ฉ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ถฉ๋ถํ ์ธํ๋ผ ์ง์์ ๋ฐ์ ์ ์๋๋ก ๊ธฐํ ์ง์ ์์ ์ ์ํํฉ๋๋ค.
- ๊ทธ๋ฐ ๋ค์ CRD ์ปจํธ๋กค๋ฌ๋ ์์ ๋ ๋ฐ์ดํฐ๋ฅผ Kubernetes API์ ์ ๋ฌํ์ฌ ์ค์ผ์ค๋ฌ์์ ์ฒ๋ฆฌํ๊ณ ํ๋ก๋์ ์ ํฌ์ ํ ์ ์๋๋ก ํฉ๋๋ค.
์ฃผ์: ์ด ๋ฐฐํฌ์ ์ฌ์ ์ถ์ ์์ ํ๋ฆ์ ์๋ก์ด k8s ํ๋ซํผ์ ์ฒซ ๋ฒ์งธ ์ฌ์ฉ์๋ฅผ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ์ฌ ์๋ก์ด CI/CD์ ์์ ํ ํตํฉํ๊ธฐ ์ํด ์ด ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ ํ๋ ๊ณผ์ ์ ์์ต๋๋ค. ์ฆ, Kubernetes์ ๊ด๋ จ๋ ๋ชจ๋ ๊ฒ์ ์๋ ค๋๋ฆด ์๋ ์์ต๋๋ค. ๋ค์ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ธ "Pinterest์ฉ CI/CD ํ๋ซํผ ๊ตฌ์ถ"์์ ์ด ๋ฐฉํฅ์ ๋ํ ์ฐ๋ฆฌ์ ๊ฒฝํ๊ณผ ํ์ ์งํ ์ํฉ์ ๊ณต์ ํ ์ ์๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค.
ํน์์์์ ์ข ๋ฅ
Pinterest์ ํน์ ์๊ตฌ ์ฌํญ์ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ํ ์ํฌํ๋ก์ ๋ง๊ฒ ๋ค์ CRD๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค.
- PinterestService๋ ์ค๋ซ๋์ ์คํ๋์ด ์จ ์ํ ๋น์ ์ฅ ์๋น์ค์ ๋๋ค. ๋น์ฌ์ ํต์ฌ ์์คํ ์ค ๋ค์๋ ์ด๋ฌํ ์๋น์ค ์ธํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
- PinterestJobSet์ ์ ์ฒด ์ฃผ๊ธฐ ๋ฐฐ์น ์์ ์ ๋ชจ๋ธ๋งํฉ๋๋ค. Pinterest์ ์ผ๋ฐ์ ์ธ ์๋๋ฆฌ์ค๋ ์ฌ๋ฌ ์์ ์ด ๋ค๋ฅธ ์ ์ฌํ ํ๋ก์ธ์ค์ ๊ด๊ณ์์ด ๋์ผํ ์ปจํ ์ด๋๋ฅผ ๋ณ๋ ฌ๋ก ์คํํ๋ค๋ ๊ฒ์ ๋๋ค.
- PinterestCronJob์ ์์ ์ฃผ๊ธฐ์ ์ธ ๋ก๋์ ํจ๊ป ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ ๋ณด์, ํธ๋ํฝ, ๋ก๊ทธ ๋ฐ ์งํ๋ฅผ ๋ด๋นํ๋ Pinterest ์ง์ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ ๊ธฐ๋ณธ cron ์์ ์ ์ํ ๋ํผ์ ๋๋ค.
- PinterestDaemon์๋ ์ธํ๋ผ ๋ฐ๋ชฌ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ด ์ ํ๊ตฐ์ ํด๋ฌ์คํฐ์ ๋ ๋ง์ ์ง์์ ์ถ๊ฐํจ์ ๋ฐ๋ผ ๊ณ์ํด์ ์ฑ์ฅํ๊ณ ์์ต๋๋ค.
- PinterestTrainingJob์ Tensorflow ๋ฐ Pytorch ํ๋ก์ธ์ค๋ก ํ์ฅ๋์ด ๋ค๋ฅธ ๋ชจ๋ CRD์ ๋์ผํ ์์ค์ ๋ฐํ์ ์ง์์ ์ ๊ณตํฉ๋๋ค. Pinterest๋ Tensorflow ๋ฐ ๊ธฐํ ๊ธฐ๊ณ ํ์ต ์์คํ ์ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ค์ฌ์ผ๋ก ๋ณ๋์ CRD๋ฅผ ๊ตฌ์ถํด์ผ ํ ์ด์ ๊ฐ ์์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋ํ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค ๋ฐ ๊ธฐํ ์ํ ์ ์ฅ ์์คํ ์ ๊ณง ์ ์ฉ๋ PinterestStatefulSet์ ๋ํ ์์ ๋ ์งํ ์ค์ ๋๋ค.
๋ฐํ์ ์ง์
์ ํ๋ฆฌ์ผ์ด์ ํฌ๋๊ฐ Kubernetes์์ ์คํ๋๋ฉด ์๋์ผ๋ก ์ธ์ฆ์๋ฅผ ๋ฐ์ ์์ ์ ์๋ณํฉ๋๋ค. ์ด ์ธ์ฆ์๋ ๋น๋ฐ ์ ์ฅ์์ ์ก์ธ์คํ๊ฑฐ๋ mTLS๋ฅผ ํตํด ๋ค๋ฅธ ์๋น์ค์ ํต์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ํํธ, Container Init Configurator์ Daemon์ ์ปจํ ์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ ์ ํ์ํ ๋ชจ๋ ์ข ์์ฑ์ ๋ค์ด๋ก๋ํฉ๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ค๋น๋๋ฉด ํธ๋ํฝ ์ฌ์ด๋์นด์ ๋ฐ๋ชฌ์ ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฅผ ๋ฐ๊ฒฌํ ์ ์๋๋ก Zookeeper์ ๋ชจ๋์ IP ์ฃผ์๋ฅผ ๋ฑ๋กํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์๋๊ธฐ ์ ์ ๋คํธ์ํฌ ๋ชจ๋์ด ๊ตฌ์ฑ๋์๊ธฐ ๋๋ฌธ์ ์ด ๋ชจ๋ ๊ฒ์ด ์๋ํฉ๋๋ค.
์๋ ์ํฌ๋ก๋์ ๋ํ ๋ฐํ์ ์ง์์ ์ผ๋ฐ์ ์ธ ์์ ๋๋ค. ๋ค๋ฅธ ์ ํ์ ์ํฌ๋ก๋์๋ ์ฝ๊ฐ ๋ค๋ฅธ ์ง์์ด ํ์ํ ์ ์์ง๋ง ๋ชจ๋ ํฌ๋ ์์ค ์ฌ์ด๋์นด, ๋ ธ๋ ์์ค ๋๋ ๊ฐ์ ๋จธ์ ์์ค ๋ฐ๋ชฌ์ ํํ๋ก ์ ๊ณต๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด ๋ชจ๋ ๊ฒ์ด ๊ด๋ฆฌ ์ธํ๋ผ ๋ด์ ๋ฐฐํฌ๋๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ์ผ๊ด์ฑ์ ๊ฐ๋๋ก ๋ณด์ฅํ์ฌ ๊ถ๊ทน์ ์ผ๋ก ๊ธฐ์ ์์ ๋ฐ ๊ณ ๊ฐ ์ง์ ์ธก๋ฉด์์ ๋ถ๋ด์ ํฌ๊ฒ ์ค์ ๋๋ค.
ํ ์คํธ ๋ฐ QA
์ฐ๋ฆฌ๋ ๊ธฐ์กด Kubernetes ํ ์คํธ ์ธํ๋ผ ์์ ์๋ํฌ์๋ ํ ์คํธ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ์ต๋๋ค. ์ด ํ ์คํธ๋ ๋ชจ๋ ํด๋ฌ์คํฐ์ ์ ์ฉ๋ฉ๋๋ค. ์ฐ๋ฆฌ์ ํ์ดํ๋ผ์ธ์ ์ ํ ํด๋ฌ์คํฐ์ ์ผ๋ถ๊ฐ ๋๊ธฐ ์ ์ ๋ง์ ์์ ์ ๊ฑฐ์ณค์ต๋๋ค.
ํ ์คํธ ์์คํ ์ธ์๋ ์์คํ ๊ตฌ์ฑ ์์์ ์ํ, ๋ฆฌ์์ค ์๋น ๋ฐ ๊ธฐํ ์ค์ํ ์งํ๋ฅผ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ์ฌ ์ฌ๋์ ๊ฐ์ ์ด ํ์ํ ๋๋ง ์๋ ค์ฃผ๋ ๋ชจ๋ํฐ๋ง ๋ฐ ๊ฒฝ๊ณ ์์คํ ์ด ์์ต๋๋ค.
๋์
์ฐ๋ฆฌ๋ ๋์ฐ๋ณ์ด ์ก์ธ์ค ์ปจํธ๋กค๋ฌ ๋ฐ ํ ํ๋ฆฟ ์์คํ ๊ณผ ๊ฐ์ ๋ง์ถคํ ๋ฆฌ์์ค์ ๋ํ ๋ช ๊ฐ์ง ๋์์ ์ดํด๋ณด์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ์๋นํ ์ด์์์ ์ด๋ ค์์ด ์์ผ๋ฏ๋ก ์ฐ๋ฆฌ๋ CRD ๊ฒฝ๋ก๋ฅผ ์ ํํ์ต๋๋ค.
์ฌ์ด๋์นด, ํ๊ฒฝ ๋ณ์ ๋ฐ ๊ธฐํ ๋ฐํ์ ์ง์์ ๋์ ํ๊ธฐ ์ํด ๋ณ์ด ์น์ธ ์ปจํธ๋กค๋ฌ๊ฐ ์ฌ์ฉ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ CRD์์๋ ์ด๋ฌํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ผ๋ฉด ๋ฆฌ์์ค ๋ฐ์ธ๋ฉ, ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ ๋ฑ ๋ค์ํ ๋ฌธ์ ์ ์ง๋ฉดํ๊ฒ ๋ฉ๋๋ค.
์ฐธ๊ณ : Helm ์ฐจํธ์ ๊ฐ์ ํ ํ๋ฆฟ ์์คํ ๋ ์ ์ฌํ ๊ตฌ์ฑ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๋ฐ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค. ํ์ง๋ง ์ฐ๋ฆฌ์ ์ ๋ฌด ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌํ๊ธฐ์๋ ๋๋ฌด ๋ค์ํฉ๋๋ค. ๋ํ ์ง์์ ์ธ ๋ฐฐํฌ ์ค์ ํ ํ๋ฆฟ์ ์ฌ์ฉํ ๋ ์ค๋ฅ๊ฐ ๋๋ฌด ๋ง์ด ๋ฐ์ํฉ๋๋ค.
๋ค๊ฐ์ค๋ ์์
ํ์ฌ ์ฐ๋ฆฌ๋ ๋ชจ๋ ํด๋ฌ์คํฐ์์ ํผํฉ ๋ก๋๋ฅผ ์ฒ๋ฆฌํ๊ณ ์์ต๋๋ค. ๋ค์ํ ์ ํ๊ณผ ๊ท๋ชจ์ ํ๋ก์ธ์ค๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ๋ค์ ์์ญ์์ ์์ ํฉ๋๋ค.
- ํด๋ฌ์คํฐ ๋ชจ์์ ํ์ฅ์ฑ๊ณผ ์์ ์ฑ์ ์ํด ์ฌ๋ฌ ํด๋ฌ์คํฐ์ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ฐ๊ฒฐ ๋ฐ SLA๋ฅผ ์์ฑํ๊ธฐ ์ํ ํด๋ฌ์คํฐ ์์ ์ฑ, ํ์ฅ์ฑ ๋ฐ ๊ฐ์์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ก ์ถฉ๋ํ์ง ์๋๋ก ๋ฆฌ์์ค ๋ฐ ํ ๋น๋์ ๊ด๋ฆฌํ๊ณ ํด๋ฌ์คํฐ ๊ท๋ชจ๋ฅผ ๋น์ฌ์์ ์ ์ดํฉ๋๋ค.
- Kubernetes์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ํ๊ณ ๋ฐฐํฌํ๊ธฐ ์ํ ์๋ก์ด CI/CD ํ๋ซํผ์ ๋๋ค.
์ถ์ฒ : habr.com