Java ์ฐ์ฐ์ &, && (AND) || (๋๋)
์ถ์ฒ:
freeCodeCamp Java ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์์ ๋ํ ์์
์ ์ํํฉ๋๋ค. ์ฐ์ฐ์๋ ์ฐ์ ์ฐ์ฐ์, ํ ๋น ์ฐ์ฐ์, ๋น๊ต ์ฐ์ฐ์, ๋
ผ๋ฆฌ ์ฐ์ฐ์ ๋ฑ ๋ค์ํ ๋ฒ์ฃผ๋ก ๋๋ฉ๋๋ค.
์ด๋ฒ ๊ธ์์๋ ๋นํธ AND ์ฐ์ฐ์(
& )์ ๋
ผ๋ฆฌ ์ฐ์ฐ์ AND(
&& ), OR(
|| )์ ๋ํด ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
๋นํธ AND ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
& ๊ธฐํธ๋ ๋นํธ AND ์ฐ์ฐ์๋ฅผ ๋ํ๋
๋๋ค. ์ฃผ์ด์ง ์ซ์์ ์ด์ง ๊ฐ์ ํ๊ฐํฉ๋๋ค. ์ด ์ซ์์ ์ด์ง ๊ฒฐ๊ณผ๋ 10์ง๋ฒ์ผ๋ก ๋ฐํ๋ฉ๋๋ค.
& ์ฐ์ฐ์๊ฐ ์์
์ ์์ํ๋ฉด ์ผ์ชฝ๋ถํฐ ์์ํ์ฌ ๋ ์ซ์์ ๋ฌธ์ ๊ฐ์ ํ๊ฐํฉ๋๋ค. ์ด๋ฅผ ๋ ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋๋ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
System.out.println(10 & 12);
์ด๊ฒ์ ์ด๋ป๊ฒ ์ค๋ช
ํ ๊ฒ์ธ๊ฐ? 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๋ฅผ ๋ฐํํฉ๋๋ค . 10์ 2๋ณด๋ค ํฌ๊ณ 8์ 4๋ณด๋ค ํฝ๋๋ค. ๋ ์กฐ๊ฑด ์ค ํ๋๋ผ๋ ์๋ชป๋ ๋
ผ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ
false๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๋ค .
&& ์ฐ์ฐ์๋ฅผ ๋ ์ ์ดํดํ๋ ค๋ฉด ๋ ์กฐ๊ฑด์ด ๋ชจ๋ true์ฌ์ผ
true ๋ก ํ๊ฐ๋๋ค๋ ์ ์ ์์์ผ ํฉ๋๋ค .
false๋ฅผ ๋ฐํํ๋ ๋ ๋ค๋ฅธ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค .
System.out.println((2 > 10) && (8 > 4));
์ฌ๊ธฐ์ 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
-
๋ ์กฐ๊ฑด์ด ๋ชจ๋ ๊ฑฐ์ง์ธ ๊ฒฝ์ฐ => ๊ฑฐ์ง
๊ฒฐ๋ก
์ด ๊ธฐ์ฌ์์๋ Java์์ ๋นํธ
& ์ฐ์ฐ์ ์ ๋
ผ๋ฆฌ ์ฐ์ฐ์
&& ๋ฐ
|| ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์ต๋๋ค. . ๋ํ ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ฐ ์์
์ด ๋ฐํํ๋ ๊ฐ๋ ๋ฐฐ์ ์ต๋๋ค.
๊ฐ๋ฐ์๋ฅผ ์ํ GitOps ๋ฐ DevOps ์๊ฐ
์ถ์ฒ:
Hackernoon DevOps์ ์ฃผ์ ๋ชฉํ ์ค ํ๋๋ ๊ฐ๋ฐ์๊ฐ ํ๋ก๋์
์ ๊ธฐ๋ฅ์ ์ต๋ํ ๋น ๋ฅด๊ณ ์์ ํ๊ฒ ๋ฐฐํฌํ๋๋ก ๋๋ ๊ฒ์
๋๋ค. ์ด๋ ๊ฐ์ธ ๊ฐ๋ฐ ํ๊ฒฝ ์ ๊ณต๋ถํฐ ํ๋ก๋์
์ํฌ๋ก๋ ๋ฐฐํฌ ๋ฐ ๋ณด์์ ์ด๋ฅด๊ธฐ๊น์ง ๋ชจ๋ ์์
์ ์ํํ๋ ๋๊ตฌ์ ํ๋ก์ธ์ค๋ฅผ ๋ง๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋์์, ์๋๋ฅด๋ค๊ฐ ์ฌ๊ฐํ ์คํจ๋ก ์ด์ด์ ธ์๋ ์ ๋ฉ๋๋ค.
GitOps๋ 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 ํ
ํ๋ฆฟ์ ํ์ ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ ๋ฒ์ ์ ์ ์ดํ๊ณ ๊ณต์ ํ ์ ์์ต๋๋ค.
GO TO FULL VERSION