3 min read

Note

Table of Contents

Automation

CodeQL

CodeQL์€ GitHub Actions๋กœ ์†์‰ฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
์ฝ”๋“œ์˜ ์ทจ์•ฝ์ ์„ ์ฐพ์•„๋‚ด๊ณ , ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๋” ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค. ์›๋ž˜๋Š” PR ์ƒ์„ฑ๋งˆ๋‹ค CodeQL์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๋ฐฉ์‹์„ ๋งŽ์ด ์ฑ„์šฉํ–ˆ์ง€๋งŒ, ์ฃผ๊ธฐ์  ์‹คํ–‰์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ ์กฐ์ • ์ค‘์ž…๋‹ˆ๋‹ค.

  • Private ์ €์žฅ์†Œ์—์„œ๋Š” ์œ ๋ฃŒ ๊ฒฐ์ œ๋ฅผ ํ•ด์•ผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๊ถŒํ•œ ๋ฌธ์ œ๋กœ ์ธํ•ด ๋‚ด๋ถ€ GITHUB_TOKEN์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ PR ์ƒ์„ฑ ์ด๋ฒคํŠธ ๋“ฑ์œผ๋กœ๋Š” CodeQL์ด ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์˜๋„๋œ ์‚ฌํ•ญ์ด๋ฉฐ, PAT์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.1

AI Code Assistant

Gemini CLI

Gemini CLI๋Š” Google์—์„œ ํ„ฐ๋ฏธ๋„์„ ํ†ตํ•ด Gemini๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ฝ”๋”ฉ ๋“ฑ์˜ ์ž‘์—…์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” CLI ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

ํ˜„ ์‹œ์  ๋งค์ผ 1000๋ฒˆ์˜ Request๊ฐ€ ๋ฌด๋ฃŒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋น„์šฉ ๋ฉด์—์„œ ๋งค์šฐ ๋งค๋ ฅ์ ์ด์ง€๋งŒ,
๋‹ค๋ฅธ AI ์„œ๋น„์Šค์— ๋น„ํ•ด ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๊ณ  ๋ฌด์—‡๋ณด๋‹ค ๊ธฐ์กด ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ง€ํ‚ค์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„ ์‚ฌ์šฉ์ด ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ Gemini CLI๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ์ผ€์ด์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์ฒ˜์Œ๋ถ€ํ„ฐ PoC๋‚˜ MVP๋ฅผ ๋งŒ๋“ค ๋•Œ: ์ง€์ผœ์•ผ ํ•  ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋А ์ •๋„ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋งค์šฐ ๊ฐ„๋‹จํ•œ ์ž‘์—…

๊ทธ ์™ธ์—๋„ Gemini CLI๋ฅผ Claude Code์— MCP ์„œ๋ฒ„๋กœ ์—ฐ๊ฒฐํ•ด์„œ ์ผ๋ถ€ ์ž‘์—…์„ Gemini์— ์œ„์ž„ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.2

:::warning ์ฃผ์˜ํ•  ์ 

์ตœ๊ทผ์— Gemini CLI๋‚˜ ๊ธฐํƒ€ AI ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด Google์—์„œ ์ž์ฒด์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.3
ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์•„์ง๊นŒ์ง€ ๊ณผ๊ธˆ์ด ๋˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ, ์œ ์‹ฌํžˆ ๊ด€์ฐฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

:::

Claude Code

Claude Code๋Š” Anthropic์—์„œ ์ œ๊ณตํ•˜๋Š” ์ฝ”๋”ฉ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
ํ˜„์กดํ•˜๋Š” ๋ชจ๋“  AI ์ฝ”๋”ฉ ๋„๊ตฌ ์ค‘ ๊ฐ€์žฅ ์„ฑ๋Šฅ์ด ์ข‹๊ณ , ๊ทธ๋ƒฅ ์จ๋„ ์ฒด๊ฐ ํšจ๊ณผ๊ฐ€ ํฝ๋‹ˆ๋‹ค.
์ €๋„ ํ˜„์žฌ๋Š” ์ „๋ฐฉ์œ„์ ์œผ๋กœ Claude Code๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” ์ถ”๊ฐ€์ ์œผ๋กœ ์œ ์šฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

  1. ccusage
    • Claude Code ์‚ฌ์šฉ๋Ÿ‰์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์„ธ์…˜์˜ ์‚ฌ์šฉ๋Ÿ‰๊ณผ ์ž”์—ฌ ํ•œ๋„๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Claude Code์—์„œ ์ง์ ‘ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์•„๋‹ˆ์ง€๋งŒ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ๋‹ค๋งŒ, Claude Code ๊ธฐ๋ก์ด ๋กœ์ปฌ์— ๊ธฐ๋ก๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์—์„œ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋น„์šฉ์€ ๋”ฐ๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.
  2. Subagent
    • ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ €์žฅํ•ด ๋‘๊ณ  ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋ฐ˜๋ณต ์ž‘์—…์ด๋‚˜ ์ž๋™ํ™”์— ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ์—…๋ฌด์—์„œ ์กฐ๊ธˆ ๋” ์œ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด๋‚˜ ํŒ€์›๋“ค์—๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด Repository์—์„œ ์˜ˆ์‹œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํšจ๊ณผ์ ์ด๋ผ ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ

  • ๋ณต์žกํ•œ ๋กœ๊ทธ ๋ถ„์„
  • ๋‹จ์ˆœํ•˜๊ณ  ๋ช…๋ฃŒํ•œ ๋ฐ˜๋ณต ์ž‘์—…
  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ, TDD
  • ๋ฌธ์„œ์™€ ์„ค๋ช… ์ดˆ์•ˆ

์ง์ ‘ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋А๊ผˆ๋˜ ๊ฒƒ

  • ์ง€์†์ ์ธ ํ”„๋กฌํ”„ํŠธ ์ตœ์ ํ™”
  • ๋ณต์žกํ•˜๊ณ , ๊ณ ์œ ํ•ด์„œ ์ฐธ๊ณ ์ž๋ฃŒ๊ฐ€ ์ ์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
  • ๋ฆฌํŒฉํ† ๋ง, ๊ตฌ์กฐ ๊ฐœ์„ 
    • ์–ด๋А ์ •๋„ ํ•ด ๋†“์œผ๋ฉด AI์—๊ฒŒ ์ž”์—…์„ ๋งก๊ธธ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๊ณ ํ†ต์Šค๋Ÿฌ์šด ์ž‘์—…์ด์ง€๋งŒ ํ•ด ๋‘๋ฉด ์ƒ์‚ฐ์„ฑ์ด ์˜ฌ๋ผ๊ฐ„๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์˜คํ”ˆ์†Œ์Šค ๋ผ์ด์„ผ์Šค

์˜คํ”ˆ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ๋ผ์ด์„ ์Šค๋ฅผ ํ™•์ธํ•˜๊ณ , ํ•ด๋‹น ๋ผ์ด์„ ์Šค์— ์œ„๋ฐ˜๋˜๋Š” ๋‚ด์šฉ์ด ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” MIT, Apache 2.0 ๋ผ์ด์„ ์Šค๋Š” ๋น„๊ต์  ์ž์œ ๋กœ์šด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์†Œ์Šค์ฝ”๋“œ ๊ณต๊ฐœ ์˜๋ฌด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด, GPL ๊ณ„์—ด ๋ผ์ด์„ ์Šค๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐฐํฌํ•  ๊ฒฝ์šฐ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ณต๊ฐœํ•ด์•ผ ํ•˜๋Š” ์กฐ๊ฑด์ด ์žˆ์Šต๋‹ˆ๋‹ค.
ํŠนํžˆ AGPL ๋ผ์ด์„ ์Šค๋Š” ์ด์— ๋”ํ•ด ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ณต๊ฐœํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€ํ‘œ์ ์ธ AGPL ๊ธฐ๋ฐ˜ ๋ผ์ด์„ผ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค๋Š” Ghostscript, Grafana, MongoDB๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต ์ด๋Ÿฌํ•œ ์˜คํ”ˆ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž์—๊ฒŒ ์ง์ ‘ ์„ค์น˜๋ฅผ ์š”๊ตฌํ•˜๊ณ , ์ด๋ฅผ CLI ๋“ฑ์œผ๋กœ ํ˜ธ์ถœํ•˜์—ฌ AGPL์„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณธ์ธ์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด์„ผ์Šค๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ค€์ˆ˜ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, OLIVE Platform์„ ์‚ฌ์šฉํ•ด ๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
์„ค์ • ํŒŒ์ผ์„ ํ†ตํ•ด ๋ผ์ด์„ผ์Šค๋ฅผ ์Šค์บ”ํ•˜๊ณ , ๋ณด๊ณ ์„œ์™€ ๊ณ ์ง€๋ฌธ๊นŒ์ง€ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Footnotes

  1. https://github.com/peter-evans/create-pull-request/issues/48 โ†ฉ

  2. https://github.com/infolabai/gemini-cli-mcp โ†ฉ

  3. https://github.com/google-gemini/gemini-cli/issues/2591 โ†ฉ