JavaRush /Java Blog /Random-KO /์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ #120. Java ์—ฐ์‚ฐ์ž &, && (AND) || (๋˜๋Š”). ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ GitOp...

์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ #120. Java ์—ฐ์‚ฐ์ž &, && (AND) || (๋˜๋Š”). ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ GitOps ๋ฐ DevOps ์†Œ๊ฐœ

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค

Java ์—ฐ์‚ฐ์ž &, && (AND) || (๋˜๋Š”)

์ถœ์ฒ˜: freeCodeCamp Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์—ฐ์‚ฐ์ž๋Š” ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž, ํ• ๋‹น ์—ฐ์‚ฐ์ž, ๋น„๊ต ์—ฐ์‚ฐ์ž, ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฒ”์ฃผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ #120.  Java ์—ฐ์‚ฐ์ž โ€“ &, &&(AND) ||  (๋˜๋Š”).  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ GitOps ๋ฐ DevOps ์†Œ๊ฐœ - 1์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋น„ํŠธ AND ์—ฐ์‚ฐ์ž( & )์™€ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž AND( && ), OR( || )์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋น„ํŠธ AND ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

& ๊ธฐํ˜ธ๋Š” ๋น„ํŠธ AND ์—ฐ์‚ฐ์ž๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ฃผ์–ด์ง„ ์ˆซ์ž์˜ ์ด์ง„ ๊ฐ’์„ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ˆซ์ž์˜ ์ด์ง„ ๊ฒฐ๊ณผ๋Š” 10์ง„๋ฒ•์œผ๋กœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. & ์—ฐ์‚ฐ์ž๊ฐ€ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋ฉด ์™ผ์ชฝ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋‘ ์ˆซ์ž์˜ ๋ฌธ์ž ๊ฐ’์„ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋” ์ž˜ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
System.out.println(10 & 12);
// returns 8
์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์„ค๋ช…ํ•  ๊ฒƒ์ธ๊ฐ€? 10์˜ ์ด์ง„์ˆ˜ ๊ฐ’์€ 1010์ž…๋‹ˆ๋‹ค. 12์˜ ์ด์ง„์ˆ˜ ๊ฐ’์€ 1100์ž…๋‹ˆ๋‹ค. ์—ฐ์‚ฐ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 1๊ณผ 0 => 0 0๊ณผ 1 => 0 1๊ณผ 1 => 1 0๊ณผ 0 = > 0 ๊ทธ๋Ÿผ ์—ฐ์‚ฐ์„ ํ•ด๋ณด์ž. 10์˜ ์ฒซ ๋ฒˆ์งธ ๊ธฐํ˜ธ๋Š” 1์ด๊ณ  12์˜ ์ฒซ ๋ฒˆ์งธ ๊ธฐํ˜ธ๋„ 1์ด๋ฏ€๋กœ 1๊ณผ 1 = 1์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๊ธฐํ˜ธ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. 10์˜ ๊ฒฝ์šฐ 0, 12์˜ ๊ฒฝ์šฐ 1: 1๊ณผ 0 = 0์ž…๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ๊ธฐํ˜ธ์˜ ๊ฒฝ์šฐ - 10์˜ ๊ฒฝ์šฐ 1, 12์˜ ๊ฒฝ์šฐ 0: 1 ๋ฐ 0 = 0. ๋„ค ๋ฒˆ์งธ ๋ฌธ์ž์˜ ๊ฒฝ์šฐ - 10์˜ ๊ฒฝ์šฐ 0, 12์˜ ๊ฒฝ์šฐ 0: 0 ๋ฐ 0 = 0. ์ด์ œ ๋ฐ˜ํ™˜๋œ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ๊ฒฐํ•ฉํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด 1000์ด ๋ฉ๋‹ˆ๋‹ค. 10์ง„์ˆ˜์—์„œ 1000์ด๋ผ๋Š” ์ด์ง„ ๊ฐ’์€ 8์ด๋ฏ€๋กœ ์—ฐ์‚ฐ์€ 8์„ ๋ฐ˜ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋…ผ๋ฆฌ AND ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

์กฐ๊ฑด์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ๋ถ€์šธ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”. ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋”ฐ๋ผ true ๋˜๋Š” false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค . && ๊ธฐํ˜ธ๋Š” AND ์—ฐ์‚ฐ์ž๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ๋ฌธ/์กฐ๊ฑด์„ ํ‰๊ฐ€ํ•˜๊ณ  ๋‘ ๋ฌธ/์กฐ๊ฑด์ด ๋ชจ๋‘ true์ธ ๊ฒฝ์šฐ์—๋งŒ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
statment1/condition1 && statemnt2/condition2
์œ„์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๋ฌธ์œผ๋กœ ๊ตฌ๋ถ„๋œ ๋‘ ๊ฐœ์˜ ๋ฌธ/์กฐ๊ฑด์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฐ์‚ฐ์ž๋Š” ๋‘ ๋ช…๋ น๋ฌธ/์กฐ๊ฑด์˜ ๊ฐ’์„ ํ‰๊ฐ€ํ•˜๊ณ  ๊ฒฐ๊ณผ( ์ฐธ ๋˜๋Š” ๊ฑฐ์ง“) ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค . ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
System.out.println((10 > 2) && (8 > 4));
//true
๋‘ ์กฐ๊ฑด์ด ๋ชจ๋‘ true์ด๋ฏ€๋กœ ์ž‘์—…์€ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค . 10์€ 2๋ณด๋‹ค ํฌ๊ณ  8์€ 4๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค. ๋‘ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ž˜๋ชป๋œ ๋…ผ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ false๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค . && ์—ฐ์‚ฐ์ž๋ฅผ ๋” ์ž˜ ์ดํ•ดํ•˜๋ ค๋ฉด ๋‘ ์กฐ๊ฑด์ด ๋ชจ๋‘ true์—ฌ์•ผ true ๋กœ ํ‰๊ฐ€๋œ๋‹ค๋Š” ์ ์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค . false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค .
System.out.println((2 > 10) && (8 > 4));
// false
์—ฌ๊ธฐ์„œ 2๋Š” 10๋ณด๋‹ค ํฌ์ง€ ์•Š๊ณ  8์€ 4๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ false ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค . ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ž˜๋ชป๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ๋‘ ์กฐ๊ฑด์ด ๋ชจ๋‘ ์ฐธ์ธ ๊ฒฝ์šฐ => ์ฐธ

  • ๋‘ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๊ฐ€ ๊ฑฐ์ง“์ธ ๊ฒฝ์šฐ => ๊ฑฐ์ง“

  • ๋‘ ์กฐ๊ฑด์ด ๋ชจ๋‘ ๊ฑฐ์ง“์ธ ๊ฒฝ์šฐ => ๊ฑฐ์ง“

๋ถ€์šธ OR ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

OR ์—ฐ์‚ฐ์ž๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด || ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. . ์ด ์—ฐ์‚ฐ์ž๋Š” ๋‘ ์กฐ๊ฑด์ด ๋ชจ๋‘ ๊ฑฐ์ง“์ธ ๊ฒฝ์šฐ ์—๋งŒ ๊ฑฐ์ง“์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋‘ ์กฐ๊ฑด์ด ๋ชจ๋‘ true์ด๋ฉด true ๊ฐ€ ๋˜๊ณ  , ๋‘ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ true์ด๋ฉด true ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค . ๊ตฌ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
statment1/condition1 || statemnt2/condition2
๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
System.out.println((6 < 1) || (4 > 2));
// true
์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๊ฐ€ true์ด๋ฏ€๋กœ True๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค .
  • ๋‘ ์กฐ๊ฑด์ด ๋ชจ๋‘ ์ฐธ์ธ ๊ฒฝ์šฐ => ์ฐธ

  • ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๊ฐ€ true์ธ ๊ฒฝ์šฐ => true

  • ๋‘ ์กฐ๊ฑด์ด ๋ชจ๋‘ ๊ฑฐ์ง“์ธ ๊ฒฝ์šฐ => ๊ฑฐ์ง“

๊ฒฐ๋ก 

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” Java์—์„œ ๋น„ํŠธ & ์—ฐ์‚ฐ์ž ์™€ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž && ๋ฐ || ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. . ๋˜ํ•œ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ฐ ์ž‘์—…์ด ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’๋„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ GitOps ๋ฐ DevOps ์†Œ๊ฐœ

์ถœ์ฒ˜: Hackernoon DevOps์˜ ์ฃผ์š” ๋ชฉํ‘œ ์ค‘ ํ•˜๋‚˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ํ”„๋กœ๋•์…˜์— ๊ธฐ๋Šฅ์„ ์ตœ๋Œ€ํ•œ ๋น ๋ฅด๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐฐํฌํ•˜๋„๋ก ๋•๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ์ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ œ๊ณต๋ถ€ํ„ฐ ํ”„๋กœ๋•์…˜ ์›Œํฌ๋กœ๋“œ ๋ฐฐํฌ ๋ฐ ๋ณด์•ˆ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„๊ตฌ์™€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ์—, ์„œ๋‘๋ฅด๋‹ค๊ฐ€ ์‹ฌ๊ฐํ•œ ์‹คํŒจ๋กœ ์ด์–ด์ ธ์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ #120.  Java ์—ฐ์‚ฐ์ž โ€“ &, &&(AND) ||  (๋˜๋Š”).  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ GitOps ๋ฐ DevOps ์†Œ๊ฐœ - 2GitOps๋Š” DevOps๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ณด๋‹ค ๊ตฌ์ฒด์ ์œผ๋กœ Git ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•œ ์ž๋™ํ™” ์ „๋žต์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์ด๋ฏธ ์ค‘์•™ ์ง‘์ค‘์‹ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ(GitHub, GitLab ๋˜๋Š” BitBucket ๋“ฑ์„ ์‚ฌ์šฉ)์— ์ฝ”๋“œ๋ฅผ ์ปค๋ฐ‹ํ–ˆ์œผ๋ฏ€๋กœ DevOps ๊ฐœ๋ฐœ์ž๋Š” ์ž‘์—… ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์‹คํ–‰ํ•  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ ๋˜๋Š” ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐœ๋ฐœ์ž๋Š” Git๋งŒ์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ฝ”๋“œ๋ฅผ ํ”„๋กœ๋•์…˜์— ์ ์šฉํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ž๋™ํ™”๋ฉ๋‹ˆ๋‹ค.

์™œ GitOps์ธ๊ฐ€?

์ด์ „์— DevOps ๋ฐ CI/CD ๋ฐฉ๋ฒ•์€ ํ…Œ์ŠคํŠธ ์‹คํ–‰, ์ธํ”„๋ผ ํ”„๋กœ๋น„์ €๋‹, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ๋“ฑ ์ผ์ƒ์ ์ธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋…์  ์Šคํฌ๋ฆฝํŠธ ๋ฐ ๋„๊ตฌ ์„ธํŠธ์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์˜ ์ฆ๊ฐ€์™€ ํ•จ๊ป˜ Kubernetes์™€ ๊ฐ™์€ ์ƒˆ๋กœ์šด ์ธํ”„๋ผ ๋„๊ตฌ์˜ ๊ฐ€์šฉ์„ฑ์œผ๋กœ ์ธํ•ด ๊ฐœ๋ฐœ์ž๋Š” CI/CD ํ”„๋กœ์„ธ์Šค์— ๋” ๋งŽ์ด ์ฐธ์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ์‚ฌ์šฉ์ž ์‹œ๋‚˜๋ฆฌ์˜ค์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ณ  ์ผ๊ด€๋˜์ง€ ์•Š์€ ์›Œํฌํ”Œ๋กœ, ๋…ธ๋ ฅ์˜ ์ค‘๋ณต ๋ฐ ๊ฐœ๋ฐœ ์†๋„์˜ ๊ธ‰๊ฒฉํ•œ ๊ฐ์†Œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ๋„๊ตฌ์™€ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ™œ์šฉํ•˜๋ ค๋ฉด ํŒ€์—๋Š” CI/CD์— ๋Œ€ํ•œ ์ผ๊ด€๋˜๊ณ  ์ž๋™ํ™”๋œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋…์  ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ๋Œ€์‹  ๋ฒ”์šฉ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

  • ์ง€์ •๋œ ๋ฒ”์šฉ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ์•ฑ๊ณผ ์„œ๋น„์Šค๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•˜์„ธ์š”.

  • ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•œ ํ›„ ๋” ๋น ๋ฅด๊ฒŒ ๋ฐฐํฌํ•˜์„ธ์š”.

  • ๋” ๋น ๋ฅด๊ณ , ๋” ์ž์ฃผ, ๋” ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค๋ฅผ ์œ„ํ•ด ์ž๋™ํ™”๋œ ๋ฐฐํฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • ์„ ์–ธ์  ๋””์ž์ธ ํŒจํ„ด์„ ์ค€์ˆ˜ํ•˜๋Š”์ง€ ๋กค๋ฐฑ ๋ฐ ๊ฐ์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋Š” GitOps๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ชจ๋“  ์ด์œ (๋ฐ ๊ทธ ์ด์ƒ)๋กœ ์ธํ•ด ๊ธฐ์—…์€ ํด๋ผ์šฐ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ• ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ์— ์„ฑ๊ณตํ•˜๋ ค๋ฉด CI/CD ๋ฐ DevOps์— ๋Œ€ํ•œ ๊ด€๋ฆฌ๋˜๊ณ  ์ž๋™ํ™”๋œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ž๋™ํ™”๊ฐ€ ์ „๋ถ€๋ผ๋ฉด GitOps๊ฐ€ ๋‹ค๋ฅธ ์ „๋žต(SlackOps, ์˜ˆ์•ฝ ๋ฐฐํฌ ๋˜๋Š” ๋‹จ์ˆœ ์Šคํฌ๋ฆฝํŠธ ๋“ฑ)๋ณด๋‹ค ๋‚˜์€ ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? ๋Œ€๋‹ต์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” GitOps๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

Git - ๋ชจ๋“  ๊ฒƒ์„ ๊ด€๋ฆฌํ•˜๋Š” ํ•˜๋‚˜์˜ ๋„๊ตฌ

์ตœ๊ทผ ๋ช‡ ๋…„ ๋™์•ˆ GitOps๋Š” ๊ฐœ๋ฐœ์ž๋“ค ์‚ฌ์ด์—์„œ ๊ฐ€์žฅ ๋†’์€ ํ‰๊ฐ€๋ฅผ ๋ฐ›๋Š” DevOps ์ž๋™ํ™” ์ „๋žต ์ค‘ ํ•˜๋‚˜์ž„์ด ๋ถ„๋ช…ํ•ด์กŒ์œผ๋ฉฐ ๊ทธ ์ด์œ ๋ฅผ ์•„๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” Git์— ๊ฑฐ์ฃผํ•ฉ๋‹ˆ๋‹ค. git์— ์ž„์‹œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ €์žฅํ•˜๊ณ , git์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต๋™ ์ž‘์—…ํ•˜๊ณ , git์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ , ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๊ธฐ๋ก๊ณผ ๊ฐ์‚ฌ ์ถ”์ ์„ git์—์„œ๋„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์€ Git์— ํฌ๊ฒŒ ์˜์กดํ•˜๊ฒŒ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŠน๋ณ„ํ•œ ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. CircleCI , Github Actions , Gitlab CI ๋“ฑ๊ณผ ๊ฐ™์ด GitOps๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฐ ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ตœ์‹  ์ง€์†์  ํ†ตํ•ฉ ์‹œ์Šคํ…œ์—์„œ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ง€์›ํ•˜๋Š” ๊ตฌ์„ฑ์€ Git ์ €์žฅ์†Œ์— ์ง์ ‘ ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์†Œ์Šค ์ฝ”๋“œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ์€ ๋ฒ„์ „์ด ์ œ์–ด๋˜๋ฉฐ ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•˜๋Š” ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ•„์š”์— ๋”ฐ๋ผ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋ณด์•ˆ๊ณผ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•  ๋•Œ ์ด๋Ÿฌํ•œ ์•ก์„ธ์Šค ์šฉ์ด์„ฑ์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์™„์ „ํ•œ ์…€ํ”„ ์„œ๋น„์Šค

์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ๋ฒ„๊ทธ ์ˆ˜์ •์€ ํ”„๋กœ๋•์…˜์— ์ถœ์‹œ๋  ๋•Œ๊นŒ์ง€ ์™„๋ฃŒ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ”„๋กœ๋•์…˜์—์„œ ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๊ฐœ๋ฐœ์ž์˜ ์‹œ๊ฐ„๊ณผ ์—๋„ˆ์ง€๋ฅผ ๋‚ญ๋น„ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž์‹ ์˜ ์ž‘์—… ๋‹จ๊ณ„๋ฅผ ์ข…๋ฃŒํ•˜๊ธฐ ์ „์— ๋‹ค๋ฅธ ํŒ€์ด๋‚˜ ์‚ฌ๋žŒ์ด ์ผ๋ถ€ ์ž‘์—…์„ ์™„๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์กฐ์ง ๋‚ด ๋งˆ์ฐฐ๊ณผ ๊ฐˆ๋“ฑ์„ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒ€ ๊ฐ„์˜ ํ˜‘์—…์„ ์ด‰์ง„ํ•˜๋Š” ๊ฒƒ์€ GitOps์˜ ์ฃผ์š” ์ด์  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์ต์ˆ™ํ•œ ๋„๊ตฌ์—์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ˆ˜๋™ ๊ฐœ์ž… ์—†์ด ์ฝ”๋“œ๋ฅผ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ์ถœ์‹œํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ž์‹ ์˜ ์ž‘์—…์„ ์™„๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  ์ผ์— ์ง€์†์ ์ธ ๋…ธ๋ ฅ

GitOps์˜ ๋˜ ๋‹ค๋ฅธ ํฐ ์ด์ ์€ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•ญ์ƒ ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ˆ˜๋™ ๋‹จ๊ณ„ ์—†์ด ํ…Œ์ŠคํŠธ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” GitOps ์œ ๋ฌด์— ๊ด€๊ณ„์—†์ด git์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๊ธฐ์กด ์›Œํฌํ”Œ๋กœ์— ์—ฐ๊ฒฐํ•˜์—ฌ DevOps ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ ์ด์ƒ์ ์ธ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ GitOps

๋‹น์—ฐํžˆ ํ”„๋กœ์„ธ์Šค์— ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฐธ์—ฌํ•˜๋ฉด์„œ ํŒ€์€ Git๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ๋„๊ตฌ๋ฅผ ๋„๋ฆฌ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋˜ํ•œ CI/CD์˜ ํ†ตํ•ฉ/๋ฐฐํฌ ๋‹จ๊ณ„์— ์ž์—ฐ์Šค๋Ÿฌ์šด ์ผ๊ด€์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ Git ์ €์žฅ์†Œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•ญ๋ชฉ(์˜ˆ: ์ปค๋ฐ‹, ํ’€ ์š”์ฒญ ์—ด๊ธฐ/๋‹ซ๊ธฐ, ๋ณ‘ํ•ฉ ๋“ฑ)์€ ์ œํ•œ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋Œ€๋ถ€๋ถ„์˜ GitOps ๊ตฌํ˜„์˜ ๋ชจ์–‘๊ณผ ๋Š๋‚Œ์—๋Š” ์ผ๋ จ์˜ ์ผ๋ฐ˜์ ์ธ ๋‹จ๊ณ„๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

1. ํ’€ ์š”์ฒญ, ํ…Œ์ŠคํŠธ ๋ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ™˜๊ฒฝ

๊ฐœ๋ฐœ์ž๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ๋ณด๋‚ธ ํ›„ ์ผ๋ฐ˜์ ์œผ๋กœ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ƒˆ Git ๋ธŒ๋žœ์น˜์— ์ปค๋ฐ‹ํ•˜๊ณ  ํ’€ ์š”์ฒญ ๋˜๋Š” ๋ณ‘ํ•ฉ ์š”์ฒญ์„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜์— ๋‹ค์‹œ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์€ ๋งค์ผ ์ด๋Ÿฐ ์ผ์„ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กฌํ”„ํŠธ์—์„œ๋Š” ๊ธฐ์ˆ  ๊ด€๋ฆฌ์ž๊ฐ€ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฒ€ํ† ํ•˜๊ณ  ์ด๋ฅผ ๊ธฐ๋ณธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์— ๋ณ‘ํ•ฉํ•˜๋„๋ก ์Šน์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” DevOps๊ฐ€ ์ถ”๊ฐ€ ์ž‘์—…์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๊ธฐํšŒ์ž…๋‹ˆ๋‹ค. CI(์ง€์†์  ํ†ตํ•ฉ) ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ํ’€ ์š”์ฒญ ํ”„๋กœ์„ธ์Šค์—์„œ ์ƒ์„ฑ๋œ ์—ด๊ธฐ/๋‹ซ๊ธฐ ์ด๋ฒคํŠธ์— ์—ฐ๊ฒฐํ•จ์œผ๋กœ์จ DevOps ํŒ€์€ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์‹คํ–‰, ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ํ•ด๋‹น ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์‹คํ–‰์„ ํŠธ๋ฆฌ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—”์ง€๋‹ˆ์–ด๋Š” ์ฝ”๋“œ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ์‹ ๋ขฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๊ณ  ์ œํ’ˆ โ€‹โ€‹๊ด€๋ฆฌ์ž๋Š” ๋ณ‘ํ•ฉ ์ „ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ํ™˜๊ฒฝ์„ ํ†ตํ•ด ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๊ธด๋ฐ€ํ•œ ์‹ ๋ขฐ๋Š” ๋” ๋น ๋ฅธ ์œตํ•ฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ๋นˆ๋„๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ๋ณต์žกํ•˜๊ณ  ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ๋กค๋ฐฑ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ์ด GitOps ๊ธฐ์ˆ ์€ ๋” ๋น ๋ฅด๊ณ  ๊ฑด๊ฐ•ํ•œ ๊ฐœ๋ฐœ ๋ฐ ์ƒ์‚ฐ ํŒ€์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

2. ๋งˆ์Šคํ„ฐ์™€ ๋ณ‘ํ•ฉํ•˜๊ณ  ์Šคํ…Œ์ด์ง•์— ๋ฐฐํฌ

๋ชจ๋“  ๋‹น์‚ฌ์ž๊ฐ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฒ€ํ† ํ•˜๊ณ  ๋‚˜๋ฉด ์ฝ”๋“œ๋Š” ๋‚˜๋จธ์ง€ ๊ฐœ๋ฐœ ํŒ€์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ํ•จ๊ป˜ ์ €์žฅ์†Œ์˜ ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜๋Š” ํ”„๋กœ๋•์…˜ ์ค€๋น„๊ฐ€ ๊ฑฐ์˜ ์™„๋ฃŒ๋œ ์ฝ”๋“œ์˜ ์ค€๋น„ ์˜์—ญ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ ๋“ฑ ์ผ๋ถ€ ์šด์˜ ์ž‘์—…์„ ์™„๋ฃŒํ•  ์‹œ๊ฐ„์€ ์•„์ง ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์„ ๋ณ‘ํ•ฉํ•˜๊ธฐ ์ „์— ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜์ง€๋งŒ ํ…Œ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์—ฌ ์ฝ”๋“œ๊ฐ€ ๋‚˜๋จธ์ง€ ํŒ€์˜ ๋‹ค๋ฅธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ณ ๊ฐ์—๊ฒŒ ๋ฆด๋ฆฌ์Šคํ•˜๊ธฐ ์ „์— ์ „์ฒด ํŒ€์ด ์ตœ์‹  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฒ€ํ† ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณตํ†ต ํ™˜๊ฒฝ("์Šคํ…Œ์ด์ง•"์ด๋ผ๊ณ  ํ•จ)์— ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ๋ฆด๋ฆฌ์Šค๋ฅผ ์ค„์ด๊ณ  ํ”„๋กœ๋•์…˜์— ๋ฐฐํฌ

๋งˆ์ง€๋ง‰์œผ๋กœ ๊ด€๋ฆฌ์ž์™€ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์—…์ŠคํŠธ๋ฆผ ์ง€์ ์˜ ์ตœ์‹  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฒ€ํ† ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•œ ํ›„ ํŒ€์€ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ฆด๋ฆฌ์Šคํ•˜๊ณ  ํ”„๋กœ๋•์…˜์— ๋ฐฐํฌํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ์ž‘์—…์„ ๋งก์€ ์ „๋‹ด(๋˜๋Š” ์ˆœํ™˜) ํŒ€ ๊ตฌ์„ฑ์›์ธ ๋ฆด๋ฆฌ์Šค ๊ด€๋ฆฌ์ž๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. GitOps๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ด ํŒ€ ๊ตฌ์„ฑ์›์€ ์˜ฌ๋ฐ”๋ฅธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€, ์–ด๋–ค ์ˆœ์„œ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€, ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์˜ฌ๋ฐ”๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํŒจํ‚ค์ง€๊ฐ€ ์ปดํ“จํ„ฐ์— ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. GitOps๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด ๋ฐฐํฌ๋ฅผ ๋‹ค๋ฅธ Git ๊ธฐ๋ฐ˜ ์ด๋ฒคํŠธ( ๋ฆด๋ฆฌ์Šค ๋˜๋Š” ํƒœ๊ทธ ์ƒ์„ฑ)์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค ๊ด€๋ฆฌ์ž๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์€ ์ƒˆ๋กœ์šด "๋ฆด๋ฆฌ์Šค"๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ์ข…์ข… ์ด๋ฆ„์œผ๋กœ semver๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋นŒ๋“œํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ์ž‘์—…์ด ์ž๋™์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. CI ๋„๊ตฌ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์Šคํฌ๋ฆฝํŠธ ์œ„์น˜์™€ ์ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ํŒจํ‚ค์ง€์˜ ์ˆœ์„œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

GitOps ๋„๊ตฌ

๊ฐ•๋ ฅํ•˜๊ณ  ์ง๊ด€์ ์ธ ์ง€์†์  ํ†ตํ•ฉ ๋„๊ตฌ๋Š” ์ด ๋ฌธ์„œ์— ์„ค๋ช…๋œ ๊ฒƒ๊ณผ ๊ฐ™์€ GitOps ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณ„์ธกํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์œ ์ผํ•œ ๋„๊ตฌ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. CI ์‹œ์Šคํ…œ์€ git ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‰ฝ๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰ํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ์—ฌ์ „ํžˆ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐฐํฌ(์ง€์†์ ์ธ ์ „๋‹ฌ, CD๋ผ๊ณ ๋„ ํ•จ)๋Š” ์ž๋™ํ™”ํ•˜๊ธฐ ๊ฐ€์žฅ ์–ด๋ ค์šด ๋‹จ๊ณ„ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ GitOps ์—ฌ์ •์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๋ฒ”์ฃผ์˜ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

Docker๋ฅผ ์‚ฌ์šฉํ•œ ์ปจํ…Œ์ด๋„ˆํ™”

Docker๋Š” ํด๋ผ์šฐ๋“œ ๊ฐœ๋ฐœ์„ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๋ถ„์‚ฐ ํ™˜๊ฒฝ์œผ๋กœ ๊ฐ€์ ธ์™”๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜์œผ๋กœ ํ˜„์‹ค์ ์œผ๋กœ ๊ณ ๋ คํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋„๋ก ๋„์™”์Šต๋‹ˆ๋‹ค. Docker๋ฅผ ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ ์ค‘ ํ•˜๋‚˜๋Š” ์ด์ „ ์„ธ๋Œ€์˜ ๊ฐ€์ƒํ™” ์†”๋ฃจ์…˜์— ๋น„ํ•ด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์–ผ๋งˆ๋‚˜ ํŽธ๋ฆฌํ•œ์ง€์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์žˆ๋Š” ์„ ์–ธ์  CI ๊ตฌ์„ฑ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐœ๋ฐœ์ž๋Š” ์ปจํ…Œ์ด๋„ˆ์— ๋ฐฐํฌ๋œ ๊ฐ€์ƒ ๋จธ์‹ ์˜ ์ž๋™ํ™”๋œ ๋นŒ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— Dockerfile์„ ์ž‘์„ฑํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆํ™”๋Š” ํด๋ผ์šฐ๋“œ ํŒ€์—๊ฒŒ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ์ „๋žต์ด๋ฉฐ ๋ ˆํผํ† ๋ฆฌ์˜ ํ•ต์‹ฌ ๋„๊ตฌ๊ฐ€ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œํ˜• ์ธํ”„๋ผ(IaC)

Dockerfile์— ์ €์žฅ๋˜์ง€ ์•Š์€ ์ธํ”„๋ผ๋ฅผ ์ค€๋น„ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐ์—๋Š” ๋งŽ์€ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋ฐ–์˜ ๋ชจ๋“  ๊ฒƒ์—๋Š” Terraform , Cloudformation ๋“ฑ๊ณผ ๊ฐ™์€ IaC(Infrastructure-as-Code) ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค . ์ด๋Ÿฌํ•œ ์†”๋ฃจ์…˜์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” Kubernetes ๋ฆฌ์†Œ์Šค, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ, ๋„คํŠธ์›Œํ‚น, ๋ณด์•ˆ ๋“ฑ๊ณผ ๊ฐ™์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์„ ์„ ์–ธ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์„œ ์„ค๋ช…ํ•œ CI ๊ตฌ์„ฑ ๋ฐ Dockerfile๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ IaC ํ…œํ”Œ๋ฆฟ์€ ํŒ€์˜ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฒ„์ „์„ ์ œ์–ดํ•˜๊ณ  ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION