2023.09 ~ 2024.11
๋ฌธ์ ์
- Saltstack์ ์ฌ์ฉํ ๋จ์ผ ์ฝ๋๋ก ์ธํ๋ผ๋ฅผ ๊ด๋ฆฌ
- ๋ฆฌ์ ์ฆ๊ฐ์ ๋ฐ๋ฅธ ์ฝ๋ ๊ฒ์ฆ workload ์ฆ๊ฐ, ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฎ์ ์์ฐ์ฑ ์ผ๊ธฐ
- ๊ฒ์ฆ๋์ง ์์ ๋ณ๊ฒฝ์ฌํญ์ผ๋ก ์ธํ ์์คํ ์ฅ์ ๋ฐ์
ํด๊ฒฐ ๋ฐฉ๋ฒ
- ๋ชจ๋ Salt master ์๋ฒ๋ฅผ self hosted runner๋ก ๋ฑ๋ก
- PR์ด ๋ฑ๋ก๋๋ฉด ๋ณ๊ฒฝ์ฌํญ์ ํ์ฑ, ์ ์ ํ ๋ฆฌ์ ๊ณผ ์๋ฒ๋ฅผ ๋์์ผ๋ก ๋ฐฐํฌ ์ฝ๋ Dry Run
- ๊ฒฐ๊ณผ๋ฅผ hashing ํด์ GUI ๊ธฐ๋ฐ์ผ๋ก ๊ณตํต๋ ๋ณ๊ฒฝ์ฌํญ์ ์ฉ์ดํ๊ฒ ํ์ธํ ์ ์๋๋ก ๊ฐ๊ณต
- ์ฝ๋ ๊ฒ์ฆ๋ฟ๋ง ์๋๋ผ, Github Actions workflow dispatch๋ก ์ง์ ๋ฐฐํฌํ ์ ์๋๋ก ๊ณ ๋ํ
๊ตฌ์กฐ


๊ธฐ์ ์คํ
- Python, Shell Script
- Github Actions
๋์
๊ธฐ์กด ๋ฐฉ์์ ์ต์ํ ์ฌ๋์ ์๋ก์ด ๊ฒ์ ๋ฐ์๋ค์ด๋ ๊ฒ์ ๊ฑฐ๋ถ๊ฐ์ ๋๋ ๋๊ฐ ์์ต๋๋ค.
ํด๋ผ์ฐ๋ ์ฌ์
์ฑ๊ฒฉ์ ์ฅ์ ์ ๊ฐ์ฉ๋ฅ ์ ๋ฏผ๊ฐํ๊ธฐ ๋๋ฌธ์, ๋ฐฐํฌ๋ผ๋ ์
๋ฌด๋ฅผ ์๋ํํ๋ ๊ฒ์ ๋ํด ๋ฆฌ๋๋ค์ ๋ณด์์ ์ธ ์๊ฒฌ์ ๊ฐ๊ฒ ๋ฉ๋๋ค.
์ด ๊ณผ์ ์์ ์๋ํ์ ํ์์ฑ๊ณผ ํจ์จ์ฑ์ ๋ํด ์ง์์ ์ผ๋ก ์ํตํ๋ฉฐ ์ค๋ํ๊ณ ๊ฒฐ๊ณผ๋ก ์ฆ๋ช
ํ๋ ๊ฒ์ด ๊ฐ์ธ์ ์ผ๋ก๋ ๋งค์ฐ ํฐ ๋์ ์ด์์ต๋๋ค.
์ฌ๋ฐ๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ณต์ ํ๊ณ ๊ฐ๊ด์ ์ธ ์์น๋ก ๊ธฐ์กด ๋ฐฉ์๋ณด๋ค ๋ช ํผ์ผํธ์ ํจ์จ์ ๊ฐ์ง๋์ง, ํ์๋ค์ ๋์์ผ๋ก ์ค๋ฌธ์กฐ์ฌ์ ๊ธฐ์ ๊ณต์ ํ๋ฅผ ๊ฐ์ตํ๋ ๋ฑ์ ๋
ธ๋ ฅ์ ๊ธฐ์ธ์์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ํ์๋ค ๋ชจ๋๊ฐ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํ๊ฒ ๋ ์ดํ, ์๋ํ๋ ์์
์ด ์๋ ์์
๋ณด๋ค ์์ ํ๋ค๋ ๊ฒ์ ๋ฆฌ๋์๊ฒ ์ค๋ํ ์ ์์์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก๋ Staging ํ๊ฒฝ์์ ์ถฉ๋ถํ ๊ฒ์ฆ์ ๊ฑฐ์น๊ณ Production ๋ ๋ฒจ๊น์ง CI/CD ์ํฌํ๋ก์ฐ๋ฅผ ๋์
ํ ์ ์์์ต๋๋ค.
๊ฒฐ๊ณผ
- ๋ฐฐํฌ ์ฝ๋ ๊ฒ์ฆ์ ํ์ํ ํ ์ ์ฒด์ ์ ๋ฌด ์๊ฐ์ ์ฃผ๋น 50์๊ฐ ์ด์ ๊ฐ์
- ์ํฌํ๋ก์ฐ ๋์ ํ 6000ํ ์ด์์ Job ์ํ (์ฃผ๋น 60 ~ 100ํ ์ด์)
- CLI๊ฐ ์๋ GUI ๊ธฐ๋ฐ์ ๋ฐฐํฌ๋ก ํ ๋ด ํ์ค ์ ์ฐจ ๋ณ๊ฒฝ
- ๊ฒ์ฆ๋ ํจ์จ์ฑ๊ณผ ์์ ์ฑ์ผ๋ก Production ํ๊ฒฝ์ ๋ฐฐํฌ์ ์ ์ฉ
๊ธฐ์ฌ๋
- CI/CD ์ํฌํ๋ก์ฐ ์ค๊ณ ๋ฐ ๊ฐ๋ฐ (100%)
- Artifact, Secrets, Markdown summary ๋ฑ Github Action nativeํ๊ฒ ์ํฌํ๋ก์ฐ ๊ฐ๋ฐ
- Environment ํ๋๋ฅผ ์ฌ์ฉํด Staging / Production ๋ฐฐํฌ ๋จ๊ณ ๊ตฌ๋ถ
- Schdule Job, Workflow dispatch ๊ธฐ๋ฅ์ ์ ๊ณตํด ์ฌ๋ฌ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ๊ฒ์ฆํ ์ ์๋๋ก ๊ฐ๋ฐ
- ์ฝ๋ ๊ฒ์ฆ ๊ฒฐ๊ณผ๋ฅผ ์ทจํฉ, ์์ฝํด ๋ณด์ฌ์ค ์ ์๋ Python ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ (40%)
- Git diff ๊ธฐ๋ฐ์ผ๋ก ์ฝ๋ ๋ณ๊ฒฝ์ฌํญ์ ํ์ฑํด ์ด๋ ๋ฆฌ์ ์ ์๋ฒ๋ฅผ ๋์์ผ๋ก ๊ฒ์ฆํ ์ง ํ์ธํ๋ ์ฝ๋ ๊ฐ๋ฐ
- ๋ฐฐํฌ ๊ฒฐ๊ณผ์ hash ๊ฐ์ ๋น๊ตํด ๋์ผํ ๋ณ๊ฒฝ์ฌํญ์ ํ๋์ ๋จ์๋ก ์กฐํํ ์ ์๋๋ก ๊ฐ์ํ