์ฑ„๋„ํ†ก ์•„์ด์ฝ˜

[Spring AI ์‹ค์ „] ๋‚˜๋งŒ์˜ 24์‹œ๊ฐ„ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์–ด & ์ž๋™ ์ฑ„์  ์—์ด์ „ํŠธ ๋งŒ๋“ค๊ธฐ

๋‚ด ์ฝ”๋“œ๋ฅผ 5์ดˆ ๋งŒ์— ์ฑ„์ ํ•˜๊ณ  ๋ฆฌ๋ทฐํ•ด์ฃผ๋Š” AI ์‹œ์Šคํ…œ, ์ƒ์ƒ์ด ํ˜„์‹ค์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋Š” Spring AI๋ฅผ ํ™œ์šฉํ•ด **'GitHub PR ์ž๋™ ๋ถ„์„ ๋ฐ ์ฑ„์  ๋ด‡'**์„ ๋งŒ๋“œ๋Š” ์˜ฌ์ธ์› ํ”„๋กœ์ ํŠธ ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ํ•™์ƒ์ด ๊ณผ์ œ๋ฅผ ์ œ์ถœํ•˜๋ฉด(Pull Request), ์„œ๋ฒ„๊ฐ€ ์ด๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ AI๊ฐ€ ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ(Diff)์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ์ฑ„์  ๊ฒฐ๊ณผ๋Š” DB์— ์ €์žฅํ•˜๊ณ , ํ”ผ๋“œ๋ฐฑ์€ GitHub ๋Œ“๊ธ€๋กœ ์ž๋™ ๋“ฑ๋ก๋˜๋ฉฐ, ํ•™์ƒ์€ ์ „์šฉ ๋Œ€์‹œ๋ณด๋“œ์—์„œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”(Java) ํ•˜๋‚˜๋กœ ๋ฐฑ์—”๋“œ๋ถ€ํ„ฐ AI ์—ฐ๋™, ํ”„๋ก ํŠธ์—”๋“œ(Vaadin)๊นŒ์ง€! ๋‚˜๋งŒ์˜ AI ์„œ๋น„์Šค๋ฅผ A๋ถ€ํ„ฐ Z๊นŒ์ง€ ์™„์„ฑํ•ด๋ณด๊ณ  ์‹ถ์€ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์ตœ๊ณ ์˜ ์ž…๋ฌธ์„œ์ž…๋‹ˆ๋‹ค.

90๋ช… ์ด ์ˆ˜๊ฐ•ํ•˜๊ณ  ์žˆ์–ด์š”.

๋‚œ์ด๋„ ์ดˆ๊ธ‰

์ˆ˜๊ฐ•๊ธฐํ•œ ๋ฌด์ œํ•œ

Agent
Agent
AI
AI
SpringBoot
SpringBoot
multi-agent
multi-agent
Agent
Agent
AI
AI
SpringBoot
SpringBoot
multi-agent
multi-agent

์ˆ˜๊ฐ• ํ›„ ์ด๋Ÿฐ๊ฑธ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”

  • Webhooks ํ•ธ๋“ค๋ง: GitHub ์ด๋ฒคํŠธ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ์ง€ํ•˜๋Š” ์„œ๋ฒ„ ๊ตฌ์ถ•

  • Spring AI ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง: ํŽ˜๋ฅด์†Œ๋‚˜ ์„ค์ • ๋ฐ ์ •๊ตํ•œ JSON ์ถœ๋ ฅ ์ œ์–ด

  • ๋น„๋™๊ธฐ ์„ฑ๋Šฅ ์ตœ์ ํ™”: ์ฑ„์ ๊ณผ ๋ฆฌ๋ทฐ๋ฅผ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋Š” ๋ณ‘๋ ฌ ์›Œํฌํ”Œ๋กœ์šฐ ์„ค๊ณ„

  • ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”: Vaadin์„ ์ด์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์ ์ˆ˜ ๋Œ€์‹œ๋ณด๋“œ ๊ตฌํ˜„

๋ฐ˜๋ณต๋˜๋Š” ์ฝ”๋“œ ๋ฆฌ๋ทฐ์™€ ์ฑ„์ ,์ด์ œ AI์—๊ฒŒ ๋งก๊ธฐ์„ธ์š”.

์ž๋ฐ” ํ•˜๋‚˜๋กœ GitHub PR(Pull Request)์„ ๊ฐ์ง€ํ•˜๊ณ  AI๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋ถ„์„, ์ฑ„์ ๊นŒ์ง€ ํ•ฉ๋‹ˆ๋‹ค.
ํ•™์ƒ์˜ ๊ณผ์ œ ์ œ์ถœ๋ถ€ํ„ฐ DB ์ €์žฅ, GitHub ๋Œ“๊ธ€ ํ”ผ๋“œ๋ฐฑ, ๋Œ€์‹œ๋ณด๋“œ ํ™•์ธ๊นŒ์ง€
AI ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์‹œ์Šคํ…œ ๊ตฌ์ถ• ๊ฒฝํ—˜์„ ํ†ตํ•ด ์‹ค์ „์ ์ธ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ์—ญ๋Ÿ‰์„ ๊ธฐ๋ฆ…๋‹ˆ๋‹ค.

๐ŸŽฌ ์•„, ์šฐ๋ฆฌ๊ฐ€ ์ด๋Ÿฐ ๊ฑธ ๋งŒ๋“œ๋Š”๊ตฌ๋‚˜!

1. ๐Ÿ“ข ๊ณผ์ œ ์ถœ์ œ (๊ต์ˆ˜๋‹˜)

๊ต์ˆ˜๋‹˜์€ ํ•™์ƒ๋“ค์ด ํ’€์–ด์•ผ ํ•  ์ž๋ฐ” ๊ณผ์ œ(Calculator.java)์˜ ๋ผˆ๋Œ€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ GitHub ๋ ˆํฌ์ง€ํ† ๋ฆฌ(main ๋ธŒ๋žœ์น˜)์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

"์ž, ์ด๋ฒˆ ์ฃผ ๊ณผ์ œ๋Š” ๋‘ ์ˆ˜์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๊ณ„์‚ฐ๊ธฐ๋ฅผ ์™„์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋ช…์€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ง“๊ณ , ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋Š” ์—†์–ด์•ผ ๋งŒ์ ์ž…๋‹ˆ๋‹ค!"

2. ๐Ÿ‘จโ€๐Ÿ’ป ๊ณผ์ œ ์ˆ˜ํ–‰ (ํ•™์ƒ)

ํ•™์ƒ์€ ๊ต์ˆ˜๋‹˜์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ž์‹ ์˜ ๊ณต๊ฐ„์œผ๋กœ ๊ฐ€์ ธ์™€(Sync Fork), ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜(homework-1)๋ฅผ ๋งŒ๋“ค๊ณ  ๋ฌธ์ œ๋ฅผ ํ’‰๋‹ˆ๋‹ค.

"์Œ, a + b๋ฅผ ๋ฆฌํ„ดํ•˜๋ฉด ๋˜๊ฒ ์ง€? ๋‹ค ์งฐ๋‹ค! ๊ต์ˆ˜๋‹˜ํ•œํ…Œ ๊ฒ€์‚ฌ ๋งก์•„์•ผ์ง€." ํ•™์ƒ์€ ๊ณผ์ œ ์ œ์ถœ์„ ์œ„ํ•ด Pull Request(PR)๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

3. ๐Ÿค– AI ์—์ด์ „ํŠธ ๊ฐ€๋™ (์‹œ์Šคํ…œ)

ํ•™์ƒ์ด "PR ์ƒ์„ฑ" ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋Š” ์ˆœ๊ฐ„(Click), ์ž ์ž๊ณ  ์žˆ๋˜ Spring Boot ์„œ๋ฒ„๊ฐ€ GitHub์˜ ์‹ ํ˜ธ(Webhook)๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๊นจ์–ด๋‚ฉ๋‹ˆ๋‹ค.

  • Step 1 (๋ถ„์„): ์„œ๋ฒ„๋Š” ํ•™์ƒ์ด ์ˆ˜์ •ํ•œ ์ฝ”๋“œ(Diff)๋งŒ ์™ ๋ฝ‘์•„์„œ AI ์—์ด์ „ํŠธ์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

  • Step 2 (์ฑ„์ ): "์Œ, ๊ธฐ๋Šฅ์€ ๋งž๋Š”๋ฐ temp ๋ณ€์ˆ˜๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ตฐ. ์ ์ˆ˜๋Š” 90์ !" AI๋Š” ๋ฏธ๋ฆฌ ํ•™์Šต๋œ ํŽ˜๋ฅด์†Œ๋‚˜์— ๋”ฐ๋ผ ๋ƒ‰์ฒ ํ•˜๊ฒŒ ์ฑ„์ ํ•ฉ๋‹ˆ๋‹ค.

  • Step 3 (์ €์žฅ): ์ฑ„์  ๊ฒฐ๊ณผ(90์ )์™€ ํ”ผ๋“œ๋ฐฑ ๋‚ด์šฉ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB)์— ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

  • Step 4 (ํ”ผ๋“œ๋ฐฑ): ๋™์‹œ์— AI๋Š” ํ•™์ƒ์˜ PR์— ๋Œ“๊ธ€์„ ๋‚จ๊น๋‹ˆ๋‹ค. "๊ธฐ๋Šฅ์€ ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค! ๋‹ค๋งŒ ๋ถˆํ•„์š”ํ•œ ๋ณ€์ˆ˜ ์„ ์–ธ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚ญ๋น„ํ•  ์ˆ˜ ์žˆ์–ด์š”."

4. ๐Ÿ“Š ๊ฒฐ๊ณผ ํ™•์ธ (ํ•™์ƒ)

ํ•™์ƒ์€ PR์„ ์˜ฌ๋ฆฐ ์ง€ ๋‹จ 5์ดˆ ๋งŒ์— ์•Œ๋ฆผ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

"๋ฒŒ์จ ์ฑ„์ ์ด ๋๋‚ฌ๋‹ค๊ณ ?"

ํ•™์ƒ์€ ์ „์šฉ ๋Œ€์‹œ๋ณด๋“œ(์›น ํŽ˜์ด์ง€)์— ์ ‘์†ํ•˜์—ฌ ์ž์‹ ์˜ GitHub ID๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ํ™”๋ฉด์—๋Š” ๋ฐฉ๊ธˆ ์ œ์ถœํ•œ ๊ณผ์ œ์˜ ์ ์ˆ˜(90์ )์™€ AI์˜ ํ”ผ๋“œ๋ฐฑ์ด ์˜ˆ์œ ํ‘œ์™€ ๋ฐฐ์ง€๋กœ ์ •๋ฆฌ๋˜์–ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

Spring AI ์‹ค์ „์€
AI ์ฝ”๋“œ ๋ฆฌ๋ทฐ & ์ฑ„์  Agent๋ฅผ ์ง์ ‘ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

Agentic Systems
Parallelization Workflow

๋‹จ์ˆœ ๊ฐ•์˜๋ฅผ ๋„˜์–ด, ํ•™์ƒ์˜ ๊ณผ์ œ ์ œ์ถœ์„ ๊ฐ์ง€ํ•˜๊ณ  AI๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋ถ„์„, ์ฑ„์ ํ•˜๋ฉฐ ํ”ผ๋“œ๋ฐฑ์„ GitHub์— ์ž๋™ ๋“ฑ๋กํ•˜๋Š” ์‹ค์ „ํ˜• AI ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์‹œ์Šคํ…œ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.

  AI ์ž๋™ ์ฝ”๋“œ ๋ฆฌ๋ทฐ

GitHub API ์—ฐ๋™, AI ์—์ด์ „ํŠธ ์„ค๊ณ„, ๋ณ‘๋ ฌ ์›Œํฌํ”Œ๋กœ์šฐ ๊ตฌํ˜„, MySQL ๋ฐ์ดํ„ฐ ์ €์žฅ, Vaadin ๊ธฐ๋ฐ˜ ๋Œ€์‹œ๋ณด๋“œ ๊ฐœ๋ฐœ ๋ฐ GitHub Webhooks ์—ฐ๋™๊นŒ์ง€, ํ’€์Šคํƒ ๊ฐœ๋ฐœ ์—ญ๋Ÿ‰์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

ngrok์„ ์ด์šฉํ•œ ์™ธ๋ถ€ ์ ‘์† ์„ค์ •

AI ์—์ด์ „ํŠธ ์„ค๊ณ„, ๋ณ‘๋ ฌ ์›Œํฌํ”Œ๋กœ์šฐ ๊ตฌํ˜„

GitHub Webhook ๊ฐ์ง€

AI ์ž๋™ ์ฑ„์  DB ์ €์žฅ

Postman ์ ์ˆ˜ ํ™•์ธ

Spring AI, Spring Boot, Java ๊ธฐ๋ฐ˜์œผ๋กœ GitHub Webhooks, AI ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง, ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ, Vaadin์„ ํ™œ์šฉํ•œ ๋Œ€์‹œ๋ณด๋“œ ๊ตฌํ˜„๊นŒ์ง€ ์‹ค์ œ ์„œ๋น„์Šค ๊ฐœ๋ฐœ ๊ฒฝํ—˜์„ ์Œ“์Šต๋‹ˆ๋‹ค.

 Vaadin์„ ํ™œ์šฉํ•œ ๋Œ€์‹œ๋ณด๋“œ ๊ตฌํ˜„

๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์™€ ์ฑ„์  ์—…๋ฌด์—์„œ ๋ฒ—์–ด๋‚˜,
๋‚˜๋งŒ์˜ AI ๊ฐœ๋ฐœ ์—ญ๋Ÿ‰์„ ํ•œ ๋‹จ๊ณ„ upgrade!

๋‹จ๊ณ„๋ณ„ LBD(Learning by Doing)ํ•™์Šต

ํ”„๋กœ์ ํŠธ ๊ฐœ์š” ๋ฐ AI ์—์ด์ „ํŠธ ์†Œ๊ฐœ

๋ณธ ์„น์…˜์—์„œ๋Š” Spring AI๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋‚˜๋งŒ์˜ 24์‹œ๊ฐ„ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์–ด ๋ฐ ์ž๋™ ์ฑ„์  ์—์ด์ „ํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ํ”„๋กœ์ ํŠธ์˜ ์ „๋ฐ˜์ ์ธ ๊ฐœ์š”๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. AI ์—์ด์ „ํŠธ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ Spring Boot ๊ธฐ๋ฐ˜์˜ ๋ฐฑ์—”๋“œ Java ๊ธฐ์ˆ ๋งŒ์œผ๋กœ ์—์ด์ „ํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ ์ฑ„์  ์ž๋™ํ™”์˜ ํ•„์š”์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ • ๋ฐ ์™ธ๋ถ€ ์—ฐ๋™

์‹ค์Šต ํ™˜๊ฒฝ ๊ตฌ์ถ•์„ ์œ„ํ•œ ํ•„์ˆ˜ ๋‹จ๊ณ„๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ngrok์„ ์ด์šฉํ•œ ์™ธ๋ถ€ ์ ‘์† ์„ค์ •, GitHub Personal Access Token ๋ฐœ๊ธ‰, GitHub Webhook ๋“ฑ๋ก ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๊ต์ˆ˜์ž์™€ ํ•™์ƒ ๊ด€์ ์—์„œ GitHub ๊ณผ์ œ ๋ฐฐํฌ ๋ฐ ์‹ค์ „ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ํ†ตํ•ด ์—ฐ๋™ ๊ณผ์ •์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ Webhook ์—ฐ๋™ ํ…Œ์ŠคํŠธ

Spring Boot ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ์ดˆ๊ธฐ ํ™˜๊ฒฝ ์„ค์ •์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. GitHub Webhook ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๊ธฐ ์œ„ํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ , Pull Request ๋ฐœ์ƒ ์‹œ 'opened' ๋ฐ 'synchronized' ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ Webhook ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์—ฐ๋™ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค

ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ ์„ค๊ณ„

ํ”„๋กœ์ ํŠธ์˜ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์œ„ํ•œ ๋„๋ฉ”์ธ ๊ณ„์ธต์„ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. Entity์™€ DTO๋ฅผ ํฌํ•จํ•˜๋Š” ๋„๋ฉ”์ธ ๊ณ„์ธต๊ณผ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์„ ์œ„ํ•œ Repository ๊ณ„์ธต์„ ๊ตฌ์ฒดํ™”ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ์˜ ๊ธฐ๋ฐ˜์„ ๋งˆ๋ จํ•ฉ๋‹ˆ๋‹ค.

GitHub API ์—ฐ๋™ ๋ฐ ๋„๊ตฌ ๊ตฌํ˜„

GitHub API์™€์˜ ํ†ต์‹ ์„ ์œ„ํ•œ RestClient ์„ค์ •์„ ์ค€๋น„ํ•˜๊ณ , Pull Request์˜ ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ(Diff)๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ๊ณผ Pull Request์— ๋ฆฌ๋ทฐ ๋Œ“๊ธ€์„ ๋‹ค๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. AI ์—์ด์ „ํŠธ๊ฐ€ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” Tool์„ ๊ฐœ๋ฐœํ•˜์—ฌ ์™ธ๋ถ€ ์‹œ์Šคํ…œ๊ณผ์˜ ์—ฐ๋™์„ฑ์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

Spring AI ๊ธฐ๋ฐ˜ ์—์ด์ „ํŠธ ๊ตฌํ˜„

Spring AI ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ•ต์‹ฌ ์—์ด์ „ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ReviewAgent์™€ ์ฑ„์  ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” GradingAgent๋ฅผ ์ด๋ก ์ ์œผ๋กœ ์„ค๋ช…ํ•˜๊ณ  ์‹ค์ œ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜์—ฌ AI ์—์ด์ „ํŠธ์˜ ๋™์ž‘์„ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๋ฐ ํ†ตํ•ฉ ์„œ๋น„์Šค ๋กœ์ง ๊ตฌํ˜„

AI ์—์ด์ „ํŠธ์˜ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋ณ‘๋ ฌ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ทฐ ๋ฐ ์ฑ„์  ์ž‘์—…์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๋น„๋™๊ธฐ ๋กœ์ง์„ ์ ์šฉํ•˜๊ณ , ์ด๋ฅผ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•˜๋Š” PullRequestService๋ฅผ ๊ฐœ๋ฐœํ•˜์—ฌ ์ „์ฒด์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ํ๋ฆ„์„ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค.

์›น ์ปจํŠธ๋กค๋Ÿฌ ๋ฐ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๊ตฌํ˜„

๊ตฌํ˜„๋œ ์„œ๋น„์Šค ๋กœ์ง์„ ์™ธ๋ถ€๋กœ ๋…ธ์ถœํ•˜๊ธฐ ์œ„ํ•œ ์›น ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. Webhook ๋ฐ ์ฑ„์  ํ™•์ธ์„ ์œ„ํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ , Vaadin ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•™์ƒ๋“ค์˜ ์ฑ„์  ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐํ™”๋œ ๋ทฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ํ™•์žฅ ๋ฐ ๋งˆ๋ฌด๋ฆฌ

๊ฐœ๋ฐœ๋œ AI ์—์ด์ „ํŠธ์˜ ์ถ”๊ฐ€์ ์ธ ํ™•์žฅ ๊ฐ€๋Šฅ์„ฑ์„ ํƒ์ƒ‰ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์˜์—์„œ ์‚ฌ์šฉ๋œ ๋ชจ๋“  ์ž๋ฃŒ์™€ ์†Œ์Šค ์ฝ”๋“œ์— ๋Œ€ํ•œ ์•ˆ๋‚ด๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ํ•™์Šต ๋‚ด์šฉ์„ ์ข…ํ•ฉ์ ์œผ๋กœ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋งŒ์˜ AI ์ฝ”๋“œ ๋ฆฌ๋ทฐ์–ด๋ฅผ ๋งŒ๋“œ๋Š” ์—ฌ์ •,
์ด ๊ฐ•์˜๋Š” ๋ฐ”๋กœ ์ด๋Ÿฐ ๋ถ„๋“ค์„ ์œ„ํ•ด ๋งŒ๋“ค์—ˆ์–ด์š”.

โœ”๏ธ Spring AI ๊ธฐ๋ฐ˜ AI ์—์ด์ „ํŠธ ๊ฐœ๋ฐœ์„ ๊ฒฝํ—˜ํ•˜๊ณ  ์‹ถ์€ ์ž๋ฐ” ๊ฐœ๋ฐœ์ž

  • Python ์—†์ด Spring Boot ํ™˜๊ฒฝ์—์„œ AI ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์‹ถ์€ ๋ถ„

  • GitHub Pull Request๋ฅผ ์ž๋™์œผ๋กœ ๋ถ„์„ํ•˜๊ณ  ์ฑ„์ ํ•˜๋Š” ์—์ด์ „ํŠธ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์‹ถ์€ ๋ถ„

  • AI ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง๊ณผ ๋„๊ตฌ(Tool) ํ™œ์šฉ๋ฒ•์„ ์‹ค์ „ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜๊ณ  ์‹ถ์€ ๋ถ„

โœ”๏ธ ์ฐจ๋ณ„ํ™”๋œ ๋ฐฑ์—”๋“œ ํฌํŠธํด๋ฆฌ์˜ค๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ์ทจ์—… ์ค€๋น„์ƒ

  • ๋‹จ์ˆœ CRUD ๊ฐœ๋ฐœ์„ ๋„˜์–ด, ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜์™€ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๊ฐ€ ์ ์šฉ๋œ ํ”„๋กœ์ ํŠธ ๊ฒฝํ—˜์ด ํ•„์š”ํ•œ ๋ถ„

  • AI ์—์ด์ „ํŠธ ๊ฐœ๋ฐœ๋ถ€ํ„ฐ Vaadin์„ ์ด์šฉํ•œ ๋Œ€์‹œ๋ณด๋“œ ๊ตฌํ˜„๊นŒ์ง€ ํ’€์Šคํƒ ์—ญ๋Ÿ‰์„ ํ‚ค์šฐ๊ณ  ์‹ถ์€ ๋ถ„

  • ์‹ค๋ฌด์—์„œ ๋ฐ”๋กœ ํ™œ์šฉ ๊ฐ€๋Šฅํ•œ GitHub ์—ฐ๋™ ๋ฐ ์ž๋™ํ™” ์‹œ์Šคํ…œ ๊ตฌ์ถ• ๊ฒฝํ—˜์„ ์Œ“๊ณ  ์‹ถ์€ ๋ถ„

โœ”๏ธ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ ๊ณผ์ œ ์ฑ„์  ์—…๋ฌด ์ž๋™ํ™”๋กœ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž ๋ฐ ๊ต์œก์ž

  • ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ถ€๋‹ด์„ AI ์—์ด์ „ํŠธ๋กœ ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ์€ ๋ถ„

  • ์ฑ„์  ๊ฒฐ๊ณผ DB ์ €์žฅ, GitHub ๋Œ“๊ธ€ ์ž๋™ ํ”ผ๋“œ๋ฐฑ ๋“ฑ ์ž๋™ํ™” ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ์‹ถ์€ ๋ถ„

  • Vaadin ๊ธฐ๋ฐ˜์˜ ์‹ค์‹œ๊ฐ„ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ํ†ตํ•ด ์ฑ„์  ํ˜„ํ™ฉ์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์€ ๋ถ„

์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ

์‹ค์Šต ํ™˜๊ฒฝ

  • IDE: IntelliJ IDEA Community Edition.

  • Language: Java 17 or 21.

  • Framework: Spring Boot 3.5.8 (Latest Stable).

  • Library: Spring AI 1.1.2 (or 1.1.0 Snapshot).

  • Database: MySQL8

  • AI Model: OpenAI (gpt-4o-mini or gpt-5-mini).


์„ ์ˆ˜ ์ง€์‹ ๋ฐ ์œ ์˜์‚ฌํ•ญ

  • Java ์›น ๊ฐœ๋ฐœ ๊ฒฝํ—˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • Spring Boot ๊ธฐ๋ณธ ๊ฐœ๋…์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • GitHub ์‚ฌ์šฉ ๊ฒฝํ—˜์ด ์žˆ๋‹ค๋ฉด ํ•™์Šต์— ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

ํ•™์Šต ์ž๋ฃŒ

  • ๋™์˜์ƒ ๊ฐ•์˜ ๋งจ ๋’ค 30๊ฐ•์— ํ•™์Šต์ž๋ฃŒ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

  • ์‹ค์Šต์— ํ•„์š”ํ•œ ๋ชจ๋“  ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

  • GitHub Webhook, Spring AI ๊ณต์‹ ๋ฌธ์„œ ๋“ฑ ๊ด€๋ จ ์ž๋ฃŒ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.


โœ์งˆ๋ฌธ & ๋ฌธ์˜

ํ˜น์‹œ๋‚˜ ํ•™์Šตํ•˜์‹œ๋‹ค๊ฐ€ ์ดํ•ด๊ฐ€ ์•ˆ ๋˜์‹œ๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด Q&A๊ฒŒ์‹œํŒ์ด๋‚˜ 1:1 ์˜คํ”ˆํ†ก๋ฐฉ์„ ํ™œ์šฉํ•ด ๋ฐ”๋กœ ๋ฌธ์˜ํ•ด์ฃผ์„ธ์š”

๐Ÿ‘ฉโ€๐ŸŽ“Spring AI ์‹ค์ „(1:1 ์˜คํ”ˆ์ฑ„ํŒ…) : https://open.kakao.com/o/sXXxSI5h

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • AI๋ฅผ ๋„์ž…ํ•˜๊ณ  ์‹ถ์ง€๋งŒ Python์€ ๋‚ฏ์„ค๊ณ , ๊ธฐ์กด Spring ์ƒํƒœ๊ณ„์—์„œ AI ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์€ ์ž๋ฐ” ๊ฐœ๋ฐœ์ž

  • ๋‹จ์ˆœ CRUD ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ์— ์ง€์ณ, '์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜'์™€ '๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ'๊ฐ€ ๋…น์•„๋“  ์ฐจ๋ณ„ํ™”๋œ ํฌํŠธํด๋ฆฌ์˜ค๊ฐ€ ํ•„์š”ํ•œ ์ทจ์—… ์ค€๋น„์ƒ

  • ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์™€ ๊ณผ์ œ ์ฑ„์  ์—…๋ฌด๋ฅผ ์ž๋™ํ™”ํ•˜์—ฌ, ์ƒ์‚ฐ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ณ  ์‹ถ์€ ํŒ€์žฅ๊ธ‰ ๊ฐœ๋ฐœ์ž ๋ฐ ๊ต์œก์ž

  • ๋ฐฑ์—”๋“œ ๋กœ์ง๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”(๋Œ€์‹œ๋ณด๋“œ)๊นŒ์ง€ ํ˜ผ์ž์„œ ๋น ๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์€ ํ’€์Šคํƒ ์ง€ํ–ฅ ๊ฐœ๋ฐœ์ž

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋Œ€ํ•œ ๊ธฐ์ดˆ ์ง€์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • Spring Boot ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ์ดํ•ด๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ SQL์— ๋Œ€ํ•œ ๊ธฐ์ดˆ ์ง€์‹์ด ์žˆ์œผ๋ฉด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”
๋ฐ•๋งค์ผ์ž…๋‹ˆ๋‹ค.

8,572

๋ช…

์ˆ˜๊ฐ•์ƒ

653

๊ฐœ

์ˆ˜๊ฐ•ํ‰

670

๊ฐœ

๋‹ต๋ณ€

4.9

์ 

๊ฐ•์˜ ํ‰์ 

14

๊ฐœ

๊ฐ•์˜

์•ˆ๋…•ํ•˜์„ธ์š” ๋ฐ•๋งค์ผ ๊ฐ•์‚ฌ์ž…๋‹ˆ๋‹ค.
SW๊ต์œก์„ผํ„ฐ๋ฅผ ์šด์˜์ค‘์ด๋ฉฐ ๋Œ€ํ•™, ๊ด€๊ณต์„œ, ๊ธฐ์—…์ฒด์— ์ปจ์„คํŒ… ๋ฐ SW์œ„ํƒ๊ต์œก์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“„ ์ฃผ์š” ๊ฐ•์˜๊ฒฝ๋ ฅ์™ธ ๋‹ค์ˆ˜

- ๊ตฌ๋ฆ„ ํŠน์„ฑํ™”๊ณ  ์ „๊ณต์บ ํ”„ ๊ฐ•์˜(Full Stack ๊ณผ์ •)
- ์†Œํ”„ํŠธ์›จ์–ด๋งˆ์ด์Šคํ„ฐ๊ณ ๋“ฑํ•™๊ต ์‚ฐํ•™ํ˜‘๋ ฅ๊ต์‚ฌ
- ๊ด‘์ฃผ์ธ๊ณต์ง€๋Šฅ์‚ฌ๊ด€ํ•™๊ต ๊ฐ•์˜
- ํŒจ์ŠคํŠธ์บ ํผ์Šค ๋ฐฑ์—”๋“œ ๋ถ€ํŠธ์บ ํ”„ ๊ฐ•์˜
- ์Šค๋งˆํŠธ์ธ์žฌ๊ฐœ๋ฐœ์› ๊ต์œก๋ถ€์žฅ ๋ฐ ๊ฐ•์˜
- ํ•œ๊ตญ์ „๋ ฅ๊ณต์‚ฌ In-House ์ฝ”๋”ฉ ์œ„ํƒ ๊ต์œก
- ํ•œ์–‘๋Œ€ํ•™๊ต ERICA ์˜จ๋ผ์ธ ๊ฐ•์˜
- ๋น„ํŠธ์†Œํ”„ํŠธ์›จ์–ด๊ต์œก์„ผํ„ฐ์šด์˜(ํ•ด์™ธ์ทจ์—…,๊ตญ๋น„๊ต์œก)
- SW์ฑ„์šฉ์—ฐ์ˆ˜์‚ฌ์—…(๋ฏธ๋ž˜์ฐฝ์กฐ๊ณผํ•™๋ถ€)
- ์ธ๊ณต์ง€๋Šฅ, ์ •๋ณด๊ธฐ์ˆ ๊ฐœ๋ฐœ๋“ฑ ์ง์—…๋Šฅ๋ ฅ๊ฐœ๋ฐœํ›ˆ๋ จ๊ต์‚ฌ
* ๊ต์œก๋ฌธ์˜ ๋ฐ ์ œํœด(์นด์นด์˜คํ†ก์ฑ„๋„)
* ์ง„ํ–‰์ค‘์ธ ๊ฐ•์˜ : https://itscoding.kr

๐ŸŽค ์˜จ๋ผ์ธ ๊ต์œก์ฝ˜ํ…์ธ  ์ œ๊ณต

์ธํ”„๋Ÿฐ : Java,DB,MVC,Spring,Spring AI & Agent,IoT
ํŒจ์ŠคํŠธ์บ ํผ์Šค : Java, Spring Boot

email : bitcocom@empas.com

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

30๊ฐœ โˆ™ (7์‹œ๊ฐ„ 14๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!

๋ฐ•๋งค์ผ๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜

์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

๋น„์Šทํ•œ ๊ฐ•์˜

๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

โ‚ฉ22,000