Merge Request & Code Review๊ฐ ์ค์ํ๋ค : ํ๋ก์ ํธ์์ CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ & ์ํํ๋ฉด์ ๋๋์
๊ฐ์ฅ ์ต๊ทผ์ ์งํํ ํ์ ์คํฐ๋ ํ๋ซํผ์์ ์ฌ๋ฌ ๊ฐ์ง ๋ฌธ์ ์ ์ ๊ฒช์์ง๋ง,
๋ฐฐํฌ ๊ด๋ จ ๊นจ๋ฌ์์ ์ ๊ณ ์ ํ๋ค ^^..
DevOps๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์๋น์ค๋ฅผ ๋น ๋ฅธ ์๋๋ก ์ ๊ณตํ ์ ์๋๋ก ์กฐ์ง์ ์ญ๋์ ํฅ์์ํค๋ ๋ฌธํ ์ฒ ํ, ๋ฐฉ์ ๋ฐ ๋๊ตฌ์ ์กฐํฉ์ด๋ค.
์๊ตฌ์ฌํญ์ ๋น ๋ฅด๊ฒ ๋ฐ์ํ๊ธฐ ์ํด, ์๋น์ค ํ์ง์ ์์ค ์ํ์ ์ต์ํํ๋ฉด์ ๊ฐ๋ฐ์ ๋น ๋ฅด๊ฒ ์งํํ๋ค.

์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๋จ๊ณ๋ถํฐ ๋ฐฐํฌ ๋๊น์ง ์๋ํ๋ฅผ ํตํด์ ์ฌ์ฉ์์๊ฒ ๋น๋ฒํ ๋ฐฐํฌํ ์ ์๋๋ก ๋ง๋๋ ๊ฒ์ ๋งํ๋ค.
- CI(Continuous Integration) : ๊ณํ > ์ฝ๋ > ๋น๋ > ํ ์คํธ
- CD(Continuous Delivery) : ์ถ์ > ๋ฐฐํฌ > ์ด์
๋ DevOps๋ฅผ ์ํด ํ์์ ์ด๋ค.

์ ํจ์ค๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ ์ง์์ ํตํฉ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ํด์ด๋ค.
(>> Cloud Registry์ Image PUSH๊น์ง ํ๋ค)
๊ฒฐ๋ก ์ ์ผ๋ก๋ OAuth ๋ก๊ทธ์ธ ๋ก์ง ๊ฐ๋ฐ์ ๋ด๋นํ์๋๋ฐ, ํ๋ก ํธ์์ ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ํ๋ก๋์ ํ๊ฒฝ์ ๋๋์ง ์์ ๊ณ ์ํ๋ค.
์ง์ ์ ์ธ ์์ธ
ํ๋ก ํธ ํ์์ด ํ๊ฒฝ๋ณ์๋ฅผ ๋๋ ์๋ ์ ์ฉ์ํค์ง ์๊ณ , ๊ฐ๋ฐํ๊ฒฝ์์ ์ฐ๋ Redirect_URL๋ก ๊ฐ์ ์ง์ ๋ฐ๊ฟ๊ฐ๋ฉฐ ์์ ์ ํ๋ค. ๋ง๋ฐ์ง ๊ธฐ๊ฐ์ด์๊ณ , ๋จธ์ง ๋ฆฌํ์คํธ ํ ์ฝ๋ ๋ฆฌ๋ทฐ ์์น์ ์งํค์ง ์๊ณ , ๋ณธ์ธ์ด ํ ๋ฆฌํ ๋ ๋ฆฌ๊ณ ๋ฆฌ๋ทฐ์์ด ๋จธ์ง๋ฅผ ์งํํ๋ค. ์ด๋, ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ฐ๋ ๋ฆฌ๋ค์ด๋ ํธ URL์ด ํ๋ก๋์ ํ๊ฒฝ์ ์ ์ฉ๋์๋ค.
์ค๋ฅ๋ฅผ ์ฐพ๋๋ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ ธ๊ณ , ์ ์ฌ์ ์ธ ์์ธ & ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ ์ด์ ๋ฅผ ๋ค์ ํ๋ฒ ๋ถ์ํด๋ณด์๋ค.
1. ์ฐ๋ฆฌ ์์คํ ์ Web Hook์ผ๋ก deploy ๋ธ๋์น์ Merge Event๊ฐ ๋ค์ด์ค๋ฉด, Jenkins๊ฐ ๊ฐ์งํด์ ๋น๋ > ํ ์คํธ ๋ฅผ ์งํํ๊ณ ,
.Container Registery๋ก Push ํ์ฌ ๋ฐฐํฌ๊น์ง ์๋์ผ๋ก ์งํ๋๋๋ก ํ์๋ค.
์ฝ๋๊ฐ Merge๊ฐ ๋๋ฉด, ์๋ชป๋ ๋ฐฐํฌ๊ฐ ๋๋ ๊ฒ์ ๋ง์ ์ ์๋ ๋ฐฉ์์ด ์์๋ค. ์ฆ, ๋ฐฐํฌ ์ง์ ์ ํ ๋ฒ ๋ฉ์ถฐ์ ์ ๊ฒํ์ด์ผ ํ๋ค.
2. ํ๊ฒฝ ๋ณ์๋ฅผ ์ ์ญ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์์ง ์์๋ค. ์ฝ๋์ ์์ฑํด์ ์ฌ๋ฌ ๊ตฐ๋ฐ ๋ถ์ฐ๋ ๊ฐ๋ค์ ์ฐพ๊ณ ์ง์ ๋ฐ๊พธ๋๋ด ์ค๋ ๊ฑธ๋ ธ๋ค.
3. ๋ฐฐํฌ๊ฐ ์๋์๋์ง ์๋์ผ๋ก ํ์ธํ์ด์ผ ํ๋ค. ์ด๋ฏธ์ง๊ฐ ๋ณ๊ฒฝ๋์ง ์๋ ๋ฌธ์ ๊ฐ ์์๋๋ฐ, ํน์ ?, ์ปจํ ์ด๋ ์๋ํ๊ณ ์๋ ๊ฑฐ ๋ง์ง?? ๋ผ๋ ๋ง์์ผ๋ก ์ง์ Docker ๋ช ๋ น์ด๋ฅผ EC2 ์๋ฒ์ ์์ฑํด๊ฐ๋ฉด์ ํ์ธํ๋ค. ( ๋ด๊ฐ ์ง์ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ํ์ธํ๋ Polling ๋ฐฉ์์ด ์๋๊ณ Event ๊ธฐ๋ฐ ์๋ฆผ์ด ํ์ํ๋ค. )
์ฆ, ์ฌ๋ฐ๋ฅธ ๋ฒ์ ์ด ์ ๋ฐฐํฌ๋์๋์ง ์๋ ค์ฃผ๋ ๋ชจ๋ํฐ๋ง ํด์ด ํ์ํ๋ค.
4. ์ค๋จ ๋ฐฐํฌ๋ก ์ธํด ์ปจํ ์ด๋๊ฐ ์ฃฝ์ ๊ฒ์ธ์ง ์ ์ ๋ฐฐํฌ๋ก ์ธํด ์๋น์ค๊ฐ ์๋๋ ๊ฒ์ธ์ง ๋ถ์ํ๋ค
>> ์ค ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋ ์ ์ฅ์์๋ ์ค๋จ ๋ฐฐํฌํ๋ฉด ๊ทธ ์๊ฐ ๋์์ ์๋น์ค ์๋๋ ๊ฑฐ์
์! ๋ฌด์ค๋จ ๋ฐฐํฌ ์ ๋ต์ ์ฌ์ฉํด์ผ๊ฒ ๋ค.
์ด๋ก ์ธํด
1. Merge Request + Code Review์ ์ค์์ฑ
2. CI/CD์์ ์๋ Deploy๋ ํ์ง ๋ง์
3. ํ๊ฒฝ ๋ณ์๋ฅผ ๋๋์
4. ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฐ์ ๋ณ์๋ก ๋นผ์ ์ ์ํ์
5. ๋ชจ๋ํฐ๋ง ํด์ด ํ์ํ ์ด์
6. ๋ฌด์ค๋จ ๋ฐฐํฌ ์ ๋ต์ ์ฌ์ฉํ์!
๋ฅผ ๊นจ๋ซ๊ฒ ๋์๋ค.
์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ (๊ด๋ฆฌ ๋ฐ ๋ฐฐํฌ) ํ๋ซํผ์ผ๋ก, ๋ถ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ๋ฐฐํฌ, ์ค์ผ์ผ๋ง ๋ฐ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋๊ตฌ์ด๋ค.
์ฟ ๋ฒ๋คํฐ์ค๊ฐ ๊ฐ์ง๊ณ ์๋ ์ฃผ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ YAML ๋๋ JSON ํ์ผ์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฆฌ์์ค์ ๊ตฌ์ฑ์ ์ ์ธ์ ์ผ๋ก ์ ์ํ๋ค.
์ํ๋ ์ํ๋ฅผ ๋ช ์ํ๋ฉด, ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์์คํ ์ ํด๋น ์ํ๋ก ์กฐ์ ํ๋ค.
๋ ธ๋๋ ์ปจํ ์ด๋์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด, ์๋์ผ๋ก ์ฅ์ ๋ฅผ ๊ฐ์งํ๊ณ ๋ณต๊ตฌ๋ฅผ ์๋ํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ ์ฌ๋ฌ ๋ ธ๋๋ก ๊ตฌ์ฑ๋๋ฉฐ, ํ์์ ๋ฐ๋ผ ํด๋ฌ์คํฐ ํฌ๊ธฐ๋ฅผ ํ์ฅํ๊ฑฐ๋ ์ถ์ํ ์ ์๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ์๋น์ค ๊ฐ ํต์ ์ ์ฝ๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ํด ์๋น์ค๋ผ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
์๋น์ค๋ฅผ ์์ฑํ๋ฉด DNS์ด๋ฆ์ ํตํด ํ์ํ๊ณ , ๋ก๋ ๋ฐธ๋ฐ์ฑ์ด ์๋์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
1. Blue/ Green
๊ตฌ ๋ฒ์ (Blue)๊ณผ ์๋ก์ด ๋ฒ์ (Green) 2๊ฐ์ง๋ฅผ ์๋ฒ์ ๋ง๋ จํ๊ณ ํ๊บผ๋ฒ์ ๊ต์ฒดํ๋ ๋ฐฉ๋ฒ
๋ฐฐํฌ์ 2๋ฐฐ์ ์์์ ์ฌ์ฉํ๋ค.
2. ์นด๋๋ฆฌ์
์ผ๋ถ ํธ๋ํฝ์ ์๋ฒ์ ์ผ๋ก ๋ถ์ฐ์์ผ ํ ์คํธ๋ฅผ ์งํํ๋ ๋ฐฉ๋ฒ
A/B ํ ์คํธ๋ ๊ฐ๋ฅํ๋ค
3. Rolling Update
100% capacity๊ฐ ์ ์ง๊ฐ ๋์ด์ผ ํ๋ค => 3 ์ ์ธ
๊ธฐ์กด ๋ฒ์ ์ ์๋ฒ๋ฅผ ํ๋์ฉ ์ฃฝ์ด๊ณ ์๋ก์ด ๋ฒ์ ์ ์๋ฒ๋ฅผ ํ๋์ฉ ๋์ฐ๋ฉด์ ์์ฐจ์ ์ผ๋ก ๊ต์ฒดํ๋ ๋ฐฉ๋ฒ
์๋ฒ๋ฅผ ํ๋ํ๋์ฉ ๋ฒ์ ์ ์ ๊ทธ๋ ์ด๋ํ๋ ๋ฐฉ์
์ด์ ๋ฒ์ ๊ณผ ์๋ก์ด ๋ฒ์ ์ด ๊ณต์กดํ๋ ์๊ฐ์ด ์กด์ฌํ๋ค.
๋ค์ ํ๋ก์ ํธ์์๋ ์ฟ ๋ฒ๋คํฐ์ค ์ฌ์ฉํด์
์ด์ ์ ๋ฌธ์ ์ ๋ค์ ํด๊ฒฐํด๋ด์ผ๊ฒ ๋ค
์ค๋
ธ์ฐ๋ณผ ๊ตด๋ฆฌ๊ธฐ (์ธ์๊น์ด์)
์ํฉ์ด ์ฌ์์น ์๋ค >> ๋ฐฉ๋ฒ์ ๋ฐ๊พธ์ >> ํ๋ฃจ๋ ๋น ๋จ๋ฆฌ์ง ์๊ณ ์กฐ๊ธ์ฉ ํ์ตํ๋ฉด ๋์ค์๋ ๊ทธ ์์ด ์ด๋ง์ด๋งํ ๊ฒ์ด๋ค.