๋จ์ผ ์คํฌ๋ฆฝํธ์ ๊ธฐ์ ๋ถ์ฑ๋ฅผ Modular Architecture์ AI๋ก ํด๊ฒฐํ git-regret
Git-regret ๐ โ I Finally Finished the CLI That Reads Your Shame
AI ์์ฝ
Context
ํ๋์ฝ๋ฉ๋ ์คํ ์ ํ๊ณผ ์ทจ์ฝํ String Parsing ๊ธฐ๋ฐ์ ๋จ์ผ ํ์ผ ์คํฌ๋ฆฝํธ๋ก ์ธํ ํ์ฅ์ฑ ๋ถ์ฌ. ๋ถ์ ๋์ 20๊ฐ ์ปค๋ฐ ์ ํ ๋ฐ ์์ธ ์ฒ๋ฆฌ ๋ฏธ๋น๋ก ๋๊ท๋ชจ ๋ฆฌํฌ์งํ ๋ฆฌ ์ฒ๋ฆฌ ๋ถ๊ฐ ์ํ์์.
Technical Solution
- ๋ถ์ ์์ง๊ณผ ํ๋ ์ ํ ์ด์ ๋ ์ด์ด๋ฅผ ๋ถ๋ฆฌํ Decoupled Architecture ์ค๊ณ
- ์ ๊ทํํ์ ๊ธฐ๋ฐ์ Compiled Regex ํจํด์ ๋์ ํ์ฌ AWS, Stripe ๋ฑ Secret Leak ํ์ง ์ฑ๋ฅ ์ต์ ํ
- Severity ๊ธฐ๋ฐ์ Multi-Dimensional Analysis ์ฒด๊ณ๋ฅผ ๊ตฌ์ถํ์ฌ ๋ถ์ ๊ท์น์ 1๊ฐ์์ 5๊ฐ๋ก ํ์ฅ
- GitHub Copilot์ ํ์ฉํ Interactive Rebase ๋ฐ git filter-repo ๊ธฐ๋ฐ์ ์๋ Remediation Plan ์์ฑ ๋ก์ง ๊ตฌํ
- 35๊ฐ ์ด์์ Assertion์ ํฌํจํ Automated Testing ๋์ ์ผ๋ก ๋ฐํ์ ์์ ์ฑ ํ๋ณด
Impact
- ์ฝ๋ ๊ท๋ชจ: 87๋ผ์ธ์์ 520๋ผ์ธ ์ด์์ผ๋ก ํ์ฅํ๋ฉฐ ๊ธฐ๋ฅ์ ์์ฑ๋ ์ ๊ณ
- ๋ถ์ ๊ท์น: ๋จ์ผ ๊ท์น์์ 5๊ฐ ์ด์์ ๋ณตํฉ ๋ถ์ ๋ฃฐ๋ก ํ์ฅ
- ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง: Zero ์ํ์์ 35๊ฐ Assertion ๊ธฐ๋ฐ ๊ฒ์ฆ ์ฒด๊ณ ๊ตฌ์ถ
Key Takeaway
๋จ์ ๊ธฐ๋ฅ ๊ตฌํ ์ค์ฌ์ ์คํฌ๋ฆฝํธ๋ฅผ ํ๋ก๋์ ์์ค์ ๋๊ตฌ๋ก ์ ํํ๊ธฐ ์ํด์๋ ์ธํฐํ์ด์ค ๋ถ๋ฆฌ์ ์ ๊ตํ ์๋ฌ ํธ๋ค๋ง ๋ฑ ์์คํ ์ค๊ณ ๊ด์ ์ ์ ๊ทผ์ด ํ์์ ์.
์ค์ฒ ํฌ์ธํธ
1. ๋ถ์ ๋๊ตฌ ์ค๊ณ ์ ๋ฐ์ดํฐ ์ถ์ถ(Extraction)๊ณผ ๊ฒฐ๊ณผ ํ์(Presentation) ๋ ์ด์ด๋ฅผ ์๊ฒฉํ ๋ถ๋ฆฌํ๋๊ฐ?
2. ๋จ์ String Split ๋์ Compiled Regex๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ๋ถ์์ ์ ๋ฐ๋์ ์ฑ๋ฅ์ ํ๋ณดํ๋๊ฐ?
3. ๋ฐ๊ฒฌ๋ ๋ฌธ์ ์ ์ ๋ํด ๋จ์ ์๋ฆผ์ ๋์ด ๊ตฌ์ฒด์ ์ธ Remediation Workflow(์: Rebase Plan)๋ฅผ ์ ๊ณตํ๋๊ฐ?