[k8s] 12 Factors

12 Factors๋Š” ์ž์ฒด ํด๋ผ์šฐ๋“œ ๊ตฌ์ถ•๊ณผ ์‚ฌ์šฉ์— ์žˆ์–ด์„œ ์‹ ๊ฒฝ์จ์„œ ๊ด€๋ฆฌํ•ด์•ผํ•  12๊ฐœ์˜ ์š”์†Œ, ๊ณ„์ธต์„ ์ •๋ฆฌํ•œ ๊ฒƒ์„ ๋งํ•œ๋‹ค.

๋Œ€์ถฉ ์ด๋Ÿฐ ๊ฒƒ๋“ค์ด ์žˆ๋‹ค.



1. codebase

์†Œ์Šค์ฝ”๋“œ์˜ ๊ด€๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค.
git์ด๋‚˜ svn ๊ฐ™์€ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๊ณ  remote server๋ฅผ ํ†ตํ•ด ํ˜•์ƒ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š”๋ฐ, ๋Œ€๋ถ€๋ถ„์€ git์„ ์‚ฌ์šฉํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  remote server๋Š” github ๊ฐ™์€ ์„œ๋“œํŒŒํ‹ฐ ํ˜ธ์ŠคํŒ…์„ ์“ธ ์ˆ˜๋„ ์žˆ๊ณ , gitlab ๋“ฑ์œผ๋กœ ์ž์ฒด git ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

๊ถŒ๊ณ ์‚ฌํ•ญ

  1. ํ•˜๋‚˜์˜ ์•ฑ์€ ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.



2. dependencies

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋””ํŽœ๋˜์‹œ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๋ผ๋Š” ๋ง์ด๋‹ค.
์ž๋ฐ”๋ฉด gradle์ด๋‚˜ maven์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ณ , Nodejs๋ฉด npm ๋“ฑ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค.

์–ด์ง€๊ฐ„ํžˆ ์›์‹œ์ ์ธ ์–ธ์–ด ํ™˜๊ฒฝ์ด ์•„๋‹ˆ๋ผ๋ฉด ์ž์—ฐ์Šค๋ ˆ ๊ฐ–์ถ”๊ฒŒ ๋˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

๊ถŒ๊ณ ์‚ฌํ•ญ

  1. ๋””ํŽœ๋˜์‹œ๋Š” ์ตœ๋Œ€ํ•œ ๋ช…ํ™•ํ•˜๊ฒŒ. 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