[k8s] 12 Factors
12 Factors๋ ์์ฒด ํด๋ผ์ฐ๋ ๊ตฌ์ถ๊ณผ ์ฌ์ฉ์ ์์ด์ ์ ๊ฒฝ์จ์ ๊ด๋ฆฌํด์ผํ 12๊ฐ์ ์์, ๊ณ์ธต์ ์ ๋ฆฌํ ๊ฒ์ ๋งํ๋ค.
๋์ถฉ ์ด๋ฐ ๊ฒ๋ค์ด ์๋ค.

1. codebase
์์ค์ฝ๋์ ๊ด๋ฆฌ๋ฅผ ๋งํ๋ค.
git์ด๋ svn ๊ฐ์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ๊ณ remote server๋ฅผ ํตํด ํ์๊ด๋ฆฌ๋ฅผ ํ๋๋ฐ, ๋๋ถ๋ถ์ git์ ์ฌ์ฉํ๋ค.
๊ทธ๋ฆฌ๊ณ remote server๋ github ๊ฐ์ ์๋ํํฐ ํธ์คํ
์ ์ธ ์๋ ์๊ณ , gitlab ๋ฑ์ผ๋ก ์์ฒด git ์๋ฒ๋ฅผ ๊ตฌ์ถํ ์๋ ์๋ค.
๊ถ๊ณ ์ฌํญ
- ํ๋์ ์ฑ์ ํ๋์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค.
2. dependencies
์ ํ๋ฆฌ์ผ์ด์
์ ๋ํ๋์๋ฅผ ๋ช
ํํ๊ฒ ๊ด๋ฆฌํ๋ผ๋ ๋ง์ด๋ค.
์๋ฐ๋ฉด gradle์ด๋ maven์ ์ฌ์ฉํ ๊ฒ์ด๊ณ , Nodejs๋ฉด npm ๋ฑ์ ์ฌ์ฉํ ๊ฒ์ด๋ค.
์ด์ง๊ฐํ ์์์ ์ธ ์ธ์ด ํ๊ฒฝ์ด ์๋๋ผ๋ฉด ์์ฐ์ค๋ ๊ฐ์ถ๊ฒ ๋๋ ๋ถ๋ถ์ด๋ค.
๊ถ๊ณ ์ฌํญ
- ๋ํ๋์๋ ์ต๋ํ ๋ช ํํ๊ฒ. latest ๊ฐ์๊ฑด ์์
3. config
์ด๊ฑด ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๊ฒฝ๋ณ์๋ผ๊ณ ์ดํดํ๋ฉด ํธํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์์ ๋ณด๋ ์ธ์ฆ์ฉ ํค ๋ฑ์ ๊ตฌ์ฑ์ ๋ณด๋ฅผ ์ฝ๋์ ๋ถ๋ฆฌํด์ ๊ด๋ฆฌํ๋ผ๋ ๊ฒ์ด๋ค.
์คํ๋ง์ ๊ฒฝ์ฐ Spring Cloud Config๋ฅผ ์ฌ์ฉํ๊ณค ํ๋ค.
4. backing services
Backing Service๋ ๋คํธ์ํฌ๋ฅผ ํตํด์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ์๋น์ค๋ฅผ ๋งํ๋ค.
๋ง์ดํฌ๋ก์๋น์ค ๋จ์๋ผ๊ณ ํ ์๋ ์๋ค.
ํ์์ ๋ฐ๋ผ ๋ถ๋ฆฌํ๊ณ ์ฐ๋ํ๋ฉด ๋๋ค.
5. build, release, run
ํํ ๋งํ๋ CI/CD๋ฅผ ๋งํ๋ค.
์์ค์ฝ๋๋ฅผ ๋น๋ํ๊ณ , ํ๊ฒฝ์ ๋ฆด๋ฆฌ์ฆํ๊ณ , ๋ฆด๋ฆฌ์ฆํ๊ฑธ ์คํํ๋ 3๊ฐ์ ๊ตฌ๋ถ์ ๋ช ํํ ํ๋ ๊ฒ์ด๋ค.
6. process
๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๊ฐ ์๋(stateless) ํ๋ก์ธ์ค๋ฅผ ์งํฅํด์ผ ํ๋ค.
๊ทธ๋์ ์ธ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ง์์ ์ผ๋ก ๊ด๋ฆฌํ๋ ค๋ฉด ์ค์ํ๋ Redis๋ฅผ ์ฐ๊ฑฐ๋ ํ๋ค.
7. port binding
์ ํ๋ฆฌ์ผ์ด์
์ ํฌํธ๋ฅผ ์ด์ด์ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์
์ด ์ ์ํ ์ ์๋๋ก ํ์๋ ๊ฒ์ด๋ค.
๋ด๋ถ ์ ํ๋ฆฌ์ผ์ด์
๋ ์ด๋ฅผ ์ํด ๋ฐฑ์๋ ์๋น์ค์ฒ๋ผ URL์ ์ ๊ณตํด์ผ ํ๋ค.
์คํ๋ง์์ ์ด์ ๊ด๋ จ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก Spring Cloud Netflix๊ฐ ์๋ค.
8. concurrency (๋์์ฑ)
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฉํฐํ๋ก์ธ์ค๋ก ๋์ ๋์์ฑ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์์ด์ผ ํ๋ค.
์ฌ์ค Spring ๊ฐ์ ์ ๋ช
ํ ํ๋ ์์ํฌ๋ค์ ๋๋ถ๋ถ ๋ด๋ถ ์์คํ
์ด ๋ฉํฐํ๋ก์ธ์ฑ์ ์์์ ์ฒ๋ฆฌํด์ค๋ค.
์ฒ๋ฆฌํด์ฃผ์ง ์๋๊ฒ๋ง ์ง์ ์ ๊ฒฝ์จ์ ๊ตฌ์ฑํ๋ฉด ๋๋ค.
9. disposability (์ฒ๋ถ๊ฐ๋ฅ์ฑ)
์ ํ๋ฆฌ์ผ์ด์ ์ ๋น ๋ฅด๊ฒ ์ฃฝ์ด๊ณ ๋์ธ ์ ์์ด์ผ ํ๋ค.
์ด๋ฅผ ํตํด Scale up/down์ ๋์ฑ ์์ํ๊ฒ ๋ฌ์ฑํ๋ค.
10. dev/prod parity
๊ฐ๋ฐ์ฉ ํ๊ฒฝ๊ณผ ์๋น์ค ํ๊ฒฝ์ ๋ถ๋ฆฌํ๊ณ ๊ตฌ์กฐ์ ์ผ๋ก ์ต๋ํ ๊ฐ๊ฒ ์ ์งํ๋ค.
์ด๋ฅผ ํตํด ํ ์คํธ-๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ์ํํ ํ ์ ์๋ค.
11. logs
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ก๊ทธ๋ฅผ ๊ฐ ๋ ธ๋ ๋ก์ปฌ์ ์ ์ฅํ์ง ๋ง๊ณ , ์ค์ํ๋ ์์คํ ์์ ์ ์ฅ-๊ด๋ฆฌํ๋ค.
์ด๋ฅผ ํตํด ๊ฐ ๋ ธ๋์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋๋ผ๋ ๋ก๊ทธ๋ฅผ ํตํ ํธ๋ฌ๋ธ์ํ ์ ํ๊ณณ์์ ์ฝ๊ฒ ํ ์ ์์ผ๋ฉฐ, ๋ก๊ทธํ์ผ ๋์ ์ผ๋ก ์ธํ ์คํ ๋ฆฌ์ง ์ด๊ณผ ๋ฌธ์ ๋ ํด๊ฒฐํ ์ ์๋ค.
12. admin process
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๊ธฐํ๋ ๋ง์ด๊ทธ๋ ์ด์ ๋ฑ์ ์ผํ์ฑ ์์ ์ ๋งํ๋ค.
๋ณดํต ํ์ด์ฌ ๊ฐ์ ์ธํฐํ๋ฆฌํ ์ธ์ด๋ก ๋ง๋ค์ด ์ฐ๋ ํธ์ด๋ค.
์ฐธ์กฐ
https://12factor.net/ko/
https://en.m.wikipedia.org/wiki/Twelve-Factor_App_methodology