โ† ๋ชฉ๋ก์œผ๋กœ
ENGINEERING NOTE19 ๋ถ„ ์ฝ๊ธฐ

๐Ÿค– AI์™€ ํ•จ๊ป˜ ์˜คํ”ˆ์†Œ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• โ€” Narwhal์„ ๊ฐœ๋ฐœํ•˜๋ฉฐ

ChatGPT, Claude, Gemini, Copilot์„ ์‹ค์ œ ์˜คํ”ˆ์†Œ์Šค ๊ฐœ๋ฐœ์— ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด์„œ Narwhal๊ณผ ์—ฌ๋Ÿฌ Cloud Native ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๊ฐ€๋Š” ๊ณผ์ •๊ณผ ์ƒ๊ฐ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

AI
Open Source
Narwhal
Kubernetes
Cloud Native
Platform Engineering
AI Agent

๋“ค์–ด๊ฐ€๋ฉฐ

์ตœ๊ทผ GeekNews์—์„œ AI ์‹œ๋Œ€์˜ ๊ฐœ๋ฐœ ๋ฐฉ์‹๊ณผ AI-first ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ๊ด€ํ•œ ๊ธ€์„ ์ฝ์œผ๋ฉด์„œ ํ•œ ๊ฐ€์ง€ ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

AI๋ฅผ ๊ฐœ๋ฐœ์— ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋Š” ์ด๋ฏธ ๋งŽ์€ ์ด์•ผ๊ธฐ๊ฐ€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค.

Copilot์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž๋™์™„์„ฑํ•˜๊ณ , Claude Code๋‚˜ Gemini CLI๋กœ ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ , ChatGPT์—๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ ์ด์ œ ํŠน๋ณ„ํ•œ ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์‹ค์ œ๋กœ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ๋ช‡ ๋‹ฌ ๋™์•ˆ ๊ณ„์† ๊ฐœ๋ฐœํ•ด ๋ณด๋ฉด ์กฐ๊ธˆ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ๋ณด์ž…๋‹ˆ๋‹ค.

AI๊ฐ€ ์ฝ”๋“œ๋ฅผ ์–ผ๋งˆ๋‚˜ ์ž˜ ์ž‘์„ฑํ•˜๋А๋ƒ๋ณด๋‹ค, AI๋ฅผ ์ด์šฉํ•ด์„œ ์–ด๋–ค ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ณ„์† ๋งŒ๋“ค์–ด ๊ฐˆ ๊ฒƒ์ธ๊ฐ€๊ฐ€ ๋” ์ค‘์š”ํ•˜๋‹ค.

์ € ์—ญ์‹œ ํ˜„์žฌ ChatGPT, Claude, Gemini, GitHub Copilot์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ๋„๊ตฌ๋“ค์„ ์ด์šฉํ•ด ๋‹จ์ˆœํ•œ ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ์‹ค์ œ๋กœ ๊ณ„์† ์œ ์ง€ํ•˜๊ณ  ๋ฐœ์ „์‹œํ‚ค๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋“ค์„ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ํ”„๋กœ์ ํŠธ๊ฐ€ Kubernetes ๊ธฐ๋ฐ˜ Internal Developer Platform์ธ Narwhal์ž…๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” ํŠน์ • AI ๋„๊ตฌ์˜ ์„ฑ๋Šฅ์„ ๋น„๊ตํ•˜๊ธฐ๋ณด๋‹ค, AI๋ฅผ ์‹ค์ œ ์˜คํ”ˆ์†Œ์Šค ๊ฐœ๋ฐœ workflow์— ์–ด๋–ป๊ฒŒ ๋„ฃ๊ณ  ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ณผ์ •์—์„œ ๊ฐœ๋ฐœ์ž์˜ ์—ญํ• ์ด ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ๊ณ  ์žˆ๋Š”์ง€๋ฅผ ์ •๋ฆฌํ•ด ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.


1. AI๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฌด์—‡์„ ๋งŒ๋“ค๊ณ  ์žˆ๋Š”๊ฐ€?

ํ˜„์žฌ ๊ฐ€์žฅ ํฐ ํ”„๋กœ์ ํŠธ๋Š” Narwhal์ž…๋‹ˆ๋‹ค.

Narwhal์€ Kubernetes ์œ„์— GitOps, IAM/SSO, Service Mesh, Observability, Registry, Storage, Backup, Policy, API Gateway, Management Portal ๋“ฑ์„ ํ†ตํ•ฉํ•œ ์˜คํ”ˆ์†Œ์Šค Kubernetes Internal Developer Platform์ž…๋‹ˆ๋‹ค.

์ค‘์š”ํ•œ ๊ฒƒ์€ ๋‹จ์ˆœํžˆ Kubernetes๋ฅผ ์„ค์น˜ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์ ์ž…๋‹ˆ๋‹ค.

Kubernetes
    +
GitOps
SSO / IAM
API Gateway
Service Mesh
Observability
Registry
Storage
Backup
Security / Policy
Management Portal
        โ†“
    ํ•˜๋‚˜์˜ ํ”Œ๋žซํผ

์‹ค์ œ ํ”Œ๋žซํผ์—์„œ๋Š” Kubernetes ์„ค์น˜ ์ž์ฒด๋ณด๋‹ค ๊ทธ ์œ„์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐ๋˜๋Š”์ง€๊ฐ€ ๋” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Kubernetes
   โ†•
Keycloak
   โ†•
APISIX
   โ†•
Istio
   โ†•
ArgoCD
   โ†•
Grafana / Gitea / Harbor / Headlamp

๊ฐ๊ฐ์€ ๋…๋ฆฝ์ ์œผ๋กœ ์ž˜ ๋™์ž‘ํ•˜๋”๋ผ๋„ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ์ˆœ๊ฐ„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

์ธ์ฆ claim์ด ๋งž์ง€ ์•Š๊ฑฐ๋‚˜,

TLS ์ฒด์ธ์ด ๋‹ค๋ฅด๊ฑฐ๋‚˜,

Service Mesh๊ฐ€ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ๋ฐฉ์‹์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜,

ํŠน์ • chart ๋ฒ„์ „์˜ ๋ณ€๊ฒฝ์œผ๋กœ ๊ธฐ์กด configuration์ด ๊นจ์ง€๊ฑฐ๋‚˜,

air-gapped ํ™˜๊ฒฝ์—์„œ ๋‹น์—ฐํ•˜๊ฒŒ ๋ณด์˜€๋˜ ์™ธ๋ถ€ dependency๊ฐ€ ์‚ฌ๋ผ์ง€๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

Narwhal์€ ์ด๋Ÿฐ integration ์ž์ฒด๋ฅผ ์ œํ’ˆ์˜ ์ผ๋ถ€๋กœ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


2. Narwhal์—์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ฝ”๋“œ๋ณด๋‹ค ํ†ตํ•ฉ ์ง€์‹์ด๋‹ค

Narwhal์„ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๋งŽ์ด ๋ฐฐ์šด ๊ฒƒ์€ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ์ฝ”๋“œ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๋Š” ์ ์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ๋ฌธ์ œ๋Š” Kubernetes ๋ฌธ์ œ์ด๊ณ ,

์–ด๋–ค ๋ฌธ์ œ๋Š” Helm chart ๋ฌธ์ œ์ด๋ฉฐ,

์–ด๋–ค ๋ฌธ์ œ๋Š” Keycloak configuration ๋ฌธ์ œ์ด๊ณ ,

๋˜ ์–ด๋–ค ๋ฌธ์ œ๋Š” ๋‘ ์‹œ์Šคํ…œ ์‚ฌ์ด์˜ compatibility ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ Narwhal์—๋Š” ๋ฐœ์ƒํ–ˆ๋˜ ๋ฌธ์ œ๋ฅผ ๋‹จ์ˆœํ•œ issue๋กœ ๋๋‚ด์ง€ ์•Š๊ณ  ๊ธฐ๋กํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ lessons-log.md์—๋Š” 263๊ฑด์˜ ๋‚ ์งœ๋ณ„ incident๊ฐ€ ๊ธฐ๋ก๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ•˜๋‚˜์˜ ๋ฌธ์ œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ๋ฆ„์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Incident
   โ†“
Lesson
   โ†“
Discriminator
   โ†“
Regression Test

์ฆ‰,

"์ด ๋ฌธ์ œ๋Š” ์ด๋ ‡๊ฒŒ ๊ณ ์ณค๋‹ค."

์—์„œ ๋๋‚˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ,

"๋‹ค์Œ์— ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ด์ „ ๋ฌธ์ œ์™€ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„ํ•  ๊ฒƒ์ธ๊ฐ€?"

๊นŒ์ง€ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ง€์‹์„ ํ…Œ์ŠคํŠธ๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฐฉ์‹์€ AI๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์—์„œ๋„ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

AI์—๊ฒŒ ๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑ์‹œํ‚ค๋Š” ๊ฒƒ๋ณด๋‹ค ๊ณผ๊ฑฐ์˜ ์‹คํŒจ์™€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ repository์— ๋‚จ๊ฒจ๋‘๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๊ฐ•๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.


3. AI์—๊ฒŒ ์ฝ”๋“œ๋ฅผ ๋งก๊ธฐ๋Š” ๊ฒƒ๊ณผ AI์™€ ํ•จ๊ป˜ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์€ ๋‹ค๋ฅด๋‹ค

AI coding์„ ์ฒ˜์Œ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ณดํ†ต ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ์„ค๋ช…
    โ†“
AI๊ฐ€ ์ฝ”๋“œ ์ž‘์„ฑ
    โ†“
์‹คํ–‰
    โ†“
์˜ค๋ฅ˜ ๋ฐœ์ƒ
    โ†“
๋‹ค์‹œ AI์—๊ฒŒ ์ˆ˜์ • ์š”์ฒญ

์ด๊ฒƒ๋„ ์–ด๋А ์ •๋„๋Š” ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปค์ง€๋ฉด ๊ณง ํ•œ๊ณ„๊ฐ€ ์˜ต๋‹ˆ๋‹ค.

ํŒŒ์ผ์ด ์ˆ˜์‹ญ ๊ฐœ๊ฐ€ ๋˜๊ณ ,

GitHub Actions๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์กด์žฌํ•˜๊ณ ,

Kubernetes manifest์™€ Helm chart๊ฐ€ ์—ฐ๊ฒฐ๋˜๊ณ ,

๊ธฐ์กด ์žฅ์• ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์กด์žฌํ•˜๊ณ ,

์ด๋ฏธ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋งŒ๋“ค์–ด ๋†“์€ ์šด์˜ ๊ทœ์น™์ด ์žˆ๋‹ค๋ฉด

AI์—๊ฒŒ ๋งค๋ฒˆ ์ฒ˜์Œ๋ถ€ํ„ฐ ์„ค๋ช…ํ•˜๋Š” ๋ฐฉ์‹์€ ์˜ค๋ž˜ ๊ฐˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ œ๊ฐ€ ๋งŒ๋“  Luna Chat Coder๋„ ๊ฐ™์€ ๋ฌธ์ œ์˜์‹์—์„œ ์ถœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

AI๊ฐ€ ๋ฌด์—‡์„ ํ•˜๋А๋ƒ๋ณด๋‹ค

์–ด๋–ค repository state๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜๋Š”๊ฐ€?
์–ด๋””์—์„œ ์ž‘์—…ํ•˜๋Š”๊ฐ€?
๋ฌด์—‡์„ ๋ณ€๊ฒฝํ•ด๋„ ๋˜๋Š”๊ฐ€?
์–ด๋–ป๊ฒŒ ๊ฒ€์ฆํ•˜๋Š”๊ฐ€?
์–ด๋–ป๊ฒŒ ๋ณต๊ตฌํ•˜๋Š”๊ฐ€?

๋ฅผ repository ์ž์ฒด์— ๋‚จ๊ธฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


4. ์—ฌ๋Ÿฌ AI๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค

ํ˜„์žฌ ์ €๋Š” ํ•˜๋‚˜์˜ AI ๋„๊ตฌ๋งŒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ChatGPT
Claude
Gemini
GitHub Copilot

๊ทธ๋ฆฌ๊ณ  ์ด๋“ค์„ ๊ฒฝ์Ÿ ๊ด€๊ณ„๋ผ๊ธฐ๋ณด๋‹ค ์„œ๋กœ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐœ๋ฐœ ๋„๊ตฌ๋กœ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ๋„

์•„์ด๋””์–ด / ์„ค๊ณ„
     โ†“
์—ฌ๋Ÿฌ AI์—๊ฒŒ ๊ฒ€ํ† 
     โ†“
์ฝ”๋“œ ์ž‘์„ฑ
     โ†“
ํ…Œ์ŠคํŠธ
     โ†“
๋ฌธ์ œ ๋ถ„์„
     โ†“
๋‹ค๋ฅธ ๋ชจ๋ธ์˜ ์žฌ๊ฒ€ํ† 
     โ†“
GitHub ๋ฐ˜์˜

๊ฐ™์€ workflow๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ค‘์š”ํ•œ ๊ฒƒ์€ ์–ด๋А ๋ชจ๋ธ์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋Š”๊ฐ€๊ฐ€ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ source of truth๋Š” Git repository์ด๊ณ ,

์ตœ์ข… ํŒ๋‹จ์€ ํ…Œ์ŠคํŠธ์™€ ์‹ค์ œ ๋™์ž‘์ด ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ตฌ์กฐ์—์„œ๋Š” ์˜คํžˆ๋ ค ์—ฌ๋Ÿฌ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์žฅ์ ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ ๋ชจ๋ธ์ด ๋†“์นœ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฅธ ๋ชจ๋ธ์ด ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.


5. Narwhal์„ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ AI์˜ ์—ญํ• ์ด ๋‹ฌ๋ผ์ง€๊ณ  ์žˆ๋‹ค

Narwhal์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ฉํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ๋Š” AI์—๊ฒŒ ๋‹จ์ˆœํ•œ ์ฝ”๋“œ ์ƒ์„ฑ๋งŒ ๋งก๊ธฐ๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes ๋ฒ„์ „ ๋ณ€๊ฒฝ
       โ†“
Cilium ๋ณ€๊ฒฝ
       โ†“
Istio compatibility ํ™•์ธ
       โ†“
APISIX / cert-manager ์˜ํ–ฅ ํ™•์ธ
       โ†“
Keycloak OIDC ํ™•์ธ
       โ†“
ArgoCD / Grafana / Gitea / Harbor ํ™•์ธ
       โ†“
ํšŒ๊ท€ ํ…Œ์ŠคํŠธ ์‹คํ–‰

ํ•œ ๊ตฐ๋ฐ์˜ ๋ณ€๊ฒฝ์ด ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ AI์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ํ”„๋กœ์ ํŠธ ์ „์ฒด๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ๋ณ€๊ฒฝ์˜ ๋ฒ”์œ„๋ฅผ ๋น ๋ฅด๊ฒŒ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋А๋ผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ „์—๋Š” ์‚ฌ๋žŒ์ด

grep
kubectl
git diff
grep
๋ฌธ์„œ ๊ฒ€์ƒ‰
GitHub ๊ฒ€์ƒ‰

์„ ๋ฐ˜๋ณตํ•ด์„œ ํ™•์ธํ–ˆ๋‹ค๋ฉด,

์ง€๊ธˆ์€ AI์—๊ฒŒ

"์ด ๋ฒ„์ „ ๋ณ€๊ฒฝ์ด ์ „์ฒด ํ”Œ๋žซํผ์— ์–ด๋–ค ์˜ํ–ฅ์„ ์ฃผ๋Š”์ง€ ํ™•์ธํ•ด๋ผ."

๋ผ๊ณ  ์ž‘์—… ๋ฒ”์œ„๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  AI์˜ ํŒ๋‹จ์„ ๊ทธ๋Œ€๋กœ ์‹ ๋ขฐํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

AI๊ฐ€ ์ฐพ์•„๋‚ธ dependency graph๋ฅผ ๋‹ค์‹œ ์‹ค์ œ manifest, script, test, cluster state๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰,

AI๋Š” ํƒ์ƒ‰ ์†๋„๋ฅผ ๋†’์ด๊ณ , ๊ฒ€์ฆ์€ ์‹œ์Šคํ…œ์ด ๋‹ด๋‹นํ•œ๋‹ค.

๋ผ๋Š” ์›์น™์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.


6. Narwhal Portal๋„ AI-assisted development๋กœ ๋งŒ๋“ค๊ณ  ์žˆ๋‹ค

Narwhal ์ž์ฒด๋งŒ์œผ๋กœ๋„ ์ƒ๋‹นํžˆ ํฐ ํ”„๋กœ์ ํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ฆฌ ํฌํ„ธ๋„ ๋ณ„๋„์˜ ํ”„๋กœ์ ํŠธ๋กœ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

Narwhal Portal์€ Next.js 16 + React 19 ๊ธฐ๋ฐ˜์˜ ๊ด€๋ฆฌ ํฌํ„ธ์ž…๋‹ˆ๋‹ค.

๋‹จ์ˆœํ•œ ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

Dashboard
Onboarding
Catalog / My Apps
Nodes
Cost
Compliance
Security
Governance
Architecture
Templates
Tools
Settings

์ฆ‰ Kubernetes ๊ด€๋ฆฌ์ž์™€ ํ”Œ๋žซํผ ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” Day-2 ์šด์˜ interface๋ฅผ ๋งŒ๋“œ๋Š” ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ๋„ AI์˜ ์—ญํ• ์€ ๋‹จ์ˆœํžˆ React ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด

Kubernetes API
    โ†“
Backend API
    โ†“
TanStack Query
    โ†“
React UI
    โ†“
์‚ฌ์šฉ์ž ๊ถŒํ•œ / Keycloak

๊ฐ™์€ ํ๋ฆ„์„ ์ดํ•ดํ•˜๊ณ  ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ AI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ๋„ repository ์•ˆ์— architecture, conventions, security rules, development workflow๋ฅผ ๊ณ„์† ๋‚จ๊ฒจ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


7. kube-ready-box๋„ ํ•˜๋‚˜์˜ ํผ์ฆ์ด๋‹ค

Narwhal์„ ๊ณ„์† ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด ๋˜ ํ•˜๋‚˜์˜ ๋ฌธ์ œ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

"๊ทธ ํ™˜๊ฒฝ ์ž์ฒด๋ฅผ ์–ด๋–ป๊ฒŒ reproducibleํ•˜๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ธ๊ฐ€?"

๊ทธ๋ž˜์„œ kube-ready-box๋„ ํ•จ๊ป˜ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๋Š” Kubernetes์— ํ•„์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋ฏธ๋ฆฌ ์ค€๋น„๋œ Ubuntu ๊ธฐ๋ฐ˜ Vagrant Box๋ฅผ ๋งŒ๋“œ๋Š” ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

Narwhal์˜ ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ์„ ๋ณด๋ฉด

Packer
  โ†“
Ubuntu
  โ†“
Kubernetes prerequisites
  โ†“
Vagrant
  โ†“
Narwhal cluster

๋ผ๋Š” ์—ฐ๊ฒฐ์ด ์ƒ๊น๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ๊ฐœ๋ณ„ repository๋Š” ๋…๋ฆฝ๋œ ํ”„๋กœ์ ํŠธ๋ผ๊ธฐ๋ณด๋‹ค ํ•˜๋‚˜์˜ ๊ฐœ๋ฐœ ecosystem์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

kube-ready-box
       โ†“
    Narwhal
       โ†“
Narwhal Portal
       โ†“
 Kubernetes IDP

๊ทธ๋ฆฌ๊ณ  ์ด ์ „์ฒด ecosystem์„ ์—ฌ๋Ÿฌ AI๋ฅผ ์ด์šฉํ•ด ๊ณ„์† ๋ฐœ์ „์‹œํ‚ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


8. AI ์‹œ๋Œ€์˜ ์˜คํ”ˆ์†Œ์Šค ๊ฐœ๋ฐœ์€ "์ฝ”๋“œ ์ƒ์„ฑ"๋ณด๋‹ค "์‹œ์Šคํ…œ ์œ ์ง€"๊ฐ€ ์ค‘์š”ํ•˜๋‹ค

AI๋ฅผ ์ด์šฉํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ๋ฒ„์ „์„ ๋งŒ๋“œ๋Š” ์†๋„๋Š” ํ™•์‹คํžˆ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์—์„œ ์ง„์งœ ์–ด๋ ค์šด ๊ฒƒ์€ ์ฒซ ๋ฒˆ์งธ ๋ฒ„์ „์ด ์•„๋‹™๋‹ˆ๋‹ค.

์–ด๋ ค์šด ๊ฒƒ์€

v0.1
 โ†“
v0.2
 โ†“
v1.0
 โ†“
Kubernetes upgrade
 โ†“
dependency upgrade
 โ†“
์ƒˆ๋กœ์šด architecture
 โ†“
์ƒˆ๋กœ์šด ์š”๊ตฌ์‚ฌํ•ญ

์„ ๊ณ„์† ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Narwhal์—์„œ ์ œ๊ฐ€ ์ค‘์š”ํ•˜๊ฒŒ ๋ณด๊ณ  ์žˆ๋Š” ๊ฒƒ๋„ ๋ฐ”๋กœ ์ด ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋Š” Kubernetes v1.35๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ GitOps๋กœ 35๊ฐœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹จ์ˆœํžˆ ๋งŽ์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฌถ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ†ตํ•ฉ ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•œ incident๋ฅผ ๊ณ„์† ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋กœ ์—ฐ๊ฒฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹ ์ž์ฒด๊ฐ€

Code
  +
Configuration
  +
Documentation
  +
Tests
  +
Incident history
  +
Automation

์˜ ๊ฒฐํ•ฉ์œผ๋กœ ๋ฐ”๋€Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

AI๊ฐ€ ๋ฐœ์ „ํ• ์ˆ˜๋ก ์ด ๊ตฌ์กฐ๋Š” ๋” ์ค‘์š”ํ•ด์งˆ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.


9. ๊ฐœ๋ฐœ์ž์˜ ์—ญํ• ๋„ ๋‹ฌ๋ผ์ง€๊ณ  ์žˆ๋‹ค

AI๊ฐ€ ์ฝ”๋“œ ์ž‘์„ฑ ๋Šฅ๋ ฅ์„ ๋น ๋ฅด๊ฒŒ ๊ฐ€์ ธ์˜ค๋ฉด์„œ ๊ฐœ๋ฐœ์ž์˜ ์—ญํ• ๋„ ๋ณ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ „์—๋Š”

๋ฌด์—‡์„ ๊ตฌํ˜„ํ•  ๊ฒƒ์ธ๊ฐ€?
        โ†“
์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•  ๊ฒƒ์ธ๊ฐ€?
        โ†“
์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค

๊ฐ€ ์ฃผ์š” ๊ณผ์ •์ด์—ˆ๋‹ค๋ฉด,

์ง€๊ธˆ์€ ์ ์ 

๋ฌด์—‡์„ ๋งŒ๋“ค ๊ฒƒ์ธ๊ฐ€?
        โ†“
์–ด๋–ค ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค ๊ฒƒ์ธ๊ฐ€?
        โ†“
AI์—๊ฒŒ ์–ด๋–ป๊ฒŒ ์ž‘์—…์„ ๋ถ„ํ•ดํ•  ๊ฒƒ์ธ๊ฐ€?
        โ†“
AI์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฒ€์ฆํ•  ๊ฒƒ์ธ๊ฐ€?
        โ†“
์–ด๋–ค ์ง€์‹์„ repository์— ๋‚จ๊ธธ ๊ฒƒ์ธ๊ฐ€?

๊ฐ€ ๋” ์ค‘์š”ํ•ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ AI ์‹œ๋Œ€์˜ ๊ฐœ๋ฐœ์ž๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์‚ฌ๋žŒ์ธ ๋™์‹œ์—

AI๊ฐ€ ์ œ๋Œ€๋กœ ์ผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์„ค๊ณ„ํ•˜๋Š” ์‚ฌ๋žŒ

์ด ๋˜์–ด๊ฐ€๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.


10. ๊ทธ๋ž˜์„œ AI๋ฅผ ์œ„ํ•œ "๊ฐœ๋ฐœ ํ™˜๊ฒฝ" ์ž์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ๋‹ค

์ด๋Ÿฐ ์ƒ๊ฐ์ด ์ด์–ด์ง€๋ฉด์„œ ์ œ๊ฐ€ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ๊ฒƒ์ด Luna Chat Coder์ž…๋‹ˆ๋‹ค.

Narwhal์ฒ˜๋Ÿผ ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฌ๋Ÿฌ AI๊ฐ€ ํ•จ๊ป˜ ์ˆ˜์ •ํ•˜๋‹ค ๋ณด๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด๋Ÿฐ ์งˆ๋ฌธ์ด ์ƒ๊น๋‹ˆ๋‹ค.

AI๊ฐ€ ๋ฐ”๋€Œ๋ฉด workflow๋„ ๋ฐ”๋€Œ์–ด์•ผ ํ•˜๋Š”๊ฐ€?

์ €๋Š” ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ธ์€ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„๊ตฌ๋„ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋‹ค์Œ์€ repository์— ๋‚จ์•„ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Engineering Rules
    +
Architecture
    +
Tests
    +
Operational Knowledge
    +
Recovery Rules

Luna๋Š” ์ด ๋ถ€๋ถ„์„ repository-local skill์ด๋ผ๋Š” ํ˜•ํƒœ๋กœ ์ •๋ฆฌํ•˜๋ ค๋Š” ์‹œ๋„์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํ˜„์žฌ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋“ค์ด ์„œ๋กœ ๋”ฐ๋กœ ๋–จ์–ด์ ธ ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

AI Tools
 โ”œโ”€ ChatGPT
 โ”œโ”€ Claude
 โ”œโ”€ Gemini
 โ””โ”€ Copilot
       โ”‚
       โ–ผ
Luna Chat Coder
       โ”‚
       โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
       โ–ผ               โ–ผ
   Narwhal        Narwhal Portal
       โ”‚
       โ–ผ
kube-ready-box
       โ”‚
       โ–ผ
 Kubernetes IDP

11. ์ง€๊ธˆ์˜ ๊ฐœ๋ฐœ ๋ฐฉ์‹์€ "AI-assisted"์—์„œ "AI-native"๋กœ ๊ฐ€๋Š” ๊ณผ์ •์ผ์ง€๋„ ๋ชจ๋ฅธ๋‹ค

์ง€๊ธˆ์€ ๋ณดํ†ต AI-assisted development๋ผ๋Š” ํ‘œํ˜„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ œ๊ฐ€ ์‹ค์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๋А๋ผ๋Š” ๊ฒƒ์€ ์กฐ๊ธˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š”

์‚ฌ๋žŒ์ด ๊ฐœ๋ฐœํ•˜๊ณ  AI๊ฐ€ ๋„์™€์ค€๋‹ค.

์˜€๋‹ค๋ฉด,

์ด์ œ๋Š”

์‚ฌ๋žŒ์ด ์‹œ์Šคํ…œ์˜ ๋ฐฉํ–ฅ๊ณผ ํ’ˆ์งˆ ๊ธฐ์ค€์„ ์ •ํ•˜๊ณ  ์—ฌ๋Ÿฌ AI๊ฐ€ ๊ตฌํ˜„๊ณผ ํƒ์ƒ‰์„ ํ•จ๊ป˜ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์— ๊ฐ€๊นŒ์›Œ์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋Š” ์•„๋งˆ

AI๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์„ ์ „์ œ๋กœ repository์™€ development workflow ์ž์ฒด๋ฅผ ์„ค๊ณ„ํ•œ๋‹ค.

๊ฐ€ ๋ ์ง€๋„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

Narwhal์„ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ incident๋ฅผ ํ…Œ์ŠคํŠธ๋กœ ๋‚จ๊ธฐ๊ณ ,

Luna๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ AI workflow๋ฅผ repository์— ๋‚จ๊ธฐ๊ณ ,

Portal์„ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ architecture์™€ conventions๋ฅผ AI๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์กฐํ™”ํ•˜๋Š” ๊ฒƒ๋„ ๊ฒฐ๊ตญ ๊ฐ™์€ ๋ฐฉํ–ฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.


๋งˆ๋ฌด๋ฆฌ

AI ์‹œ๋Œ€์— ์˜คํ”ˆ์†Œ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๋„ ๋ฐ”๋€Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ „์—๋Š” ํ˜ผ์ž์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  GitHub์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด ์ค‘์‹ฌ์ด์—ˆ๋‹ค๋ฉด,

์ง€๊ธˆ์€ ์—ฌ๋Ÿฌ AI ๋„๊ตฌ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉํ•˜๋ฉด์„œ๋„

Repository
Architecture
Tests
Documentation
Operational Knowledge
AI Workflow

๋ฅผ ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ œ๊ฐ€ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” Narwhal, Narwhal Portal, kube-ready-box, Luna Chat Coder๋„ ๊ฐ๊ฐ ๋…๋ฆฝ์ ์ธ ํ”„๋กœ์ ํŠธ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ํ•˜๋‚˜์˜ ๊ฐœ๋ฐœ ๋ฐฉํ–ฅ์—์„œ ์ถœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

AI๋ฅผ ์ด์šฉํ•ด ๋” ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, AI๋ฅผ ์ด์šฉํ•ด ๋” ํฐ ์‹œ์Šคํ…œ์„ ์ง€์†์ ์œผ๋กœ ๋งŒ๋“ค์–ด ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ.

์ง€๊ธˆ์€ ๊ทธ ๋ฐฉ๋ฒ•์„ ์ง์ ‘ ์‹คํ—˜ํ•˜๊ณ  ์žˆ๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

๊ด€๋ จ ํ”„๋กœ์ ํŠธ:

๊ด€๋ จ OSS