ํต์ฌ ์์
- ์ํคํ ์ฒ๋ ์ธ ๊ฐ์ง ๊ตฌ์ฑ ์์์ ๋๋ค: Ollama(๋๋ vLLM)๋ฅผ ์คํํ๋ GPU ์๋ฒ โ ๋คํธ์ํฌ๋ฅผ ํตํด ์๋ฒ์ ์ ๊ทผ ๊ฐ๋ฅํ CI ๋ฌ๋ โ PR diff๋ฅผ POSTํ๊ณ ๊ตฌ์กฐํ๋ ํ์ ์ ํ์ฑํ๋ ๋ง์ถคํ action. GitHub Actions, GitLab CI, Buildkite, Jenkins์์ ๋์ผํ ํํ๋ก ์๋ํฉ๋๋ค.
- 2026๋ 5์ ๊ธฐ๋ณธ ์คํ: Ollama + Qwen3-Coder 30B (Apache 2.0) + ๊ฒฝ๋ ๋ง์ถคํ GitHub Action. ์ด ์ธํ๋ผ: GPU ์๋ฒ ํ ๋, ๋ฌ๋ ํ ๊ฐ.
- ํ๋์จ์ด ์ฌ์ด์ง: RTX 4090 (24 GB, ~$2,000) - 15~25๋ช ๊ฐ๋ฐ์ ์ฒ๋ฆฌ; L40S ๋๋ A6000 Ada (48 GB, ~$7,000~8,000) - 50๋ช ๊น์ง; H100 (80 GB, $25,000+) ๋๋ ๋ฉํฐ GPU - 100๋ช ์ด์.
- ๊ฒฝ์ ์ฑ์ ์์ฒด ํธ์คํ ์์ญ์ผ๋ก ๊ธฐ์๋๋ค โ GitHub Advanced Security ์ ๋ฃ ์ข์ ์ฝ 15~25๊ฐ($19/๊ฐ๋ฐ์/์) ์์ ์์. RTX 4090 ๋น๋๋ ํด๋น ํ ๊ท๋ชจ์์ 5~10๊ฐ์ ๋ด ํ์๋ฉ๋๋ค.
- ๋ณด์ ์ด์ ์ ์ค์ ์ด๋ฉฐ ๋ง์ผํ
์ฉ์ด๊ฐ ์๋๋๋ค. ์์ค ์ฝ๋๋ ์ ๋ ๋คํธ์ํฌ ๋ฐ์ผ๋ก ๋๊ฐ์ง ์์ผ๋ฉฐ, ์์๋ฐ์ด๋ ์ด๊ทธ๋ ์ค๋
tcpdump๋ก ์ ๋ก์์ ์ฆ๋ช ํ ์ ์๊ณ , ๊ฐ์ฌ ํ๋ฉด ์ ์ฒด๋ Ollama ํ๋ก์ธ์ค ํ๋์ ๋ก๊ทธ ํ์ผ ํ๋์ ๋๋ค. - ์คํ์ ์ด์ ๋น์ฉ์ ๋๋ค. ์ฒซ ๋ฌ์ ์กฐ์ ์ฌ์ดํด์ ๊ณํํ์ญ์์ค: ํ๋กฌํํธ ๋ฐ๋ณต, ์ฌ๊ฐ๋ ์๊ณ๊ฐ, ๊ทธ๋ฆฌ๊ณ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ํ๋กฌํํธ๊ฐ ๊ฐ์ ๋ ์ ์๋๋ก ๋ฆฌ๋ทฐ์ด ํผ๋๋ฐฑ ์์ง ๊ฒฝ๋ก.
- ์ง์ฐ ์๊ฐ์ ํ์ฉ ๋ฒ์ ๋ด์ ๋๋ค. 24 GB GPU์์ Qwen3-Coder 30B๋ 200์ค diff๋ฅผ 30์ด ์ด๋ด์ ๋ฆฌ๋ทฐํฉ๋๋ค. PR ์์ฑ์์ ๋๊ธฐ ์๊ฐ์ ๋ฆฌ๋ทฐ๊ฐ ์๋ ๋ค๋ฅธ CI ์์ ์ด ์ง๋ฐฐํฉ๋๋ค.
- ์ธ๊ฐ ๋ฆฌ๋ทฐ๋ฅผ ์์ ํ ๋์ฒดํ์ง ๋ง์ญ์์ค. ๋ก์ปฌ LLM์ ์ด๊ธฐ ๋ถ๋ฅ ๊ฒ์ดํธ์ ๋๋ค โ ๋ช ๋ฐฑํ ๋ฌธ์ ๋ฅผ ๊ฐ์งํ๊ณ , ์ํํ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ํ๋ฉฐ, LLM์ด ์์ง ์ค์ํ๋ ํ๋จ์ ์ํด ์ธ๊ฐ์ ํด๋ฐฉ์ํต๋๋ค.
๋น ๋ฅธ ์ฌ์ค
- ๊ถ์ฅ ๋ชจ๋ธ: Q4_K_M์ Qwen3-Coder 30B (~17 GB VRAM, Apache 2.0).
- ๊ถ์ฅ ๋ฐํ์: ์ค์ ๋จ์์ฑ์ ์ํ Ollama; ๋์ผ GPU์์ ๋ ๋์ ๋์์ฑ์ด ํ์ํ ๊ฒฝ์ฐ vLLM.
- ์ง์งํ ํ์ ์ํ ์ต์ GPU: RTX 4090 (24 GB). ๋ ์์ ์นด๋๋ 7B ๋ชจ๋ธ์ ์ฌ์ฉํ๊ฒ ๋๋ฉฐ ๋ฆฌ๋ทฐ ํ์ง์ด ํ์ ํ ๋ฎ์์ง๋๋ค.
- 24 GB ๋จ์ผ GPU์ ๋์์ฑ: Qwen3-Coder 30B์์ ํธ์ํ๊ฒ 1~3๊ฐ์ ๋์ ๋ฆฌ๋ทฐ; ๊ทธ ์ดํ๋ถํฐ๋ ๋๊ธฐ์ด.
- ์ง์ฐ ์๊ฐ ๋ชฉํ: 200์ค diff์ 30์ด ๋ฏธ๋ง. ๊ทธ ์ด์์ด ๋๋ฉด PR ์์ฑ์ ํ๋์ด ๋ณํํ๊ณ ๋ฆฌ๋ทฐ๊ฐ ๋ฌด์๋ฉ๋๋ค.
- ๊ฐ์ฌ ํ์ธ: GPU ์๋ฒ์ ์์๋ฐ์ด๋ ์ ๋ก ์ด๊ทธ๋ ์ค๋ ์ฆ๋ช
๊ฐ๋ฅํ๋ฉฐ, ํ๋ฉด ์ ์ฒด๋
ollama serve+ ๋จ์ผ ๋ก๊ทธ ํ์ผ์ ๋๋ค. - GitHub Advanced Security ($19/๊ฐ๋ฐ์/์) ๋๋น ๊ต์ฐจ์ : ์ ๋ฃ ์ข์ 15~25๊ฐ๊ฐ 5~10๊ฐ์ ๋ด RTX 4090 ๋น๋๋ฅผ ์ปค๋ฒํฉ๋๋ค.
- GitLab CI์ ๋๋ฑ์ฑ: ์ํคํ ์ฒ ๋์ผ, ๋์ผํ HTTP ์๋ํฌ์ธํธ๋ฅผ ํธ์ถํ๋ CI ์์ ์ผ๋ก GitHub Action๋ง ๊ต์ฒด.
CI ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ํ ์ธ ๊ฐ์ง ์ค์ ์ต์ : ์ํคํ ์ฒ ๋น๊ต
2026๋ 5์ ๊ธฐ์ค์ผ๋ก ์ค์ง์ ์ผ๋ก ๋ชจ๋ PR ๋ฆฌ๋ทฐ ์ค์ ์ ๋ค๋ฃจ๋ ์ธ ๊ฐ์ง ์ํคํ ์ฒ๊ฐ ์์ต๋๋ค. ์์ฒด ํธ์คํ ๋ก์ปฌ LLM์ ๊ทธ ์ค ํ๋์ ๋๋ค โ ์์ค ์ฝ๋๊ฐ ๋คํธ์ํฌ ๋ฐ์ผ๋ก ๋๊ฐ ์ ์๊ฑฐ๋ ์ข์ ๊ฒฝ์ ์ฑ์ด ๊ณ ์ ์ธํ๋ผ๋ฅผ ์ ํธํ ๋์ ์ฌ๋ฐ๋ฅธ ์ ํ.
๐ ํ ๋ฌธ์ฅ์ผ๋ก
์์ฒด ํธ์คํ ๋ก์ปฌ LLM ์ฝ๋ ๋ฆฌ๋ทฐ๋ ์ ๋ฃ ์ข์ 15~25๊ฐ์์ GitHub Advanced Security๋ณด๋ค ๋น ๋ฅด๊ฒ ํ์๋๋ฉฐ ์์ค ์ฝ๋๋ฅผ ๋คํธ์ํฌ ๋ด์ ์ ์งํฉ๋๋ค โ ํ๋ผ์ด๋ฒ์ ์๋ฐ์ด๋ ์ข์ ์ ์ ์ฝ์ด ์๋ ํ์ ์ํ ์ฌ๋ฐ๋ฅธ ์ํคํ ์ฒ์ ๋๋ค.
๐ฌ ์ฝ๊ฒ ๋งํ๋ฉด
CI์์ AI ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ํ ์ธ ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค. GitHub Advanced Security๋ ๊ฐ์ฅ ํ์ฑํํ๊ธฐ ์ฝ๊ณ ๊ท๋ชจ์์๋ ๊ฐ์ฅ ๋น์๋๋ค. ํด๋ผ์ฐ๋ LLM API(OpenAI, Anthropic)๋ ์์ํ๊ธฐ์ ์ ๋ ดํ๊ณ ๊ฐ diff๋ฅผ ์๋ํํฐ์ ์ ์กํฉ๋๋ค. ์์ฒด ํธ์คํ ๋ก์ปฌ LLM์ ์ค์ ๋น์ฉ์ด ๊ฐ์ฅ ๋์ผ๋ฉฐ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ธ๋ถ ๊ฒฝ๊ณ ๋ด์ ์ ์งํ๋ ์ ์ผํ ์ต์ ์ ๋๋ค โ ๊ทธ๋ฆฌ๊ณ ์ ๋ฃ ์ข์ ์ฝ 15~25๊ฐ์์ 1๋ ๋์ ์ธ ๊ฐ์ง ์ค ๊ฐ์ฅ ๊ฒฝ์ ์ ์ด ๋ฉ๋๋ค.
| ์ํคํ ์ฒ | ์ค์ ๋ณต์ก์ฑ | ๋น์ฉ (๊ฐ๋ฐ์ 10๋ช ) | ๋น์ฉ (๊ฐ๋ฐ์ 50๋ช ) | PR ์ง์ฐ ์๊ฐ | ์ ํฉํ ๊ฒฝ์ฐ |
|---|---|---|---|---|---|
| GitHub Advanced Security | ๋ฎ์ (ํ ๊ธ ํ๋) | $190/์ | $950/์ | 1๋ถ ๋ฏธ๋ง (๊ด๋ฆฌํ) | ํ๋ผ์ด๋ฒ์ ์ ์ฝ ์์ด ์ ๋ฃ ์ข์ ~15๊ฐ ๋ฏธ๋ง์ธ ํ |
| ํด๋ผ์ฐ๋ LLM API (OpenAI / Anthropic) | ๋ฎ์~์ค๊ฐ (API ํค + action) | ~$50~200/์ (์ฌ์ฉ๋) | ~$300~1,200/์ (์ฌ์ฉ๋) | ์์ด | ์์ค ์ฝ๋๋ฅผ ์๋ํํฐ API์ ์ ์กํ๋ ๊ฒ์ด ๊ด์ฐฎ์ ํ |
| ์ ์ฉ GPU์ ๋ก์ปฌ LLM | ์ค๊ฐ~๋์ (GPU ์๋ฒ + ๋ฌ๋ + action) | ~$2,000 ํ๋์จ์ด (์ผํ์ฑ) | ~$7,000+ ํ๋์จ์ด (์ผํ์ฑ) | 10~30์ด (๋จ์ผ GPU) | ํ๋ผ์ด๋ฒ์ ์๊ฑด, ์ ๋ฃ ์ข์ 15๊ฐ ์ด์, EU ์ปดํ๋ผ์ด์ธ์ค ํ๊ฒฝ์ ํ |
| ๊ณต์ ์ธํ๋ผ์ ๋ก์ปฌ LLM (๊ธฐ์กด GPU) | ์ค๊ฐ (๋ฌ๋ + action๋ง) | $0 ํ๊ณ ๋น์ฉ (๊ธฐ์กด ์ฉ๋) | $0 ํ๊ณ ๋น์ฉ (๊ธฐ์กด ์ฉ๋) | ๊ฐ๋ณ (๊ฒฝํฉ์ ๋ฐ๋ผ) | ML ๋๋ ๋ถ์์ฉ GPU ์ธํ๋ผ๋ฅผ ์ด๋ฏธ ์ด์ํ๋ ํ |
๊ถ์ฅ ์คํ: Ollama + Qwen3-Coder + ๊ฒฝ๋ GitHub Action
๊ฐ์ฅ ๋จ์ํ ํ๋ก๋์ ๊ธ ์คํ์ ์ธ ๊ฐ์ง ๊ตฌ์ฑ ์์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ๊ฐ๊ฐ์ ์คํ ์์ค์ด๊ณ ๋ฌด๋ฃ์ด๋ฉฐ ์ ๋ฌธ์ํ๋์ด ์์ต๋๋ค; ์ด๋ค ๊ฐ์ ํตํฉ ํ๋ฉด์ HTTP์ ๋๋ค.
- GPU ์๋ฒ์ Ollama(๋๋ ๋์ ๋์์ฑ์ ์ํ vLLM) ํ์ฌ. Ollama๋ ๊ธฐ๋ณธ์ ์ผ๋ก
localhost:11434์ OpenAI ํธํ HTTP API๋ฅผ ๋ ธ์ถํฉ๋๋ค; ๋ฌ๋์ ๋ ธ์ถํ๊ธฐ ์ ์ ์ฌ์ค ์ธํฐํ์ด์ค ๋๋ ์ธ์ฆ์ด ์๋ ๋ฆฌ๋ฒ์ค ํ๋ก์์ ๋ฐ์ธ๋ฉํ์ญ์์ค. - ์ฝ๋ฉ ์กฐ์ ๋ชจ๋ธ: Q4_K_M์ Qwen3-Coder 30B๋ 2026๋ 5์ ๊ธฐ์ค ํ์ค์ ๋๋ค โ ์ฝ๋ฉ์ ์ํ ๊ฐ์ฅ ๊ฐ๋ ฅํ ์คํ ์จ์ดํธ ๋ฐฉํฅ, 256K ์ปจํ ์คํธ, Apache 2.0 ๋ผ์ด์ ์ค, 24 GB GPU์ ์ ํฉํฉ๋๋ค. 8~16 GB GPU์ ๊ฒฝ์ฐ Qwen3-Coder 7B๋ฅผ ์ฌ์ฉํ๋ ๋ฆฌ๋ทฐ ํ์ง์ด ํ์ ํ ๋ฎ์์ง์ ์ธ์ํ์ญ์์ค.
- CI ํตํฉ: GPU ์๋ฒ์ ๋์ผํ ๋คํธ์ํฌ์ ์์ฒด ํธ์คํ GitHub Actions ๋ฌ๋, ๋๋ ์ฌ์ค ๋คํธ์ํฌ(Tailscale, WireGuard ๋๋ VPC ํผ์ด๋ง)๋ฅผ ํตํด GPU ์๋ฒ์ ์ ๊ทผํ๋ ๊ธฐ์กด GitHub ํธ์คํ ๋ฌ๋.
- ๋ง์ถคํ GitHub Action (JavaScript ๋๋ composite) โ GitHub API๋ก PR diff๋ฅผ ๊ฐ์ ธ์ ๋ฆฌ๋ทฐ ํ๋กฌํํธ์ ํจ๊ป Ollama ์๋ํฌ์ธํธ์ ์ ์กํ๊ณ , ๊ตฌ์กฐํ๋ ์๋ต์ ํ์ฑํ์ฌ PR์ ์ธ๋ผ์ธ ๋๊ธ์ ๋ค์ ๊ฒ์ํฉ๋๋ค.
- ์ ํ ์ฌํญ: ํ์ผ ํด์ + diff ํด์๋ฅผ ํค๋ก ํ๋ ์๊ท๋ชจ Redis ๋๋ SQLite ์บ์ โ ์ดํ CI ์คํ์์ ๋ณ๊ฒฝ๋์ง ์์ ํ์ผ์ ์ฌ๋ฆฌ๋ทฐ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
- GitLab๊ณผ ๋๋ฑ์ฑ: ๋์ผํ ์ํคํ ์ฒ, GitHub Action์ ๋์ฒดํ๋ GitLab CI ์์ . LLM ํธ์ถ์ ๋์ผํฉ๋๋ค.
๐กTip: ollama serve๋ฅผ ์ฌ์ค ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ๋ฐ์ธ๋ฉํ์ญ์์ค(๋๋ ๋ฌ๋๊ฐ ๋์ผํ ํธ์คํธ์ ์๋ ๊ฒฝ์ฐ 127.0.0.1). ํธ์คํธ ๊ฐ ๋
ธ์ถ ์ ์ ์ธ์ฆ์ ์์ ๋ฐฐ์นํ์ญ์์ค. ์ธ์ฆ ์๋ ๊ธฐ๋ณธ OLLAMA_HOST=0.0.0.0:11434๋ ๋จ์ผ ๋จธ์ ์คํ์๋ ๊ด์ฐฎ์ง๋ง ๋ค๋ฅธ ๋ชจ๋ ๋งฅ๋ฝ์์๋ ๋ณด์ ์คํจ์
๋๋ค.
์ค์ ๋ก ๋์ํ๋ GitHub Actions ์ํฌํ๋ก
์ต์ ์คํ ๊ฐ๋ฅ ์ํฌํ๋ก๋ ์ฝ 50์ค์ YAML์ ๋๋ค. ์ด ํ ํ๋ฆฟ์ PR์ด ์ด๋ฆฌ๊ฑฐ๋ ๋๊ธฐํ๋ ๋ ์คํ๋์ด diff๋ฅผ ๊ฐ์ ธ์ค๊ณ , Ollama๋ฅผ ํธ์ถํ๋ฉฐ, ๋ค์ ๋๊ธ์ ๊ฒ์ํฉ๋๋ค. ํ๋ก๋์ ๋ฐฐํฌ์์๋ ์บ์ฑ, ์ฌ๊ฐ๋ ์๊ณ๊ฐ, ๊ทธ๋ฆฌ๊ณ "์ฐจ๋จ" ํ์ ์ PR์ ๋ง๋ ์ต์ ์ด ์ถ๊ฐ๋ฉ๋๋ค.
- ๋ฌ๋๋ ๋คํธ์ํฌ๋ฅผ ํตํด
OLLAMA_HOST์ ์ ๊ทผํ ์ ์์ด์ผ ํฉ๋๋ค โ ๋์ผํ VPC์ ์์ฒด ํธ์คํ ์ด๊ฑฐ๋, GPU ์๋ฒ๊ฐ ๋ค๋ฅธ ๊ณณ์ ์๋ ๊ฒฝ์ฐ Tailscale / WireGuard๋ฅผ ํตํด. - ์์คํ
ํ๋กฌํํธ๋ action์ด ํ์ ์ ๋ฐ๋ผ ๊น๋ํ๊ฒ ๋ถ๊ธฐํ ์ ์๋๋ก ๊ตฌ์กฐํ๋ JSON ์๋ต์ ๊ฐ์ ํฉ๋๋ค.
format: "json"๊ณผ ํ๋กฌํํธ์ ์๊ฒฉํ ์คํค๋ง ์์ด๋ ์์ ํ์ ์ถ๋ ฅ ํ์ฑ์ ์ด์ ์๊ฐ์ 30%๋ฅผ ์๋นํ๊ฒ ๋๊ณ ์ค๋ฅ ๋ชจ๋๊ฐ ๋ฏธ๋ฌํด์ง๋๋ค. fetch-depth: 0์ผ๋ก ์ฒดํฌ์์ํ๋ ๊ฒ์ ๋ฒ ์ด์ค ๋ธ๋์น ๋๋น ์ค์ diff๋ฅผ ๊ณ์ฐํ๋ ๋ฐ ํ์ํฉ๋๋ค โ ์์ ์ฒดํฌ์์์ ์๋ชป๋ diff๋ฅผ ์์ฑํฉ๋๋ค.- PR๋น ์์ ๋ ์ฝ๋ ์ค์ด ~50K ์ด์์ธ ์ ์ฅ์์ ๊ฒฝ์ฐ ์ ์ก ์ ์ diff๋ฅผ ์๋ผ๋ด๊ฑฐ๋ ๋ถํ ํ์ญ์์ค. Qwen3-Coder 30B์ 256K ์ปจํ ์คํธ๋ ๋๊ทธ๋ฝ์ง๋ง, ์ค์ ์์ ์ปจํ ์คํธ๋ 64K~128K์ ๋ ๊ฐ๊น์ต๋๋ค (2026๋ ์ต๊ณ ์ ๋ก์ปฌ ์ฝ๋ฉ ๋ชจ๋ธ ์ฐธ์กฐ).
- ํ๋กฌํํธ ์ค๊ณ์ ์ฌ์ธต ๋ด์ฉ โ ์์คํ ํ๋กฌํํธ ๋ ์ฌ์ฉ์ ํ๋กฌํํธ, ์์, ๊ตฌ์กฐํ๋ ์ถ๋ ฅ โ ์ ์์คํ ํ๋กฌํํธ ๋ ์ฌ์ฉ์ ํ๋กฌํํธ: ์ฐจ์ด์ ์ ๋ฌด์์ ๋๊น?๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
# .github/workflows/local-llm-review.yml
name: Local LLM Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: self-hosted # OLLAMA_HOST์ ์ ๊ทผ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฌ๋
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Generate diff
id: diff
run: |
git diff origin/${{ github.base_ref }}...HEAD > /tmp/pr.diff
echo "size=$(wc -c < /tmp/pr.diff)" >> "$GITHUB_OUTPUT"
- name: Call local LLM for review
id: review
env:
OLLAMA_HOST: ${{ secrets.OLLAMA_HOST }} # ์: http://gpu-server.internal:11434
run: |
DIFF=$(jq -Rs . < /tmp/pr.diff)
curl -sS "$OLLAMA_HOST/api/chat" -H 'Content-Type: application/json' -d "{
"model": "qwen3-coder:30b",
"stream": false,
"format": "json",
"messages": [
{"role": "system", "content": "You are a senior code reviewer. Return JSON: {verdict: 'approve'|'comment'|'block', summary: string, comments: [{path, line, severity, message}]}"},
{"role": "user", "content": $DIFF}
]
}" > /tmp/review.json
echo "verdict=$(jq -r '.message.content | fromjson | .verdict' < /tmp/review.json)" >> "$GITHUB_OUTPUT"
- name: Post review comment
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const review = JSON.parse(JSON.parse(fs.readFileSync('/tmp/review.json')).message.content);
const body = `### Local LLM Review: \`${review.verdict}\`
${review.summary}`;
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body
});
- name: Block on critical verdict
if: steps.review.outputs.verdict == 'block'
run: exit 1
๐Note: ์ด ์ํฌํ๋ก๋ ์๋์ ์ผ๋ก ์ต์ํ์
๋๋ค. ํ๋ก๋์
๋ฐฐํฌ์๋ ๋ค์์ด ์ถ๊ฐ๋ฉ๋๋ค: ๋ณ๊ฒฝ๋์ง ์์ ํ์ผ์ ์ฌ๋ฆฌ๋ทฐ๋ฅผ ๊ฑด๋๋ฐ๊ธฐ ์ํ ํ์ผ ํด์ + diff ํด์ ์บ์, ์ฌ๊ฐ๋ ์๊ณ๊ฐ(์ค์ง severity >= "high"์์๋ง ์ฐจ๋จ), ๋จ์ผ ์์ฝ ๋๊ธ ๋์ ์ธ๋ผ์ธ ๋๊ธ ๊ฒ์, ์ธ์ด๋ณ ํ๋กฌํํธ ๋ณํ, ๊ทธ๋ฆฌ๊ณ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ํ๋กฌํํธ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํ ๋ฆฌ๋ทฐ์ด ํผ๋๋ฐฑ ์์ง.
ํ ๊ท๋ชจ๋ณ ํ๋์จ์ด ์ฌ์ด์ง
RTX 4090 (24 GB)์ ๊ฐ๋ฐ์ 15~25๋ช ์ ํ์ ํธ์ํ๊ฒ ์ฒ๋ฆฌํฉ๋๋ค. ๋จ์ผ GPU์ ๋ณ๋ชฉ์ ๋ฆฌ๋ทฐ๋น ์ฒ๋ฆฌ๋์ด ์๋๋ผ PR ์ง์ค ์๊ฐ(์์์ผ ์์นจ, ์คํ๋ฆฐํธ ์ข ๋ฃ)์ ๋์์ฑ์ ๋๋ค. ๋ค์ ์ฌ์ด์ง ๊ท์น์ Q4_K_M์ Qwen3-Coder 30B์ 50~500์ค์ ์ผ๋ฐ์ ์ธ PR diff๋ฅผ ๊ฐ์ ํฉ๋๋ค.
| ํ ๊ท๋ชจ | GPU | VRAM | ๋์ ๋ฆฌ๋ทฐ | ์์ ๊ฐ๊ฒฉ (2026๋ 5์) |
|---|---|---|---|---|
| ๊ฐ๋ฐ์ ~5๋ช | RTX 4070 / 4070 Ti | 12~16 GB | 1๊ฐ (Qwen3-Coder 7B๋ง ๊ฐ๋ฅ) | $600~900 |
| ๊ฐ๋ฐ์ 15~25๋ช | RTX 4090 / 5090 | 24~32 GB | 1~3๊ฐ (Qwen3-Coder 30B) | $2,000~2,500 |
| ๊ฐ๋ฐ์ 25~50๋ช | L40S / A6000 Ada | 48 GB | 3~6๊ฐ | $7,000~8,500 |
| ๊ฐ๋ฐ์ 50~100๋ช | 2ร RTX 4090 ๋๋ 1ร H100 | 48 GB / 80 GB | 6~10๊ฐ | $5,000 (2ร 4090) ๋๋ $25,000+ (H100) |
| ๊ฐ๋ฐ์ 100๋ช ์ด์ | ๋ฉํฐ GPU H100 ๋๋ H200 | 160 GB ์ด์ | vLLM์ผ๋ก 10๊ฐ ์ด์ | $50,000 ์ด์ |
๐กTip: ๊ฐ๋ฐ์ 50๋ช ์๊ณ๊ฐ์ ์ด๊ณผํ๋ ํ์ Ollama์์ vLLM์ผ๋ก ์ ํํ์ญ์์ค. Ollama๋ ์ฌ์ฉ ํธ์์ฑ์ ์ฐ์ ์ํ๊ณ , vLLM์ ๊ณต์ GPU์์์ ์ฒ๋ฆฌ๋์ ์ฐ์ ์ํฉ๋๋ค. ๋์ผํ Qwen3-Coder 30B ๋ชจ๋ธ์ด ์์ชฝ ๋ชจ๋์์ ์๋ํฉ๋๋ค โ ์ถ๋ก ์๋ฒ๋ง ๋ณ๊ฒฝ๋ฉ๋๋ค.
๋น๋ ๋ฐ ๋ค๋ฅธ ์ํฌ๋ก๋ ๊ฐ GPU ๊ณต์
์ฝ๋ ๋ฆฌ๋ทฐ ์ ์ฉ GPU๊ฐ ๊ฐ์ฅ ๋จ์ํ ์ํคํ ์ฒ์ด์ง๋ง ์ ์ผํ ๋ฐฉ๋ฒ์ ์๋๋๋ค. ML ์ถ๋ก ์ด๋ ํ์ต์ ์ํ GPU ์ธํ๋ผ๋ฅผ ์ด๋ฏธ ์ด์ํ๋ ํ์ ๊ณต์ ํ ์ ์์ง๋ง, ๊ฒฝํฉ์ผ๋ก ์ธํด ๋ฆฌ๋ทฐ ์ง์ฐ ์๊ฐ์ด ๊ธ์ฆํ๋ ํธ๋ ์ด๋์คํ๊ฐ ์์ต๋๋ค.
- ๋ฆฌ๋ทฐ ์ ์ฉ ์ ์ฉ GPU: ๊ฐ์ฅ ๋จ์ํ ๋ชจ๋ธ. ์ง์ฐ ์๊ฐ์ด ์์ธก ๊ฐ๋ฅํ๊ณ , ์ฉ๋ ๊ณํ์ด ์ง๊ด์ ์ด๋ฉฐ, ์ค๋ฅ ๋ชจ๋๊ฐ ๊ฒฉ๋ฆฌ๋ฉ๋๋ค. GPU ์ธํ๋ผ๋ฅผ ์์ง ์ด์ํ์ง ์๋ ํ์ ๋ํ ๊ถ์ฅ ์ฌํญ.
- ML ์ถ๋ก ๊ณผ ๊ณต์ ํ๋ GPU: ์ถ๋ก ์ํฌ๋ก๋๊ฐ ์์ ์ ์ธ ์๋ฒจ๋กํ๋ฅผ ๊ฐ์ง ๊ฒฝ์ฐ(์: 4~6 GB์ ๋ง๋ ์๊ท๋ชจ ์๋ฒ ๋ฉ ์๋น์ค) ์คํ ๊ฐ๋ฅํฉ๋๋ค. ๋ฆฌ๋ทฐ ๋ชจ๋ธ์ด ๋๋จธ์ง VRAM์ ์ฐจ์งํฉ๋๋ค. ์ด ํจํด์์ ์ค์ผ์ค๋ง ์ถฉ๋์ ๋๋ญ ๋๋ค.
- ML ํ์ต๊ณผ ๊ณต์ ํ๋ GPU: ๊ฐ๋ ฅํ๊ฒ ๊ถ์ฅํ์ง ์์ต๋๋ค. ํ์ต ์์ ์ VRAM์ ํ๊ณ๊น์ง ๋ฐ์ด๋ถ์ฌ ๋ฆฌ๋ทฐ ๋ชจ๋ธ์ ๊ตถ๊ธฐ๊ณ , ๊ฐ๋ฐ์์ ์์คํ ์ ๋ขฐ๋ฅผ ์นจ์ํ๋ 30~120์ด์ ๋ฆฌ๋ทฐ ์ง์ฐ ์๊ฐ์ ์ด๋ํฉ๋๋ค.
- ํ์ด์ง๋ ์ดํ ์ ์ ๊ฐ์ถ vLLM: ๋์ ๋์์ฑ์ผ๋ก LLM์ ์๋นํ๊ธฐ ์ํด ํน๋ณํ ์ค๊ณ๋์์ต๋๋ค. Ollama ํ์์ 1~3๊ฐ์ ๋์ ๋ฆฌ๋ทฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋์ผํ RTX 4090์ด vLLM ํ์์ 4~8๊ฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ, ๋ ๋ณต์กํ ์ค์ ์ด ํธ๋ ์ด๋์คํ์ ๋๋ค. ๊ฐ๋ฐ์ 25๋ช ์ด์๋ถํฐ ๊ฐ์น๊ฐ ์์ต๋๋ค.
- H100์ ๋ฉํฐ ํ ๋ํธ: ๊ฐ๋ฐ์ 100๋ช ์ด์ ๊ท๋ชจ์์๋ H100์ MIG ์ฌ๋ผ์ด์ค๋ก ํํฐ์ ๋ํ๊ฑฐ๋ ํ ๋ํธ๋ณ ํ ๋น๋์ผ๋ก vLLM์ ์คํํ์ญ์์ค. ์ด๋ ํ๋ซํผ ์์ง๋์ด๋ง ์์ญ์ ๋๋ค; ์ฆํฅ์ ์ผ๋ก ๊ตฌ์ฑํ์ง ๋ง์ญ์์ค.
GitHub Advanced Security ๋๋น ๋น์ฉ ๋น๊ต
๊ฒฝ์ ์ฑ์ ์ ๋ฃ ์ข์ ์ฝ 15~25๊ฐ์์ ์์ฒด ํธ์คํ ์ชฝ์ผ๋ก ๊ธฐ์ธ์ด์ง๋๋ค. ์ด๊ฒ์ 1๋ ์๊ฐ ๋น๊ต์ ๋๋ค; ๊ธฐ๊ฐ์ด ๊ธธ์๋ก ์์ฒด ํธ์คํ ์ด ๋ ์ ๋ฆฌํด์ง๋๋ค.
- GitHub Advanced Security (Code Security): ์ ๊ฐ $19/๊ฐ๋ฐ์/์ (GitHub ๊ฐ๊ฒฉ ํ์ด์ง์์ ํ์ธ; ์ํฐํ๋ผ์ด์ฆ ๊ณ ๊ฐ์๊ฒ๋ ๋ณผ๋ฅจ ํ ์ธ์ด ์ ๊ณต๋ฉ๋๋ค).
- ํด๋ผ์ฐ๋ LLM API (์: OpenAI, Anthropic): ์ผ๋ฐ์ ์ธ PR ๋ณผ๋ฅจ์์ ํ์ฑ ๊ฐ๋ฐ์๋น ๋๋ต $50~200/์; ์ฝ๋๋ฒ ์ด์ค ํฌ๊ธฐ์ ๋ฆฌ๋ทฐ ํ๋กฌํํธ ์ค๊ณ์ ๋ฐ๋ผ ํฌ๊ฒ ๋ฌ๋ผ์ง๋๋ค.
- ์์ฒด ํธ์คํ ๋ก์ปฌ LLM, RTX 4090 ๋น๋: ํ๋์จ์ด ์ผํ์ฑ ์ฝ $2,500 (GPU + ๊ธฐ๋ณธ ์๋ฒ ์์). ์ ๋ ฅ: ์ ํด ์ ~50W, ๋ถํ ์ ~350W โ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ์ผ๋ก ์ ๊ธฐ์๊ธ ์ ์ฝ $20~30. ์ข์ ์์๋ฃ ์์.
- ๊ฐ๋ฐ์ 10๋ช ๊ต์ฐจ์ : GHAS $190/์ ๋ ์์ฒด ํธ์คํ ์ด์๋น $25/์ + $2,500 ์๋ณธ ์ง์ถ. ์๋ณธ ์ง์ถ์ ์ฝ 14๊ฐ์์ ์๊ฐ๋ฉ๋๋ค.
- ๊ฐ๋ฐ์ 25๋ช ๊ต์ฐจ์ : GHAS $475/์ ๋ ์์ฒด ํธ์คํ ์ด์๋น $25/์ + $2,500 ์๋ณธ ์ง์ถ. ์๋ณธ ์ง์ถ์ ์ฝ 5~6๊ฐ์์ ์๊ฐ๋ฉ๋๋ค.
- ๊ฐ๋ฐ์ 50๋ช ๊ต์ฐจ์ : GHAS $950/์ ๋ ์์ฒด ํธ์คํ ์ด์๋น $40/์ + $7,500 ์๋ณธ ์ง์ถ (48 GB GPU). ์๋ณธ ์ง์ถ์ ์ฝ 8๊ฐ์์ ์๊ฐ๋ฉ๋๋ค.
- ์๋ณธ ์ง์ถ ์์น๊ฐ ๊ณ์ฐ์ ์ง๋ฐฐํฉ๋๋ค. ์ด๊ฒ์ ์ํด ํน๋ณํ GPU๋ฅผ ๊ตฌ๋งคํ๋ค๋ฉด ์๊ฐ์ด ์ค์ ๋ก ์ผ์ด๋ฉ๋๋ค. ๊ธฐ์กด GPU ์ฉ๋์ด ์๋ค๋ฉด ํ๊ณ ๋น์ฉ์ 0์ ๋ ๊ฐ๊น๊ณ ์์ฒด ํธ์คํ ์ด ์ฆ์ ์ด๊น๋๋ค.
๐Note: ์ด ์์น๋ค์ ์ ๊ฐ ๋น๊ต์ ๋๋ค. ๋๊ธฐ์ ์ ์ํ ํ์๋ GHAS ๊ฐ๊ฒฉ์ ๊ต์ฐจ์ ์ ์ด๋์ํค๊ณ , ๊ธฐ์กด GPU ์ฉ๋์ ๊ทธ๊ฒ์ ์ ๊ฑฐํฉ๋๋ค. ํ๋์จ์ด ๊ตฌ๋งค์ ํ์ ํ๊ธฐ ์ ์ ์ค์ ๋น์ฉ์ผ๋ก ๊ณ์ฐ์ ๋ค์ ํ์ญ์์ค.
๋ณด์ ๋ชจ๋ธ ๋ฐ ๊ฐ์ฌ ํ์ธ
์ฃผ์ ๋ณด์ ์ฃผ์ฅ โ "์์ค ์ฝ๋๋ ์ ๋ ๋คํธ์ํฌ ๋ฐ์ผ๋ก ๋๊ฐ์ง ์๋๋ค" โ ๋ ์ฌ์ค์ด๊ณ , ์ฆ๋ช ๊ฐ๋ฅํ๋ฉฐ, ์ด ์ํคํ ์ฒ์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๋ ผ๊ฑฐ์ ๋๋ค. ๊ฐ์ฌ ํ๋ฉด์ ์กฐ๋ฌ ๊ฒํ ์์ ๋ฐฉ์ดํ ์ ์์ ๋งํผ ์ถฉ๋ถํ ์์ต๋๋ค.
- ๋ชจ๋ธ์ action์ด ์ ์กํ๋ diff๋ง ๋ด
๋๋ค. ํ
๋ ๋ฉํธ๋ฆฌ ์์, ์จ๊ฒจ์ง ๋คํธ์ํฌ ํธ์ถ ์์. GPU ์๋ฒ์ ์์๋ฐ์ด๋ ์ธํฐํ์ด์ค์์
tcpdump๋๋nft monitor๋ก ํ์ธ ๊ฐ๋ฅ โ ์ ์ ์ด์ ์ํ์์๋ ๋ด๋ถ๊ฐ ์๋ ํธ์คํธ๋ก ํฅํ๋ ์์๋ฐ์ด๋ ํจํท์ด ์ ๋ก์ฌ์ผ ํฉ๋๋ค. - ์ ์ฒด ๊ฐ์ฌ ํ๋ฉด์ ํ๋ก์ธ์ค ํ๋์ ๋ก๊ทธ ํ์ผ ํ๋์
๋๋ค.
ollama serve๊ฐ ์ ์ฒด LLM ์คํ์ ๋๋ค. ๊ทธ๊ฒ์ ๋ก๊ทธ(์์ฒญ ๋ณธ๋ฌธ, ์ง์ฐ ์๊ฐ, ๋ชจ๋ธ ๋ก๋ ์ด๋ฒคํธ)๊ฐ ๊ฐ์ฌ ๊ธฐ๋ก์ ๋๋ค. ์ฟผ๋ฆฌํ SaaS ๋์๋ณด๋ ์์, ์ฝ์ ์๋ํํฐ ๋ณด์กด ์ ์ฑ ์์. - ๋คํธ์ํฌ ๊ฒฉ๋ฆฌ๋ ์ง๊ด์ ์
๋๋ค.
ollama serve๋ฅผ ์ฌ์ค ์ธํฐํ์ด์ค์ ๋ฐ์ธ๋ฉํ๊ณ , mTLS ๋๋ ๊ณต์ ์ํฌ๋ฆฟ ์ธ์ฆ์ด ์๋ ๋ฆฌ๋ฒ์ค ํ๋ก์๋ฅผ ์์ ๋ฐฐ์นํ๋ฉฐ, GPU ์๋ฒ์ ๋คํธ์ํฌ ๋ค์์คํ์ด์ค์์ CI ๋ฌ๋ ์๋ธ๋ท ์ธ์ ์์๋ฐ์ด๋ ํธ๋ํฝ์ ๊ฑฐ๋ถํ์ญ์์ค. LLM๋ณ ๋ง๋ฒ ์๋ ํ์ค ์ ๋ก ํธ๋ฌ์คํธ ํจํด. - ๋ชจ๋ธ ๊ฐ์ค์น๋ ์ ๊ณต์๊ฐ ์๋ช ํ ์ ์ ์ํฐํฉํธ์ ๋๋ค. Ollama๋ก ํ ๋ฒ ๋ค์ด๋ก๋ํ๊ณ , ๋ค์ด์ ์คํธ๋ฅผ ๊ณ ์ ํ๋ฉด ๋ชจ๋ธ์ ์ด์์ ์กฐ์น ์์ด ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ ์คํธ๋ฆผ ๋ชจ๋ธ์ด ์๋์ผ๋ก ๊ต์ฒด๋ ์ ์๋ SaaS API๋ณด๋ค ๋ ๊ฐ๋ ฅํ ๊ณต๊ธ๋ง ์คํ ๋ฆฌ์ ๋๋ค.
- ์ปดํ๋ผ์ด์ธ์ค ํ์ธ: ๋ฐ์ดํฐ ์ ๋ก ์ด๊ทธ๋ ์ค๋ SOC 2, ISO 27001, GDPR, EU AI Act ์ ํ์ ์ํ ๋ถ๋ฅ์ ๋ํด ๋ฌธ์ํํ๊ธฐ ์ฝ์ต๋๋ค. ์์ฒด ํธ์คํ ์ปดํ๋ผ์ด์ธ์ค์ ๊ฐ์ฅ ์ด๋ ค์ด ๋ถ๋ถ์ ์ผ๋ฐ์ ์ผ๋ก ์ถ๋ก ์๋ฒ ์์ฒด๋ฅผ ๋ฌธ์ํํ๋ ๊ฒ์ด๋ฉฐ, Ollama์ vLLM ๋ชจ๋ ์ ๋ฌธ์ํ๋์ด ์์ต๋๋ค.
- ๋ชจ๋ธ์ ์ฌ์ ํ ์ฝ๋๋ฅผ ๋ด ๋๋ค. ์์ฒด ํธ์คํ ์ ์๋ํํฐ๋ก๋ถํฐ ํ๋ผ์ด๋นํ๋ค๋ ์๋ฏธ์ด์ง, ๋ชจ๋ธ๋ก๋ถํฐ ํ๋ผ์ด๋นํ๋ค๋ ์๋ฏธ๊ฐ ์๋๋๋ค. ๋ด๋ถ์ ์ํ ์๋๋ฆฌ์ค(GPU ์๋ฒ ์ ๊ทผ ๊ถํ์ด ์๋ ์์ง๋์ด๊ฐ ์ด์ PR diff๊ฐ ํฌํจ๋ ๋ก๊ทธ๋ฅผ ์ฝ๋ ๊ฒ)๋ ์ฌ์ ํ ๋ฒ์ ๋ด์ ์์ต๋๋ค; ๋ก๊ทธ๋ฅผ ์ํํ๊ณ ๊ทธ์ ๋ฐ๋ผ ์ ๊ทผ์ ์ ํํ์ญ์์ค.
์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ํ ํ๋กฌํํธ ์ค๊ณ
์คํ๋ฅ ์ ๊ฐ์ฅ ์ค์ํ ๋จ์ผ ๊ฒฐ์ ์์ธ์ ์์คํ ํ๋กฌํํธ์ ๋๋ค. ๋ง์ฐํ "์ด ์ฝ๋๋ฅผ ๋ฆฌ๋ทฐํ๋ผ" ํ๋กฌํํธ๋ ๋ง์ฐํ ๋ฆฌ๋ทฐ ๋๊ธ์ ์์ฑํ๊ณ , ์ฌ๊ฐ๋ ์๊ณ๊ฐ๊ณผ ๊ตฌ์กฐํ๋ ์ถ๋ ฅ์ด ์๋ ๊ตฌ์ฒด์ ์ธ ํ๋กฌํํธ๋ ์คํ ๊ฐ๋ฅํ ํผ๋๋ฐฑ์ ์์ฑํฉ๋๋ค.
- ๊ตฌ์กฐํ๋ ์ถ๋ ฅ์ ํ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์๊ฒฉํ ์คํค๋ง(
verdict,summary,comments[])๋ก JSON์ ๊ฐ์ ํ์ญ์์ค. ์์ด๋ action์ด ์์ ํ์ ์ถ๋ ฅ ํ์ฑ์ ์ฝ๋์ 30%๋ฅผ ์๋นํ๊ณ ์ค๋ฅ ๋ชจ๋๊ฐ ๋ฏธ๋ฌํด์ง๋๋ค. - ๋ชจ๋ธ์ ๊ตฌ์กฐํ๋ ์ถ๋ ฅ ์ปดํ๋ผ์ด์ธ์ค์ ๋ํ ์ ์ฒด ๊ฐ์ด๋๋ ๊ตฌ์กฐํ๋ ์ถ๋ ฅ ๋ฐ JSON ๋ชจ๋๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
- ์ฌ๊ฐ๋ ์๊ณ๊ฐ์ action์ด ์๋ ํ๋กฌํํธ์ ์์ด์ผ ํฉ๋๋ค. ๋ชจ๋ธ์๊ฒ
critical,high,medium,low๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ์๋ ค์ฃผ๊ณ , ๋ช ์์ ์ผ๋ก ์์ฒญ๋ฐ์ง ์๋ ํ ๋ฎ์ ์ฌ๊ฐ๋ ๊ฒฐ๊ณผ๋ฅผ ํํฐ๋งํ๋๋ก ํ์ญ์์ค. ์ด๊ฒ์ ์์ ํ์ ์ฌ๊ฐ๋ ํ๋์ ๋ํ ์ฌํ ํํฐ๋ง๋ณด๋ค ํจ์ฌ ๋ ์ ๋ขฐํ ์ ์์ต๋๋ค. - ํ๋กฌํํธ๋ฅผ ์์๋ก ๊ณ ์ ํ์ญ์์ค. ์ค์ diff์ ์ด์์ ์ธ ๋ฆฌ๋ทฐ JSON์ด ์๋ 1~2์ท ํ๋กฌํํธ๋ ๋์ผํ ๋ชจ๋ธ๊ณผ ๋์ผํ diff ํฌ๊ธฐ์ ๋ํด ์ ๋ก์ท์ ๋ํญ ๋ฅ๊ฐํฉ๋๋ค.
- "๋ฆฌ๋ทฐ"์ "๋๊ธ" ์๋๋ฅผ ๊ตฌ๋ถํ์ญ์์ค. ๋ฆฌ๋ทฐ์ด ๋๊ธ("์ด๊ฒ์ ํฌํผ๋ก ์ถ์ถํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค")๊ณผ ์ฐจ๋จ์("์ด๊ฒ์ SQL ์ธ์ ์ ์ ๋์ ํฉ๋๋ค")๋ CI์์ ๋ค๋ฅธ ์กฐ์น๊ฐ ํ์ํฉ๋๋ค. ๊ตฌ์กฐํ๋ ์ถ๋ ฅ์ ๋ ์ด๋ธ์ ๋ถ์ด๊ณ action์ด ์ฐจ๋จ์์์๋ง ์ฐจ๋จํ๋๋ก ํ์ญ์์ค.
- ์ธ์ด๋ณ ํ๋กฌํํธ ๋ณํ์ ์ผ์ ๊ท๋ชจ๋ถํฐ ๋์์ด ๋ฉ๋๋ค. ๋ค๊ตญ์ด ์ฝ๋๋ฒ ์ด์ค๋ ๊ด๋ จ ์ธ์ด ๊ด์ฉ๊ตฌ(ํ์ด์จ๋ ๋ ๊ด์ฉ์ Rust)๋ฅผ ์ฐธ์กฐํ๋ ํ๋กฌํํธ์์ ์ด์ต์ ์ป์ต๋๋ค. ๊ฐ๋ฐ์ ~25๋ช ๋ฏธ๋ง์์๋ ์ ํ ์ฌํญ์ด๋ฉฐ, ๊ทธ ์ด์์์๋ ๊ฐ์น๊ฐ ์์ต๋๋ค.
- ํ๋กฌํํธ ์์ง๋์ด๋ง ๊ธฐ์ด ์ฌ์ธต ๋ด์ฉ โ ์์คํ ๋ ์ฌ์ฉ์ ํ๋กฌํํธ, ๊ตฌ์กฐํ๋ ์ถ๋ ฅ, ํจ์ท ํ๋กฌํํ โ ์ ์์คํ ํ๋กฌํํธ ๋ ์ฌ์ฉ์ ํ๋กฌํํธ: ์ฐจ์ด์ ์ ๋ฌด์์ ๋๊น?๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
๊ฐ๋ฐ์ ์ ๋ขฐ๋ฅผ ์นจ์ํ์ง ์์ผ๋ฉด์ ์คํ ๊ด๋ฆฌํ๊ธฐ
์คํ์ LLM ์ฝ๋ ๋ฆฌ๋ทฐ์ ์ด์ ๋น์ฉ์ ๋๋ค. 5% ๋น์จ์ ํ์ฉ ๊ฐ๋ฅํ๊ณ , 20%๋ ํ์ฉํ ์ ์์ผ๋ฉฐ, ์ฐจ์ด๋ ์ฃผ๋ก ํ๋กฌํํธ ๋ฐ๋ณต๊ณผ ํผ๋๋ฐฑ ๋ฃจํ์ ์์ง ๋ชจ๋ธ์ ์์ง ์์ต๋๋ค.
- "์ฐจ๋จ" ์๊ณ๊ฐ์ ๋๊ฒ ์ค์ ํ์ญ์์ค. ์ฌ์ํ ๋ฆฐํธ ๋ฌธ์ ์์
์ฐจ๋จํ์ ์ด ๋ฐ๋๋๋ฉด ๊ฐ๋ฐ์๋ค์ด ๊ฒ์ฌ๋ฅผ ๋ฌด์ํ๋๋ก ํ๋ จ๋ฉ๋๋ค.์ฐจ๋จ์ ๋ณด์ ๋ฌธ์ , ์คํจํ ํ ์คํธ, ๋ช ๋ฐฑํ ์ ํ์ฑ ์ค๋ฅ์๋ง ์์ฝํ์ญ์์ค. - ๋น์ฐจ๋จ ๋๊ธ์ ๋น์ฉ์ด ๋ฎ๊ฒ ๋ง๋์ญ์์ค. ๋ชจ๋ธ์ด ํ์ ํ์ง ๋ชปํ๋ ์ธ๋ผ์ธ ๋๊ธ์ ("์ ์ ์ " / "๊ณ ๋ คํ์ญ์์ค")๋ก ๋ ์ด๋ธ๋์ด์ผ ํ๋ฏ๋ก ์์ฑ์๊ฐ ์์ ์์ด ๋น ๋ฅด๊ฒ ๋ฌด์ํ ์ ์์ต๋๋ค.
- ์ฒซ ๋ฌ์ ํผ๋๋ฐฑ ๋ฃจํ๋ฅผ ๊ตฌ์ถํ์ญ์์ค. ๊ฐ ๋ฆฌ๋ทฐ ๋๊ธ์ ๋ฐ์(๐ / ๐)์ ์ถ๊ฐํ์ญ์์ค. ์ฃผ๊ธฐ์ ์ผ๋ก(์ฃผ 1ํ๊ฐ ํจ๊ณผ์ ) ๐๋ฅผ ๊ฒํ ํ๊ณ ๊ฐ์ฅ ํํ ์คํ ์นดํ ๊ณ ๋ฆฌ์ ๋ํ ๋ช ์์ ์ธ "X๋ฅผ ํ๋๊ทธํ์ง ๋ง์ญ์์ค" ์ง์๋ก ์์คํ ํ๋กฌํํธ๋ฅผ ์ ๋ฐ์ดํธํ์ญ์์ค.
- PR๋น ๋๊ธ ๋ณผ๋ฅจ์ ์ ํํ์ญ์์ค. ๋จ์ผ PR์ LLM์ผ๋ก๋ถํฐ 5~10๊ฐ ์ด์์ ๋๊ธ์ ๋ฐ์์๋ ์ ๋ฉ๋๋ค; ๊ทธ ์ด์์ด ๋๋ฉด ์ ํธ ๋ ์ก์๋น๊ฐ ๋ฌด๋์ง๋๋ค. ํ๋กฌํํธ ์์ค์์ action์ ์ ํํ์ญ์์ค("์ต๋ N๊ฐ์ ๋๊ธ์ ๋ฐํํ์ญ์์ค").
- ์ฃผ๊ฐ ํ์ -๋-๋ณํฉ ์๊ด๊ด๊ณ๋ฅผ ์ถ์ ํ์ญ์์ค.
์ฐจ๋จํ์ ์ 80%๊ฐ ์ด์จ๋ ๋ณํฉ๋๋ค๋ฉด ์๊ณ๊ฐ์ด ๋๋ฌด ๊ณต๊ฒฉ์ ์ ๋๋ค.๋๊ธํ์ ์ 0%๊ฐ ์ธ๊ฐ ์กฐ์น๋ฅผ ๋ฐ๋๋ค๋ฉด ํ๋กฌํํธ๊ฐ ๋ ธ์ด์ฆ๋ฅผ ์์ฑํ๊ณ ์์ต๋๋ค.
๋ ๋ฒ์งธ ๋ฌ์ ๋ํ๋๋ ์ด์์ ํจ์
์ค์ ์ ์ฃผ๋ชฉ์ ๋ฐ๊ณ , ์ด์์ ๋ฌด์๋ฉ๋๋ค. ๋ค์ ์คํจ๋ค์ ์ด๊ธฐ ํ๋๋ฌธ ์ดํ ํ์ด ํ๋ก์ ํธ๋ฅผ ํฌ๊ธฐํ๊ฒ ๋ง๋๋ ๊ฒ๋ค์ ๋๋ค.
- ๋ชจ๋ธ ์
๋ฐ์ดํธ๊ฐ ํ๋กฌํํธ๋ฅผ ๊นจ๋จ๋ฆฝ๋๋ค. Qwen3-Coder์ ์ ๋ฒ์ ์ด ๋ฏธ๋ฌํ๊ฒ ์ถ๋ ฅ ํ์์ ๋ฐ๊พธ๊ณ , CI์์ ๊ตฌ์กฐํ๋ JSON ํ์ฑ์ด ์คํจํ๊ณ , ๋ฆฌ๋ทฐ๊ฐ ๊ฒ์๋ฅผ ์ค๋จํฉ๋๋ค.
ollama show <model> --modelfile๋ก ๋ชจ๋ธ ๋ค์ด์ ์คํธ๋ฅผ ๊ณ ์ ํ๊ณ , ํ๋ก๋ชจ์ ์ ์ ์คํ ์ด์ง ๋ธ๋์น์์ ์ ๋ฐ์ดํธํ์ญ์์ค. - ์ฅ๊ธฐ๊ฐ ๊ฐ๋ ์ GPU ๋ฉ๋ชจ๋ฆฌ ๋จํธํ. 24/7 ๊ฐ๋ํ๋ GPU ์๋ฒ๋ ๋ช ์ฃผ๊ฐ ์ด์ ํ VRAM์ ๋จํธํํ์ฌ ์ ํ ๋น์ ๊ฑฐ๋ถํ ์ ์์ต๋๋ค. cron ์์
์ผ๋ก ์ฃผ 1ํ
ollama serve๋ฅผ ์ฌ์์ํ์ญ์์ค; ์ ๋ ดํ๊ณ ์ด ์ค๋ฅ ๋ชจ๋๋ฅผ ์์ ํ ๋ฐฉ์งํฉ๋๋ค. - CI ๋ฌ๋ ๊ฒฝํฉ. LLM ์๋ฒ์ ๋ค๋ฅธ CI ์์ ์ ๋ชจ๋ ํธ์คํ ํ๋ ์์ฒด ํธ์คํ ๋ฌ๋๋ ๋น๋ ๋ถํ ์ ๋ฆฌ๋ทฐ ์ง์ฐ ์๊ฐ์ด ๊ธ์ฆํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ํ ๊ท๋ชจ๊ฐ ๊ฐ๋ฐ์ ~25๋ช ์ ์ด๊ณผํ๋ฉด ๋ฌ๋์ GPU ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ์ญ์์ค.
- Diff ํฌ๊ธฐ ์ฆ๊ฐ. PR ํฌ๊ธฐ๊ฐ ์ ์ ์ปค์ง๊ณ ; ๊ฒฐ๊ตญ PR์ด ๋ชจ๋ธ์ ์ค์ ์์ ์ปจํ ์คํธ๋ฅผ ์ด๊ณผํ์ฌ ๋ฆฌ๋ทฐ๊ฐ ์๋์ผ๋ก ์ ํ๋ฉ๋๋ค. ~30K ํ ํฐ ์ด์์ diff๋ฅผ ๋ถํ ํ๊ฑฐ๋ ์๋ผ๋ด๊ณ ์์ฑ์์๊ฒ ๊ฒฝ๊ณ ํ๋ action์ ๊ฐ๋๋ฅผ ์ถ๊ฐํ์ญ์์ค.
- ์ ๋ ฅ ๋ฐ ๋๊ฐ. ์ง์์ ์ธ ๋ถํ์ RTX 4090์ ์ถ๋ก ์ ~350W๋ฅผ ์๋นํ๊ณ ์๋นํ ์ด์ ๋ฐ์์ํต๋๋ค. ๋ฅ๋์ ์ธ ๋๊ฐ์ด ์๋ ์บ๋น๋ ํฌ๊ธฐ์ ์๋ฒ์ค์ GPU๋ฅผ ์ค๋กํ๋งํ๊ณ , ์ค๋กํ๋ง์ ์ง์ฐ ์๊ฐ ๋น์ฉ์ด ๋ค๋ฉฐ, ๊ฐ๋ฐ์๋ค์ด ์์์ฑ๋๋ค.
- ์ํ์ง ๋ก๊ทธ ์ํ. Ollama๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ ์์ฒญ ๋ณธ๋ฌธ์ ๋ก๊น ํฉ๋๋ค. 3๊ฐ์์ PR ๋ฆฌ๋ทฐ ํ ๋ก๊ทธ ํ์ผ์ ํฌ๊ณ ๊ณผ๊ฑฐ PR diff๋ฅผ ์ผ๋ฐ ํ ์คํธ๋ก ํฌํจํฉ๋๋ค. ์ฃผ 1ํ ๋ก๊ทธ๋ฅผ ์ํํ์ญ์์ค; ๋ฐ์ดํฐ ๋ณด์กด ์ ์ฑ ์ ๋ฐ๋ผ ์์นด์ด๋ธํ๊ฑฐ๋ ์ญ์ ํ์ญ์์ค.
๋ก์ปฌ LLM ์ฝ๋ ๋ฆฌ๋ทฐ ์ค์ ์ ํํ ์ค์
- ์ค์ 1: 16 GB GPU์์ 7B ๋ชจ๋ธ๋ก ์์ํ๊ธฐ. Qwen3-Coder 7B ๋ฆฌ๋ทฐ๋ 30B๋ณด๋ค ํ์ ํ ๋์ฉ๋๋ค; ๊ฐ๋ฐ์๋ค์ ๋น ๋ฅด๊ฒ ์ ๋ขฐ๋ฅผ ์๊ณ ํ๋ก์ ํธ๊ฐ ํฌ๊ธฐ๋ฉ๋๋ค. 30B๋ฅผ ํธ์คํ ํ ์ ์๋ค๋ฉด, ์์ฐ์ ํ๋ณดํ๋ ๋์ ์ฒ์ 6๊ฐ์๊ฐ GPU๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๊ฑฐ๋ ํด๋ผ์ฐ๋ API๋ฅผ ์ฌ์ฉํ์ญ์์ค.
- **์ค์ 2: ์ฒซ๋ ๋ถํฐ
์ฐจ๋จํ์ ์ผ๋ก PR ์ฐจ๋จํ๊ธฐ.** ์ฒซ ๋ฌ์ ๋ณด์ ๊ธฐ๊ฐ์ ๋๋ค; ์คํ๋ฅ ์ ์ธก์ ํ ๋๊น์ง ๋ชจ๋ ์ถ๋ ฅ์ ์๋ฌธ์ผ๋ก ์ทจ๊ธํ์ญ์์ค. ~5% ๋ฏธ๋ง์ผ๋ก ๋น์จ์ด ๋ฎ์์ง ํ์๋ง ์ฐจ๋จ์ผ๋ก ํ๋ก๋ชจ์ ํ์ญ์์ค. - **์ค์ 3: ์ธ์ฆ ์์ด
ollama serve๋ฅผ0.0.0.0:11434์ ๋ ธ์ถํ๊ธฐ.** ์ด๊ฒ์ Redis๋ฅผ ๊ณต์ฉ ์ธํฐํ์ด์ค์ ๋ฐ์ธ๋ฉํ๋ ๊ฒ์ ํด๋นํ๋ LLM ์๋์ ๋ฑ๊ฐ๋ฌผ์ ๋๋ค. ์ฌ์ค ์ธํฐํ์ด์ค์ ๋ฐ์ธ๋ฉํ๊ณ ํธ์คํธ ๊ฐ ๋ ธ์ถ ์ ์ ์ธ์ฆ์ ์์ ๋ฐฐ์นํ์ญ์์ค. - ์ค์ 4: ์บ์ ์๋ตํ๊ธฐ. ๊ฐ CI ์คํ์์ ๋ณ๊ฒฝ๋์ง ์์ ํ์ผ์ ๋ค์ ๋ฆฌ๋ทฐํ๋ฉด ์ผ๋ฐ์ ์ธ PR์์ ์ถ๋ก ์์ฐ์ ~80%๋ฅผ ๋ญ๋นํฉ๋๋ค. ์๊ท๋ชจ ํ์ผ ํด์ + diff ํด์ ์บ์(Redis ๋๋ SQLite)๋ ๋ฆฌ๋ทฐ ์ง์ฐ ์๊ฐ๊ณผ GPU ๋ถํ๋ฅผ ๊ธ๊ฒฉํ ์ค์ ๋๋ค.
- ์ค์ 5: ๋์ผํ GPU์์ ํ์ต ์์ ์คํํ๊ธฐ. ํ์ต์ VRAM์ ํ๊ณ๊น์ง ๋ฐ์ด๋ถ์ฌ ๋ฆฌ๋ทฐ ๋ชจ๋ธ์ ๊ตถ๊น๋๋ค. ๋ณ๋์ GPU๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ๊ผญ ๊ณต์ ํด์ผ ํ๋ค๋ฉด PR ํผํฌ ์๊ฐ๊ณผ ๊ฒน์น์ง ์๋ ์๊ฒฉํ ์ผ์ ์ผ๋ก ํ์ต์ ์คํํ์ญ์์ค.
- ์ค์ 6: ํผ๋๋ฐฑ ๋ฃจํ ์์ด GitHub Action ๊ตฌ์ถํ๊ธฐ. ๐/๐ ๋ฐ์์ด ์๋ ๋ฆฌ๋ทฐ ์์คํ ์ ๊ฐ์ ๋ ์ ์์ต๋๋ค. ์ฒซ ์ฃผ์ ๋ฃจํ๋ฅผ ๊ตฌ์ถํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ฉฐ, ์๋ณ๋ก ํ๋กฌํํธ๋ฅผ ๋ฐ๋ณตํ์ญ์์ค.
์ถ์ฒ
- Ollama ๋ฌธ์ โ
/api/chat,/api/generate, ๊ตฌ์กฐํ๋ ์ถ๋ ฅ, ๋ชจ๋ธ ๊ด๋ฆฌ์ ๋ํ ๊ณต์ HTTP API ์ฐธ์กฐ. - vLLM ๋ฌธ์ โ ๊ณ ์ฑ๋ฅ ์ถ๋ก ์๋ฒ ๋ฌธ์; ๋์ ๋์์ฑ์ ๊ฐ์ง ํ์ ์ํ Ollama ์ดํ ์ ๊ทธ๋ ์ด๋ ๊ฒฝ๋ก.
- GitHub Actions ๋ฌธ์ โ ์์ฒด ํธ์คํ ๋ฌ๋, ์ํฌ๋ฆฟ, ์ ์ํฌํ๋ก์์ ์ฌ์ฉ๋ Actions JavaScript SDK์ ๋ํ ๊ณต์ ์ฐธ์กฐ.
- GitHub Advanced Security ๊ฐ๊ฒฉ โ ๋น์ฉ ๋น๊ต๋ฅผ ์ํ ์ ๊ฐ ์ฐธ์กฐ; ์ค์ ํ์๋ ์กฐ๊ฑด๊ณผ ๋์กฐํ์ฌ ํ์ธํ์ญ์์ค.
- Qwen3-Coder ๋ชจ๋ธ ์นด๋ โ ๊ถ์ฅ ๋ฆฌ๋ทฐ ๋ชจ๋ธ์ ์ํคํ ์ฒ, ์ปจํ ์คํธ ์ฐฝ, ๋ผ์ด์ ์ค ์กฐ๊ฑด.
- GitLab CI/CD ์ฐธ์กฐ โ GitLab ํ์ ์ํ ๋๋ฑํ ์ฐธ์กฐ; ์ํฌํ๋ก์ LLM ํธ์ถ ๋ถ๋ถ์ ๋์ผํฉ๋๋ค.
FAQ
๋จ์ผ GPU ์๋ฒ๊ฐ ๊ฐ๋ฐ์ 50๋ช ์ CI๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๊น?
๋จ์ผ 24 GB GPU(RTX 4090)๋ ๊ฐ๋ฐ์ 15~25๋ช ์ ํธ์ํ๊ฒ ์ฒ๋ฆฌํฉ๋๋ค; ๊ฐ๋ฐ์ 50๋ช ์๋ 48 GB ์นด๋(L40S, A6000 Ada)๊ฐ ํ์ํ๊ฑฐ๋ ๋์ผ ํ๋์จ์ด์์ Ollama์์ vLLM์ผ๋ก ์ ํํด์ผ ํฉ๋๋ค. ๋ณ๋ชฉ์ PR ์ง์ค ์๊ฐ(์์์ผ ์์นจ, ์คํ๋ฆฐํธ ์ข ๋ฃ)์ ๋์์ฑ์ด๋ฉฐ, ์ ์ ์ํ ์ฒ๋ฆฌ๋์ด ์๋๋๋ค. ๊ฐ๋ฐ์ 100๋ช ์ด์์๋ ๋ฉํฐ GPU ๋๋ H100๊ธ ํ๋์จ์ด๋ฅผ ๊ณํํ์ญ์์ค.
๋ก์ปฌ ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ PR ์ง์ฐ ์๊ฐ์ ์ํฅ์ ์ค๋๊น?
์ผ๋ฐ์ ์ผ๋ก ๊ทธ๋ ์ง ์์ต๋๋ค โ ๋จ์ผ 24 GB GPU์์ ์ผ๋ฐ์ ์ธ 200์ค diff์ ๋ฆฌ๋ทฐ ์ง์ฐ ์๊ฐ์ 10~30์ด์ด๋ฉฐ, PR ์์ฑ์์ ๋๊ธฐ ์๊ฐ์ ํจ์ฌ ์ค๋ ๊ฑธ๋ฆฌ๋ ๋ค๋ฅธ CI ์์ (๋น๋, ํ ์คํธ, ๋ฆฐํธ)์ด ์ง๋ฐฐํฉ๋๋ค. ์์ธ๋ ๋งค์ฐ ํฐ PR(diff ํ ํฐ ~30K ์ด์)์ด๋ฉฐ, ๋ฆฌ๋ทฐ๊ฐ 60~90์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค; action ์์ค์์ ๊ทธ๊ฒ๋ค์ ์๋ผ๋ด๊ฑฐ๋ ๋ถํ ํ์ญ์์ค.
๋ชจ๋ธ์ด ๋ณด๋ ๊ฒ์ ์ด๋ป๊ฒ ๊ฐ์ฌํฉ๋๊น?
Ollama๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ก๊ทธ ํ์ผ์ ๊ฐ ์์ฒญ ๋ณธ๋ฌธ์ ๊ธฐ๋กํฉ๋๋ค(์์น๋ OS์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค; systemd์์ journalctl -u ollama ๋๋ Ollama ๋ก๊ทธ ๋๋ ํ ๋ฆฌ๋ฅผ ํ์ธ). ๋ฆฌ๋ทฐ์ ๊ฐ๋ ๊ฐ PR diff๊ฐ ๊ทธ ๋ก๊ทธ์ ์์ต๋๋ค. GPU ์๋ฒ์ ์์๋ฐ์ด๋ ์ธํฐํ์ด์ค์์ tcpdump์ ๊ฒฐํฉํ์ฌ ์ ๋ก ๋ฐ์ดํฐ ์ด๊ทธ๋ ์ค๋ฅผ ์ฆ๋ช
ํฉ๋๋ค. ์ ์ฒด ๊ฐ์ฌ ํ๋ฉด์ ํ๋ก์ธ์ค ํ๋์ ๋ก๊ทธ ํ์ผ ํ๋์
๋๋ค โ SaaS ์ฝ๋ ๋ฆฌ๋ทฐ API๋ณด๋ค ๊ฐ์ฌํ๊ธฐ ํจ์ฌ ๋จ์ํฉ๋๋ค.
๋ก์ปฌ ๋ชจ๋ธ ์ถ๋ ฅ์ ๊ธฐ๋ฐ์ผ๋ก PR์ ์ฐจ๋จํ ์ ์์ต๋๊น?
์. action์ verdict ํ๋๋ฅผ ๋ฐํํฉ๋๋ค; ํ์ ์ด ์ฐจ๋จ์ด๋ฉด GitHub Action์ด 0์ด ์๋ ์ฝ๋๋ก ์ข
๋ฃํ๊ณ , ์ด๋ก ์ธํด ๊ฒ์ฌ๊ฐ ์คํจํ๋ฉฐ, ๋ธ๋์น ๋ณดํธ ๊ท์น์ด ๊ฒ์ฌ ํต๊ณผ๋ฅผ ์๊ตฌํ๋ฉด ๋ณํฉ์ด ์ฐจ๋จ๋ฉ๋๋ค. ๊ถ์ฅ ์ฌํญ์ ์ฒซ ๋ฌ ๋์ ์ฐจ๋จ์ ๋นํ์ฑํ๋ ์ฑ๋ก ์์ํ๊ณ (์๋ฌธ ์ ์ฉ), ์คํ๋ฅ ์ ์ธก์ ํ๋ฉฐ, ~5% ๋ฏธ๋ง์ผ๋ก ๋ฎ์์ง ํ ์ฐจ๋จ์ผ๋ก ํ๋ก๋ชจ์
ํ๋ ๊ฒ์
๋๋ค.
GitLab CI์ ํจ๊ป ์๋ํฉ๋๊น?
์ โ ์ํคํ
์ฒ๊ฐ ๋์ผํฉ๋๋ค. GitHub Action์ Ollama ์๋ํฌ์ธํธ์ ๋์ผํ curl์ ์คํํ๊ณ GitLab API๋ฅผ ํตํด ๋ณํฉ ์์ฒญ์ ์๋ต์ ๋ค์ ๊ฒ์ํ๋ GitLab CI ์์
์ผ๋ก ๊ต์ฒดํ์ญ์์ค. ๋ชจ๋ธ, ํ๋กฌํํธ, ์บ์, ๋ณด์ ๋ชจ๋ธ, ํ๋์จ์ด ์ฌ์ด์ง์ด ๋ชจ๋ ๋์ผํฉ๋๋ค. Bitbucket Pipelines, Jenkins, Buildkite๋ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค.
ํ์ดํ๋ผ์ธ์ ๊นจ๋จ๋ฆฌ์ง ์๊ณ ๋ชจ๋ธ์ ์ด๋ป๊ฒ ์ ๋ฐ์ดํธํฉ๋๊น?
ํ๋ก๋์
CI๊ฐ ์ ํํ ๋ฒ์ ์ ์ฌ์ฉํ๋๋ก ollama show <model> --modelfile๋ก ๋ชจ๋ธ ๋ค์ด์ ์คํธ๋ฅผ ๊ณ ์ ํ์ญ์์ค. ์ ๋ชจ๋ธ ๋ฒ์ ์ด ๋์ฐฉํ๋ฉด ์คํ
์ด์ง ์๋ฒ์ ๋ค์ด๋ก๋ํ๊ณ , ๋ํ์ ์ธ ์๊ท๋ชจ PR diff ์ธํธ๋ฅผ ์คํํ๋ฉฐ, ๊ตฌ์กฐํ๋ ์ถ๋ ฅ์ ํ๋ก๋์
๋ฒ์ ๊ณผ ๋น๊ตํ๊ณ , ํ๊ท ํ
์คํธ ์ธํธ๊ฐ ํต๊ณผํ ํ์๋ง ํ๋ก๋ชจ์
ํ์ญ์์ค. ๋ชจ๋ธ ์
๋ฐ์ดํธ๋ฅผ ๋ค๋ฅธ ์์กด์ฑ ์
๋ฐ์ดํธ์ ๋์ผํ๊ฒ ์ทจ๊ธํ์ญ์์ค.
๋ฆฌ๋ทฐ ์ธ์ ์ฝ๋ ์์ฑ์๋ ์ฌ์ฉํ ์ ์์ต๋๊น?
์, ํ์ง๋ง ์ํฌ๋ก๋๊ฐ ๋์ผํ GPU๋ฅผ ๊ฒฝ์ํ๋ฉฐ ์ง์ฐ ์๊ฐ ํน์ฑ์ด ๋ค๋ฆ ๋๋ค. ์ฝ๋ ๋ฆฌ๋ทฐ๋ ๋น๋๊ธฐ์ ์ด๊ณ 30์ด ์๋ต์ ํ์ฉํฉ๋๋ค; ์๋ํฐ์์์ ๋ํํ ์ฝ๋ ์์ฑ์ 2์ด ๋ฏธ๋ง์ ์ง์ฐ ์๊ฐ์ด ํ์ํฉ๋๋ค. ๊ถ์ฅ ํจํด: ๊ฐ๋ฐ์ ๋จธ์ ์ ์๋ํฐ ์๋ ์์ฑ์๋ ๋ ์์ ๋ชจ๋ธ(Qwen3-Coder 7B)์ ์ฌ์ฉํ๊ณ , CI์์ ๋ฆฌ๋ทฐ๊ธ ์ํฌ๋ก๋๋ฅผ ์ํด ์ ์ฉ GPU ์๋ฒ๋ฅผ ์์ฝํ์ญ์์ค.
GPU ์๋ฒ์ ๋ณด์ ๋ชจ๋ธ์ ๋ฌด์์ ๋๊น?
๋ค๋ฅธ ๋ด๋ถ ์๋น์ค์ฒ๋ผ ์ทจ๊ธํ์ญ์์ค: ์ถ๋ก ์๋ฒ๋ฅผ ์ฌ์ค ์ธํฐํ์ด์ค์ ๋ฐ์ธ๋ฉํ๊ณ , ์์ ์ธ์ฆ(mTLS, ๊ณต์ ์ํฌ๋ฆฟ ํ ํฐ ๋๋ VPN ์ ์ฉ ์ ๊ทผ)์ ๋ฐฐ์นํ๋ฉฐ, ๊ธฐ๋ณธ ๊ฑฐ๋ถ๋ก ์์๋ฐ์ด๋ ํธ๋ํฝ์ ์ ํํ๊ณ , ์๊ฒฉ ์ฆ๋ช ์ ์ํํ์ญ์์ค. LLM๋ณ ์ถ๊ฐ ์ฌํญ์ ๋ชจ๋ธ ๊ฐ์ค์น์ ์ถ์ฒ๋ฅผ ๊ฐ์ฌํ๋ ๊ฒ์ ๋๋ค โ ๋ค์ด์ ์คํธ๋ฅผ ๊ณ ์ ํ๊ณ , ์์ค๋ฅผ ๋ฌธ์ํํ๋ฉฐ, ์ฃผ๊ธฐ์ ์ธ ํจํท ์บก์ฒ๋ก ์ ๋ก ๋ฐ์ดํฐ ์ด๊ทธ๋ ์ค๋ฅผ ํ์ธํ์ญ์์ค.
์ฌ๋ฌ ์ ์ฅ์๊ฐ GPU ์๋ฒ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๊น?
์ โ GPU ์๋ฒ๋ ๋จ์ง HTTP ์๋ํฌ์ธํธ์ผ ๋ฟ์ ๋๋ค. ์๋ฒ์ ์ฉ๋์ด ์๋ ํ ์์์ ์์ ์ ์ฅ์๊ฐ ํธ์ถํ ์ ์์ต๋๋ค. ํ์ฑ ์ ์ฅ์๊ฐ 10๊ฐ ์ด์์ธ ์กฐ์ง์ ๊ฒฝ์ฐ, ํ๋์ ์๋๋ฌ์ด ์ ์ฅ์(๋ํ ๋ชจ๋ ธ๋ ํฌ, ๋น๋ฒํ ๊ฐ์ ํธ์)๊ฐ ๋ค๋ฅธ ์ ์ฅ์๋ฅผ ๊ตถ๊ธฐ์ง ์๋๋ก Ollama ์์ ๋ฆฌ๋ฒ์ค ํ๋ก์์ ์ ์ฅ์๋ณ ์๋ ์ ํ์ ์ถ๊ฐํ์ญ์์ค.
CI์์ ์คํ์ ์ด๋ป๊ฒ ๊ด๋ฆฌํฉ๋๊น?
์ธ ๊ฐ์ง ๋ ์ด์ด. ์ฒซ์งธ, ํ๋กฌํํธ ์ค๊ณ โ ๋์ ์ฌ๊ฐ๋ ์๊ณ๊ฐ์ ์ค์ ํ๊ณ , ๊ตฌ์กฐํ๋ ์ถ๋ ฅ์ ๊ฐ์ ํ๋ฉฐ, ์ ์ ์ ๊ฒฐ๊ณผ์ ๋ ์ด๋ธ์ ๋ถ์ด์ญ์์ค. ๋์งธ, action ์์ค ํํฐ๋ง โ severity >= "high"์์๋ง ์ฐจ๋จ; ์ค๊ฐ/๋ฎ์์ ๋๊ธ๋ก ํ์ํ์ญ์์ค. ์
์งธ, ํผ๋๋ฐฑ ๋ฃจํ โ ๊ฐ๋ฐ์๊ฐ ๊ฐ ๋๊ธ์ ๐/๐๋ก ๋ฐ์ํ๊ฒ ํ๊ณ , ์ฃผ 1ํ ๐๋ฅผ ๊ฒํ ํ์ฌ ๊ฐ์ฅ ํํ ์คํ ์นดํ
๊ณ ๋ฆฌ๋ฅผ ์ต์ ํ๋๋ก ์์คํ
ํ๋กฌํํธ๋ฅผ ์
๋ฐ์ดํธํ์ญ์์ค. ํ ๋ฌ์ ์กฐ์ ํ 5~10% ๋น์จ์ ์์ํ์ญ์์ค; ์ง์์ ์ธ ๋ฐ๋ณต์ผ๋ก 5% ๋ฏธ๋ง์ด ๋ฌ์ฑ ๊ฐ๋ฅํฉ๋๋ค.