CD_rewrite - 100-hours-a-week/21-iceT-wiki GitHub Wiki
- ๊ธฐ์กด Koco ์๋น์ค์๋ ๋ก์ปฌ ๋น๋ โ Git pull โ ์๋ ์ฌ์์ ๋ฑ ์ฌ๋ฌ ๋จ๊ณ๋ฅผ ์ฌ๋์ด ์ง์ ์ํ
- ์ด ๊ณผ์ ์์ ์ค์ ๊ฐ๋ฅ์ฑ์ด ์กด์ฌํ๊ณ , ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆผ (์ฝ 10๋ถ ์์)
- CD ํ์ดํ๋ผ์ธ์ ํตํด ๋ฐฐํฌ ๊ณผ์ ์ ์๋ํํ๋ฉด, ํด๋ฆญ ํ ๋ฒ ๋๋ Git ํ๊ทธ ํธ์๋ง์ผ๋ก 3~5๋ถ ๋ด ์์ ์ ์ผ๋ก ๋ฐฐํฌ ๊ฐ๋ฅ
- ๋ํ, ๋งค์ผ ์๋ก์ด ์ฝํ ์ ๋ต ์ ๋ฐ์ดํธ, ์ฑ๋ด, ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฅ์ ๊ฐ์ถ ๋ณธ ์๋น์ค๋ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์์ฃผ ์ ๋ฐ์ดํธํ ํ์๊ฐ ์์ด, ๋น ๋ฅด๊ณ ์ ๋ขฐ์ฑ ์๋ ์๋ ๋ฐฐํฌ ์ฒด๊ณ๊ฐ ํ์ํ๋ค.
- ์๋น์ค๋ ๋งค์ผ ์ค์ 9์ 30๋ถ~10์ ์ฌ์ด๊ฐ ์ต๋ ํธ๋ํฝ ์๊ฐ๋(๋์ ์ ์์ ์ฝ 150๋ช ์์)
- ์ ๊ธฐ ๋ฐฐํฌ๋ ๊ธ์์ผ 18์๋ก ์ค์ ๋์ด ์์ง๋ง, ๋ฐฐํฌ ์คํจ ์ ๋ณต๊ตฌ๊ฐ ๋๋ฆฌ๋ฉด ์ฌ์ฉ์์๊ฒ ์ํฅ์ด ๊ฐ ์ ์์
- CD๋ฅผ ํตํด ํฌ์ค ์ฒดํฌ + ๋กค๋ฐฑ ์ ๋ต ํฌํจ๋ Blue-Green ๋ฐฐํฌ๋ฅผ ๊ตฌ์ฑํจ์ผ๋ก์จ(์ถํ ์นด๋๋ฆฌ ๋ฐฐํฌ ์ ์ฉ), ๋ฐฐํฌ ์ค์๋ ์๋น์ค ์ค๋จ ์์ด ์์ ์ ์ธ ์ ํ ๊ฐ๋ฅ
- ํด์ค ์ ๊ณต ์๋น์ค๋ ์ ํ์ฑ๊ณผ ์ ๋ขฐ๊ฐ ํต์ฌ์ธ๋ฐ, ๋ฐฐํฌ ์ค๋ฅ๋ ์ฅ์ ๊ฐ ๋น๋ฒํ๋ฉด ์ฌ์ฉ์ ์ ๋ขฐ๊ฐ ๊ธ๊ฒฉํ ์ ํ๋จ
- ์๋ํ๋ CD ํ์ดํ๋ผ์ธ์ ํ ์คํธ, ํฌ์ค ์ฒดํฌ, ๋ชจ๋ํฐ๋ง๊น์ง ํฌํจํ์ฌ ๋ฐฐํฌ ์ดํ ์์ ์ฑ์ ํ๋ณดํ๊ณ , ์ด์ ์งํ ๋ฐ์ ์ ๋น ๋ฅด๊ฒ ๋์ ๊ฐ๋ฅํจ
- ์๋ ๋ฐฐํฌ๋ ๊ฐ ๊ณผ์ ๋ณ (3๋ช )๋ด๋น์๊ฐ ์์ผ๋ฉด ์คํ์ด ์ด๋ ต๊ณ , ์ฃผ์/๋ช ๋ น ์ค์๋ก ๋ฐฐํฌ ์ํ๊ฐ ๋ฌ๋ผ์ง ์ ์์
- CD๋ ๋๊ฐ ํด๋ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ ๋ฐ๋ณต ๊ฐ๋ฅํ ๋ฐฐํฌ ํ๊ฒฝ์ ์ ๊ณตํ์ฌ, ํ์ํฌ์ ์์ฐ์ฑ ํฅ์์ ๊ธฐ์ฌํจ
- ํ์ฌ๋ MVP ๋จ๊ณ๋ก, ๊ธฐ๋ฅ ๊ฐ์ ๊ณผ ์์ ์ด ๋น๋ฒํ๊ฒ ์ด๋ค์ง
- CD ํ์ดํ๋ผ์ธ์ ํตํด ์์ ๋ณ๊ฒฝ๋ ๋น ๋ฅด๊ฒ ๋ฐ์ํ๊ณ ์ฆ์ ๋ฐฐํฌ ๊ฐ๋ฅ, ์ฌ์ฉ์ ํผ๋๋ฐฑ์ ๋น ๋ฅด๊ฒ ๋ฐ์ํ๋ ์ ์์ผํ ๊ฐ๋ฐ/๋ฐฐํฌ ์ฌ์ดํด์ ๊ตฌ์ถํ ์ ์์
๊ธฐ๋ ํจ๊ณผ ์์ฝ:
-
๋ฐฐํฌ ํ๋ก์ธ์ค์ ํ์คํ ๋ฐ ๋ฌธ์ํ๋ก ํ์ ํจ์จ์ฑ ํฅ์
-
์ฅ๊ธฐ์ ์ผ๋ก๋ ์ด์ ์๋ํ ์ ํ ๊ฐ๋ฅ์ฑ์ ๊ณ ๋ คํ ํ์ฅ์ฑ ํ๋ณด
์ ๋ต | ์ค๋ช | ์ฅ์ | ๋จ์ |
---|---|---|---|
Blue-Green | ๋ ๊ฐ์ ๋์ผํ ํ๊ฒฝ์ ๋ฒ๊ฐ์ ์ฌ์ฉ | ๋ฌด์ค๋จ ๋ฐฐํฌ, ์ฌ์ด ๋กค๋ฐฑ | ์ธํ๋ผ ๋น์ฉ ์ฆ๊ฐ |
Canary | ์ ์ง์ ๋ฐฐํฌ๋ก ๋ชจ๋ํฐ๋ง ๋ณํ | ๋น ๋ฅธ ๋ฌธ์ ๊ฐ์ง | ์ค์ ๋ณต์ก๋ ์์ |
Rolling Update | ์์ฐจ์ ๊ต์ฒด ๋ฐฐํฌ | ์์ ์ ์ฝ | ๋กค๋ฐฑ ์ด๋ ค์ |
-
์ด๊ธฐ: Blue-Green ๋ฐฐํฌ ์ ๋ต ์ ์ฉ
- ๊ธฐ์กด ์๋น์ค ๋ฒ์ (Green)์ ์ ์งํ ์ํ์์ ์๋ก์ด ๋ฒ์ (Blue)์ ๋ณ๋๋ก ๋ฐฐํฌ
- ๋ฐฐํฌ ์๋ฃ ํ ๊ฒ์ฆ์ ๊ฑฐ์ณ ํธ๋ํฝ์ ์๋ก์ด ๋ฒ์ ์ผ๋ก ์ ํ
- ์ค๋ฅ ๋ฐ์ ์ ์ฆ์ ๊ธฐ์กด ๋ฒ์ ์ผ๋ก ๋ณต๊ท ๊ฐ๋ฅ
-
์ถํ: ์นด๋๋ฆฌ ๋ฐฐํฌ ์ ๋ต ๋์
์์
- ์ด๊ธฐ์๋ ์ผ๋ถ ์ฌ์ฉ์์๊ฒ๋ง ์๋ก์ด ๋ฒ์ ์ ๋ ธ์ถํ์ฌ ์์ ์ฑ์ ๊ฒ์ฆ
- ์ ์ง์ ์ผ๋ก ์ ์ฒด ์ฌ์ฉ์๋ก ํธ๋ํฝ์ ํ์ฅ
- ์ฅ์ ๋ฐ์ ์ ์ํฅ์ ์ต์ํํ๊ณ ๋น ๋ฅด๊ฒ ๋ณต๊ตฌ ๊ฐ๋ฅ
์ฐ๋ฆฌ ์๋น์ค๋ ์ฝ๋ฉํ ์คํธ ํด์ค์ง์ ์ ๊ณตํ๋ ํ๋ซํผ์ผ๋ก, ๋งค์ผ ์ค์ 9์ 30๋ถ๋ถํฐ 10์๊น์ง๊ฐ ์ต๋ ํธ๋ํฝ ์๊ฐ๋์ด๋ฉฐ, ์ด๋ ์ต๋ ๋์ ์ ์์ ์๋ ์ฝ 150๋ช ์ผ๋ก ์์๋ฉ๋๋ค.
์ฌ์ฉ์๋ ์งง์ ์๊ฐ ์์ ๋ฌธ์ ํ์ด ๋ฐ ํด์ค์ ํ์ธํ๊ธฐ ๋๋ฌธ์, ์๊ฐ์ ์ธ ์ ์ ์ง์ฐ์ด๋ ์๋น์ค ์ค๋จ์ ์ฌ์ฉ์ ๊ฒฝํ์ ๋งค์ฐ ์น๋ช ์ ์ผ ์ ์์ต๋๋ค.
MVP ์ด๊ธฐ์๋ ์๋น์ค ์ ๋ขฐ์ฑ๊ณผ ๋ฌด์ค๋จ์ ์ต์ฐ์ ์ผ๋ก ํด์ผ ํ๋ฏ๋ก, ๊ฒ์ฆ ํ ํ ๋ฒ์ ์ ์ฒด ํธ๋ํฝ์ ์ ํํ๋ Blue-Green ๋ฐฐํฌ๋ฅผ ์ ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋น ๋ฅธ ๋กค๋ฐฑ์ด ๊ฐ๋ฅํ๊ณ , ์๋น์ค ์ด๊ธฐ ํ์ง์ ์์ ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
์๋น์ค๊ฐ ์ ์ฐจ ์์ ๋๊ณ ๊ธฐ๋ฅ ๊ฐ์ ๋ฐ ๋ฒ๊ทธ ์์ ์ด ์ฆ์์ง ๊ฒฝ์ฐ,
- ์ด์ ํ๊ฒฝ์ ๋ณ๊ฒฝ ์ฃผ๊ธฐ๊ฐ ์งง์์ง๊ณ , ๋ค์ํ ์ฝ๋ ๋ณ๊ฒฝ์ด ๋์ ๋๋ฉด์ ๋จ๋ฒ์ ์ ์ฒด ์ฌ์ฉ์์๊ฒ ๋ฐฐํฌํ ๊ฒฝ์ฐ, ์์์น ๋ชปํ ์ค๋ฅ๋ ์ฑ๋ฅ ์ ํ๊ฐ ์ ์ฒด ์ฌ์ฉ์์๊ฒ ์ฆ์ ์ํฅ์ ๋ฏธ์น ์ํ์ด ์ปค์ง๋๋ค.
- ํนํ, ๋ชจ๋ ์ฌ์ฉ์๊ฐ ๋์์ ์๋ก์ด ๋ฒ์ ์ ์ฌ์ฉํ๊ฒ ๋๋ฉด, ์์์ ์ด์ ์งํ๋ง์ผ๋ก๋ ์๋น์ค ์ ์ฒด์ ์ฅ์ ๊ฐ ๋ฐ์ํ ์ ์์ด, ๋ณต๊ตฌ ์์ ๋ถ๋ด๊ณผ ์ฅ์ ๋ฆฌ์คํฌ๊ฐ ๊ธ๊ฒฉํ ์ฆ๊ฐํฉ๋๋ค.
๋ฐ๋ผ์ ์ผ๋ถ ์ฌ์ฉ์ ๊ทธ๋ฃน์๋ง ์ ๋ฒ์ ์ ๋ ธ์ถํ์ฌ ์์ ์ฑ์ ๊ฒ์ฆํ๊ณ , ๋ฌธ์ ๊ฐ ์์ ๋ ์ ์ง์ ์ผ๋ก ๋ฐฐํฌ๋ฅผ ํ์ฅํ๋ ์นด๋๋ฆฌ ๋ฐฐํฌ ์ ๋ต์ ํตํด ์ด์ ๋ฆฌ์คํฌ๋ฅผ ์ต์ํํ ํ์๊ฐ ์์ต๋๋ค.
๋ํ, ์ฐ๋ฆฌ ์๋น์ค๋ ๋งค์ผ ์๋ก์ด ๋ฌธ์ ์ ํด์ค ์ ๋ฐ์ดํธ๊ฐ ํ์ํ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์,
- ์ฝํ ์ธ ํน์ฑ์ ์ฌ์ฉ์์๊ฒ ๋งค์ผ ์๋ก์ด ๋ฌธ์ ๋ฅผ ์ ๊ณตํด์ผ ํ๋ฉฐ,
- ์ด์ ๋ฐ๋ผ ๋ฌธ์ ๋ฐ์ดํฐ, ํด์ค ๋ฐ์ดํฐ๋ฟ ์๋๋ผ ๊ด๋ จ ๊ธฐ๋ฅ(์ถ์ ๋ก์ง, ํด์ค ํ์ด์ง ๋ ๋๋ง ๋ฑ) ์ ๋ฐ์ดํธ๋ ๋น๋ฒํ๊ฒ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
- ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฐฐํฌ ์ฃผ๊ธฐ๊ฐ ์งง์์ง๊ณ , ๋ฐฐํฌ ๋น๋ ๋ํ ์ ์ฐจ ์ฆ๊ฐํ ์๋ฐ์ ์์ต๋๋ค.
๋น๋ฒํ ๋ฐฐํฌ ํ๊ฒฝ์์๋, ๋๊ท๋ชจ ์ผ๊ด ๋ฐฐํฌ ๋ฐฉ์๋ณด๋ค๋ ์๊ท๋ชจ ๋ถ์ฐ ๋ฐฐํฌ๋ฅผ ํตํ ๋ฆฌ์คํฌ ํต์ ๊ฐ ํ์์ ์ด๊ธฐ ๋๋ฌธ์, ์นด๋๋ฆฌ ๋ฐฐํฌ ๋ฐฉ์์ด ์ ์ง์ ์ผ๋ก ํ์ํ๊ฒ ๋ฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก, ๊ธ์์ผ ์คํ 18์ ์ ๊ธฐ ๋ฐฐํฌ ์ดํ ๋น๊ต์ ์ฌ์ฉ์ ์ ์์ด ์ ์ ์ผ๊ฐ ์๊ฐ๋๋ฅผ ํ์ฉํ์ฌ ๋ชจ๋ํฐ๋ง ๋ฐ ์์ ์ฑ ํ๋ณด ์๊ฐ์ ๊ฐ์ง ์ ์์ด, ์ด์ ํจ์จ์ฑ ์ธก๋ฉด์์๋ ์ ๋ฆฌํฉ๋๋ค.
CD(Continuous Delivery/Deployment) ํ์ดํ๋ผ์ธ์ Blue-Green ๋๋ ์นด๋๋ฆฌ ๋ฐฐํฌ โ QA ๋ฐ ๋ชจ๋ํฐ๋ง โ ์ต์ข ํ์ ๊น์ง ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ๋ก ์ค๊ณ๋์์ต๋๋ค.
ํนํ, Blue-Green ๋ฐฐํฌ์ ์นด๋๋ฆฌ ๋ฐฐํฌ๋ฅผ ์ ์ฉํ๋ , ์๋ ๋ฐฐํฌ๋ฅผ ์งํํ๋ ๊ด๊ณ์์ด, Slack ์๋ฆผ ๋ฐ์ก, ์ด์ QA ์ ๊ฒ, ์ด๊ธฐ ์ง์ค ๋ชจ๋ํฐ๋ง ๋ฑ์ ์ด์ ํ๋ฆ์ ๋์ผํ๊ฒ ํ์ ์ ์ฐจ๋ก ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์๋ ๋ฐฐํฌ ํ๊ฒฝ์์๋ ์ด๋ฌํ ์ด์ ํ๋ก์ธ์ค๋ฅผ ์๊ฒฉํ ์ค์ํ์ฌ ์๋น์ค ์์ ์ฑ๊ณผ ๋ฐฐํฌ ์ ๋ขฐ์ฑ์ ํ๋ณดํฉ๋๋ค.
-
๊ฐ๋ฐ์๊ฐ release ํ๊ทธ๋ฅผ Pushํ๋ฉด CI ํ์ดํ๋ผ์ธ์ด ์คํ๋ฉ๋๋ค.
-
์์ค ์ฝ๋๋ฅผ ๋น๋ํ์ฌ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ํฐํฉํธ(JAR, Docker ์ด๋ฏธ์ง ๋ฑ)๋ฅผ ์์ฑํฉ๋๋ค.
-
์์ฑ๋ ์ํฐํฉํธ๋ ์๋ฒ ํ๊ฒฝ์ ์๋์ผ๋ก ๋ฐฐํฌ๋ฉ๋๋ค.
-
๋ฐฐํฌ ์คํฌ๋ฆฝํธ ์คํ ํ, ์๋น์ค๊ฐ ๊ธฐ๋๋๊ณ ์ ์ ์ํ๊ฐ ํ์ธ๋ฉ๋๋ค.
-
/health ์๋ํฌ์ธํธ๋ฅผ ํตํ ์ํ ์ ๊ฒ ์ํ
-
์ฌ์ ์ ์๋ E2E ํ ์คํธ ๋๋ API ํ ์คํธ๊ฐ ์๋์ผ๋ก ์คํ๋ฉ๋๋ค.
-
์ฑ๊ณต ์: ์ด์ ๋ฐฐํฌ ์น์ธ ์์ฒญ ์๋ ์๋ฆผ(Slack)
-
์คํจ ์: ๋ฐฐํฌ ์ค๋จ ๋ฐ Slack์ผ๋ก ์คํจ ์๋ฆผ ์ ์ก (์ด์ ๋ฐฐํฌ ์ฐจ๋จ)
-
์น์ธ ์๋ฃ ํ, ๊ธฐ์กด Green ๋ฒ์ ๊ณผ ๋ณ๋ ฌ๋ก ์๋ก์ด Blue ๋ฒ์ ์ด ๋ฐฐํฌ๋ฉ๋๋ค.
-
๋ฐฐํฌ ํ Blue ๋ฒ์ ์ ๋ํด ํฌ์ค ์ฒดํฌ๋ฅผ ์ํํฉ๋๋ค.
-
Blue ๋ฒ์ ์ ์ํ๊ฐ ์ ์์ธ ๊ฒฝ์ฐ, ํธ๋ํฝ์ Green์์ Blue๋ก ์ ํํฉ๋๋ค.
-
์ ํ ํ QA ๊ฒ์ฆ ๋ฐ ์ด๊ธฐ ์ง์ค ๋ชจ๋ํฐ๋ง์ ์งํํฉ๋๋ค.
-
์ด์ ์งํ ๋ฐ์ ์ ์ฆ์ Green ๋ฒ์ ์ผ๋ก ๋กค๋ฐฑ๋ฉ๋๋ค.
-
์ด์ ์์ ํ ์ดํ, Canary ์ ๋ต์ผ๋ก ์ ํ ๊ณํ์ด ์์ต๋๋ค.
-
์ด๊ธฐ 5~10% ํธ๋ํฝ๋ง ์ ๊ท ๋ฒ์ ์ ์ ๋ฌ
-
์ด์ ์์ ์ ์ ์ง์ ์ผ๋ก 30% โ 70% โ 100%๊น์ง ํ์ฅ
-
๋ฌธ์ ๋ฐ์ ์ ํด๋น ๋ฒ์ ๋กค๋ฐฑ
-
Health Check ์คํจ ๋๋ SLA ์๋ฐ ์, ์๋ ๋ฐฐํฌ ์ค๋จ ๋ฐ ์ด์ ๋ฒ์ ์ผ๋ก ๋กค๋ฐฑ
-
๋ฐฐํฌ ํ ์ด๊ธฐ ๋ชจ๋ํฐ๋ง ์ค ๋ฌธ์ ๊ฐ์ง ์, ๊ธด๊ธ ํซํฝ์ค ๋๋ ์๋ ๋กค๋ฐฑ ์คํ
๋จ๊ณ | Blue-Green | ์นด๋๋ฆฌ ๋ฐฐํฌ |
---|---|---|
์ด๊ธฐ ๋ฐฐํฌ ๋ฐฉ์ | ์ ์ฒด ํธ๋ํฝ ํ ๋ฒ์ ์ ํ | ์์ ํธ๋ํฝ๋ถํฐ ์ ์ง์ ์ ํ |
์ฅ์ ๋์ | Green์ผ๋ก ์ ์ฒด ๋ณต๊ท | ์นด๋๋ฆฌ ํธ๋ํฝ๋ง ๋กค๋ฐฑ |
๋ฆฌ์คํฌ ๊ด๋ฆฌ | ๋น ๋ฅธ ๋กค๋ฐฑ ๊ฐ๋ฅ | ์ ์ง์ ํ์ฅ์ผ๋ก ๋ฆฌ์คํฌ ์ต์ํ |
์ ์ฉ ์์ | MVP ๋ฐฐํฌ ์ดํ ์ ์ฉ | ์๋น์ค ๊ณ ๋ํ ์ดํ ์ ์ฉ |

-
main
โ ์ด์ ํ๊ฒฝ ๋ฐฐํฌ
- CI ๋๊ตฌ: GitHub Actions
-
๋ฐฐํฌ ํ๋ฆ:
push to GitHub โ GitHub Actions โ build โ upload to S3 โ trigger AWS CodeDeploy โ deploy to EC2
- ๊ฐ๋ฐ์๊ฐ
main
๋ธ๋์น์ push ๋๋ PR merge - GitHub Actions ์ํฌํ๋ก์ฐ ์คํ
- ๋น๋ ์ฐ์ถ๋ฌผ S3์ ์ ๋ก๋
- S3 ์
๋ก๋ ์๋ฃ ํ AWS CodeDeploy ํธ๋ฆฌ๊ฑฐ
-
appspec.yml
๊ธฐ๋ฐ์ผ๋ก ๋ฐฐํฌ ์ํ -
BeforeInstall
,AfterInstall
,ApplicationStart
์คํฌ๋ฆฝํธ ์คํ
-
- ๋ฐฐํฌ ์ฑ๊ณต ์ ํฌ์ค ์ฒดํฌ ๋ฐ Slack ์๋ฆผ ์ ์ก
-
.github/workflows/deploy.yml
: GitHub Actions ์ค์ ํ์ผ -
appspec.yml
: CodeDeploy ๋ฐฐํฌ ๊ตฌ์ฑ ํ์ผ -
scripts/start.sh
,scripts/stop.sh
: EC2 ๋ฐฐํฌ์ฉ ์คํฌ๋ฆฝํธ
-
GitHub Actions
- GitHub ์ ์ฅ์์ ์๋ฒฝํ๊ฒ ํตํฉ๋จ
- ๊ฐ๋จํ YAML ๊ธฐ๋ฐ ์ค์ ์ผ๋ก ์ ์ง๋ณด์ ์ฉ์ด
- Secret ๊ด๋ฆฌ ๋ฐ ๋ธ๋์น ์กฐ๊ฑด๋ณ ์ํฌํ๋ก์ฐ ๊ตฌ์ฑ ์ฉ์ด
-
AWS CodeDeploy
- EC2 ์ธ์คํด์ค์ ์๋ ๋ฐฐํฌ ๊ฐ๋ฅ
- AppSpec.yml ๊ธฐ๋ฐ์ ์์ธํ ๋ฐฐํฌ ์ ์ด ์ ๊ณต
- ๋ฐฐํฌ ๊ทธ๋ฃน ๊ธฐ๋ฐ ๋กค๋ฐฑ ๋ฐ ํฌ์ค์ฒดํฌ ์ค์ ๊ฐ๋ฅ
-
/health ์๋ํฌ์ธํธ๋ฅผ ํตํ ์ํ ํ์ธ
-
ํ ์คํธ ํธ๋ํฝ์ ํตํ ์ค์ ๊ธฐ๋ฅ ํ์ธ
-
CloudWatch ๋๋ Grafana ์ฌ์ฉ
-
Slack ๋๋ ์ด๋ฉ์ผ ์๋ฆผ ์ค์
-
๋ฐฐํฌ ์คํจ ์ Slack์ผ๋ก ์๋ ์๋ฆผ ์ ์ก
-
์๋ ๋กค๋ฐฑ ์ ๋ ๋๋ ์๋ ์ฌ๋ฐฐํฌ ์คํ
ํญ๋ชฉ | ์ฒดํฌ ์ฌ๋ถ | ์ค๋ช |
---|---|---|
๋ฐฐํฌ ๋ธ๋์น ํ์ธ (main, develop) | โ | ์๋ํ ๋ธ๋์น์ธ์ง ํ์ธ |
๋น๋ ์๋ฃ ๋ฐ ์๋ฌ ์์ | โ | CI ํต๊ณผ ์ฌ๋ถ ํ์ธ |
ํ๊ฒฝ๋ณ์ ์ค์ ํ์ผ ํ์ธ | โ | .env, application-prod.yml ๋ฑ ์กด์ฌ ์ฌ๋ถ |
๋์ ์๋ฒ ์ ์ ์๋ ์ฌ๋ถ | โ | SSH ์ ์, ๋์คํฌ/๋ฉ๋ชจ๋ฆฌ ์ฌ์ ํ์ธ |
๋กค๋ฐฑ ๋ฒ์ ์กด์ฌ ์ฌ๋ถ | โ | ์ด์ ๋ฒ์ JAR ๋๋ Docker ์ด๋ฏธ์ง ํ์ธ |
DB ๋ฐฑ์ ํ์ผ ์กด์ฌ ํ์ธ | โ | sqlํ์ผ ์ฌ์ ํ์ธ |
์ธ๋ถ ์ฐ๋ API ์ํ ํ์ธ | โ | kakao ouath ๋ก๊ทธ์ธ ์ ์ ์ฌ๋ถ |
ํญ๋ชฉ | ์ฒดํฌ ์ฌ๋ถ | ์ค๋ช |
---|---|---|
์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ ์ฌ๋ถ | โ | systemctl, ํ๋ก์ธ์ค ํ์ธ ๋ฑ |
/health ์๋ํฌ์ธํธ ์ ์ ์๋ต | โ | HTTP 200 ์๋ต |
์ฃผ์ ๊ธฐ๋ฅ ์ ์ ๋์ ์ฌ๋ถ | โ | ํ์๊ฐ์ , ๋ฌธ์ ํ์ด ๋ฑ ์ค์ ๊ธฐ๋ฅ ํ ์คํธ |
์๋ฌ ๋ก๊ทธ ๋ฐ์ ์ฌ๋ถ ํ์ธ | โ | ๋ก๊ทธ ํ์ผ ํ์ธ |
๋ฆฌ์์ค ์ฌ์ฉ๋ ์ ๊ฒ | โ | CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ ๋ฑ |
๋ชจ๋ํฐ๋ง ์๋ ์์ | โ | Slack, CloudWatch ๋ฑ ์๋ ํ์ธ |
๋กค๋ฐฑ ๊ฐ๋ฅ ์ํ ์ ์ง | โ | ์ง์ ๋ฐฐํฌ ํ์ผ ๋๋ ์ด๋ฏธ์ง ํ์ธ |
ํญ๋ชฉ ๋ฒํธ | ์ฒดํฌ ํญ๋ชฉ | ํ์ธ ์ฌ๋ถ |
---|---|---|
1 | ๋ฉ์ธ ํ์ด์ง ์ ์ ์ ์ ์ฌ๋ถ | โ / โ |
2 | ๋ก๊ทธ์ธ/ํ์๊ฐ์ ์ ์ ์๋ ์ฌ๋ถ | โ / โ |
3 | ์ค๋์ ๋ฌธ์ ๋ฆฌ์คํธ ์ ์ ํ์ ์ฌ๋ถ | โ / โ |
4 | ๋ฌธ์ ์์ธ ํ์ด์ง ์ ์ ์กฐํ ์ฌ๋ถ | โ / โ |
5 | ํด์ค ํ์ด์ง ์ ์ ์กฐํ ์ฌ๋ถ | โ / โ |
6 | ์ฃผ์ ๋ฒํผ(์ ์ถ, ํด์ค ํ์ธ ๋ฑ) ์ ์ ๋์ ์ฌ๋ถ | โ / โ |
7 | ์๋ฌ ํ์ด์ง(404, 500) ๋ฐ์ ์ฌ๋ถ | โ / โ |
8 | ์๋ต ์๋ ์ง์ฐ ์ฌ๋ถ ํ์ธ (API ํธ์ถ) | โ / โ |
9 | ๋ฐฐํฌ ํ ์ ๊ท ์๋ฌ ๋ก๊ทธ ์ ์ ์ฌ๋ถ | โ / โ |
10 | ๊ธฐํ ์ด์ ํ์ ๋ฐ์ ์ฌ๋ถ | โ / โ |
ํญ๋ชฉ | ์ญํ ์ค๋ช | ๋ด๋น์ |
---|---|---|
๋ฐฐํฌ ์น์ธ์ | ์ต์ข ๋ฐฐํฌ ์น์ธ | evan.kim |
๋ชจ๋ํฐ๋ง ๋ด๋น์ | ๋ฐฐํฌ ์งํ ์์คํ ์ํ ๋ชจ๋ํฐ๋ง | noah.hwang, sophie.kim |
๋กค๋ฐฑ ๋ด๋น์ | ์ฅ์ ๋ฐ์ ์ ์ฆ์ ๋กค๋ฐฑ | evan.kim, noah.hwang |
๊ธด๊ธ ํซํฝ์ค ๋ด๋น์ | ๋น ๋ฅธ ์์ ๋ฐ ์ฌ๋ฐฐํฌ ๋ด๋น | noah.hwang |
์ฌ์ฉ์ ๋ฌธ์ ๋์ ๋ด๋น์ (CS) | ์ฌ์ฉ์ ๋ฌธ์ ๋์ | sophie.kim |
๋ฆฌํฌํธ ์ ๋ฆฌ ๋ด๋น์ | ๋ฐฐํฌ/QA ๊ฒฐ๊ณผ ๊ธฐ๋ก ๋ฐ ๊ณต์ | sophie.kim |
Slack ์๋ฆผ ๋ด๋น์ | ๋ฐฐํฌ ์๋ฃ ๋ฑ ์๋ฆผ ๋ฐ์ก | evan.kim |
QA ์ฒดํฌ๋ฆฌ์คํธ ์์ฑ์ | ์ด์ QA ์ฒดํฌ๋ฆฌ์คํธ ์์ฑ ๋ฐ ์ ๊ฒ | noah.hwang |
๊ตฌ๋ถ | ๊ธฐ์กด ๋ฐฉ์ | CD ๋์ ํ |
---|---|---|
๋ฐฐํฌ ์๊ฐ | ์๋ ๋ฐฐํฌ, 30๋ถ ์ด์ | ์๋ํ๋ก 5๋ถ ์ด๋ด |
์ค๋ฅ ๋์ | ์๋ ํ์ธ ๋ฐ ๋ณต๊ตฌ | ์๋ ์๋ฆผ ๋ฐ ๋กค๋ฐฑ ๊ฐ๋ฅ |
๋ฐฐํฌ ๋น๋ | ์ฃผ 1ํ | ํ๋ฃจ 1~2ํ ๊ฐ๋ฅ |
-
๋ฐฐํฌ ์ค์ ๊ฐ์
-
๋น ๋ฅธ ๋กค๋ฐฑ ๊ฐ๋ฅ
-
ํ ์์ฐ์ฑ ํฅ์