๊ด€๋ฆฌ ๋ฉ”๋‰ด

<Hello Hosung๐Ÿ˜Ž/>

[k8s] ๋‹จ์ผ ํ”„๋กœ์ ํŠธ vs ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋น„๊ต ๋ณธ๋ฌธ

โš“๏ธ k8s

[k8s] ๋‹จ์ผ ํ”„๋กœ์ ํŠธ vs ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋น„๊ต

์ขŒ์ถฉ์šฐ๋Œ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ผ๊ธฐ๐Ÿง 2025. 8. 16. 00:55

 

1๏ธโƒฃ ๋“ค์–ด๊ฐ€๋ฉฐ

  • Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค(K8s) ์œ„์— ๋ฐฐํฌํ•  ๋•Œ
  • ํ•œ ํ”„๋กœ์ ํŠธ ์•ˆ์— ์—ฌ๋Ÿฌ API๋ฅผ ๋งŒ๋“ค์ง€, ์•„๋‹ˆ๋ฉด API๋ณ„๋กœ ๋ณ„๋„ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ• ์ง€ ๊ณ ๋ฏผ๋˜๋Š” ์ƒํ™ฉ
  • ์š”์ฒญ ๋ถ„์‚ฐ, ์Šค์ผ€์ผ๋ง, ์žฅ์•  ๊ฒฉ๋ฆฌ ์ธก๋ฉด์—์„œ ๋น„๊ต

2๏ธโƒฃ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ธฐ๋ณธ ๊ตฌ์กฐ

  • Deployment: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‹จ์œ„, ํŒŒ๋“œ(Pod) ์ƒ์„ฑ/๊ด€๋ฆฌ
  • Service: Deployment ๋‚ด๋ถ€ ํŒŒ๋“œ์— ์š”์ฒญ์„ ์ „๋‹ฌ, ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ
  • Ingress + Nginx: ์™ธ๋ถ€ ์š”์ฒญ์„ Service๋กœ ๋ผ์šฐํŒ…ํ•˜๊ณ , ์—ฌ๋Ÿฌ ํŒŒ๋“œ์— ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ

 

[์š”์ฒญํ๋ฆ„๊ทธ๋ฆผ]

์™ธ๋ถ€ ์š”์ฒญ → Ingress(์ง€๋„) → Nginx(ํŠธ๋ž˜ํ”ฝ ๋ฐฐ๋ถ„) → Service → ์—ฌ๋Ÿฌ ํŒŒ๋“œ

 

  • Ingress: URL/๋„๋ฉ”์ธ ๊ทœ์น™ ๊ด€๋ฆฌ
  • Nginx: ํŒŒ๋“œ ๋‹จ์œ„ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ

3๏ธโƒฃ ํ•œ ํ”„๋กœ์ ํŠธ ์•ˆ์— ์—ฌ๋Ÿฌ API (/users, /orders)

  • Deployment 1๊ฐœ, ์—ฌ๋Ÿฌ ํŒŒ๋“œ
  • ์š”์ฒญ ํ๋ฆ„:
/users ์š”์ฒญ → Service → ํŒŒ๋“œ1 or ํŒŒ๋“œ2
/orders ์š”์ฒญ → Service → ํŒŒ๋“œ1 or ํŒŒ๋“œ2

 

  • ์žฅ์ 
    • ๊ตฌ์กฐ ๋‹จ์ˆœ, ๋ฐฐํฌ ์‰ฌ์›€
    • ์ž‘์€ ํŒ€/์„œ๋น„์Šค์— ์ ํ•ฉ
  • ๋‹จ์ 
    • API๋ณ„ ๋…๋ฆฝ ์Šค์ผ€์ผ ๋ถˆ๊ฐ€
    • /users ํญ์ฆ → /orders์™€ ํ•จ๊ป˜ ์ „์ฒด Deployment ์Šค์ผ€์ผ๋ง
    • ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์ „์ฒด ์„œ๋น„์Šค์— ์˜ํ–ฅ

 

 

์™ธ๋ถ€ ์š”์ฒญ (/users, /orders)
       ↓
Ingress (URL ๊ตฌ๋ถ„)
       ↓
Service (ํ•˜๋‚˜)
       ↓
Nginx → ํŒŒ๋“œ1, ํŒŒ๋“œ2, ํŒŒ๋“œ3 (์š”์ฒญ ๋‹จ์œ„๋กœ ๋ถ„์‚ฐ)

 


4๏ธโƒฃ API๋ณ„๋กœ ๋ณ„๋„ ํ”„๋กœ์ ํŠธ (๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค)

  • /users Deployment, /orders Deployment ๊ฐ๊ฐ ์ƒ์„ฑ
  • ์š”์ฒญ ํ๋ฆ„:
/users → Ingress → Service(users) → Nginx → user ํŒŒ๋“œ1,2,3
/orders → Ingress → Service(orders) → Nginx → order ํŒŒ๋“œ1,2,3

 

  • ์žฅ์ 
    • API๋ณ„ ๋…๋ฆฝ ์Šค์ผ€์ผ ๊ฐ€๋Šฅ
    • ์žฅ์•  ๊ฒฉ๋ฆฌ ๊ฐ€๋Šฅ
    • ๋ฆฌ์†Œ์Šค ํšจ์œจ์ 
  • ๋‹จ์ 
    • ๊ด€๋ฆฌ ๋ณต์žก๋„ ↑
    • ์„œ๋น„์Šค๊ฐ„ ํ†ต์‹ , Config ๊ด€๋ฆฌ ํ•„์š”

5๏ธโƒฃ Nginx vs Ingress ์—ญํ•  ์ •๋ฆฌ

๊ตฌ์„ฑ ์š”์†Œ์—ญํ• 

 

Ingress URL/๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ… ๊ทœ์น™ ์ œ๊ณต, ์™ธ๋ถ€ ์š”์ฒญ → Service ๋งคํ•‘
Nginx ์‹ค์ œ ํŠธ๋ž˜ํ”ฝ์„ ํŒŒ๋“œ ๋‹จ์œ„๋กœ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ, ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ

๋น„์œ :

  • Ingress = ์ง€๋„ → “/users ์š”์ฒญ์€ Service1, /orders ์š”์ฒญ์€ Service2๋กœ ๊ฐ€๋ผ”
  • Nginx = ๊ตํ†ต ๊ฒฝ์ฐฐ → “ํŒŒ๋“œ 1,2,3 ์ค‘ ํ•œ ๊ณณ์œผ๋กœ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ”

6๏ธโƒฃ ์š”์ฒญ ๋‹จ์œ„ vs API๋ณ„ ๋…๋ฆฝ ์Šค์ผ€์ผ

ํ•ญ๋ชฉํ•œ ํ”„๋กœ์ ํŠธ๋ณ„๋„ ํ”„๋กœ์ ํŠธ

 

์š”์ฒญ ๋‹จ์œ„ ๋ถ„์‚ฐ ํŒŒ๋“œ ๋‹จ์œ„ โœ… ํŒŒ๋“œ ๋‹จ์œ„ โœ…
API๋ณ„ ๋…๋ฆฝ ์Šค์ผ€์ผ โŒ โœ…
์žฅ์•  ๊ฒฉ๋ฆฌ โŒ โœ…
๋ฆฌ์†Œ์Šค ํšจ์œจ ๋‚ฎ์Œ ๋†’์Œ

๐Ÿ’ก ํ•ต์‹ฌ: ํŒŒ๋“œ ๋‹จ์œ„๋กœ ์š”์ฒญ์€ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ž‘์€ ํŠธ๋ž˜ํ”ฝ์—์„œ๋Š” ๋‹จ์ผ ํ”„๋กœ์ ํŠธ๋„ ์ถฉ๋ถ„

  • ๋‹จ, API๋ณ„ ํŠธ๋ž˜ํ”ฝ ํŒจํ„ด์ด ๋‹ค๋ฅด๊ณ  ๋…๋ฆฝ ์Šค์ผ€์ผ๋ง ํ•„์š”ํ•˜๋ฉด ๋ณ„๋„ ํ”„๋กœ์ ํŠธ(๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค) ๊ถŒ์žฅ

7๏ธโƒฃ ํ˜„์—…์—์„œ๋Š”?

๊ทœ๋ชจ/์ƒํ™ฉ์„ ํƒ

 

์†Œ๊ทœ๋ชจ ์„œ๋น„์Šค/์Šคํƒ€ํŠธ์—… ๋‹จ์ผ ํ”„๋กœ์ ํŠธ + Deployment + Ingress + Nginx
์ค‘๋Œ€ํ˜• ์„œ๋น„์Šค/๊ธฐ์—… API๋ณ„ ํ”„๋กœ์ ํŠธ(๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค) + Deployment + Service + Ingress + Nginx

8๏ธโƒฃ ๊ฒฐ๋ก 

  • ์ž‘์€ ์„œ๋น„์Šค → ํ•œ ํ”„๋กœ์ ํŠธ ์•ˆ์— ์—ฌ๋Ÿฌ API ๋งŒ๋“ค์–ด๋„ ์ถฉ๋ถ„, ์š”์ฒญ ๋‹จ์œ„๋กœ ํŒŒ๋“œ์— ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ
  • ํฐ ์„œ๋น„์Šค → API๋ณ„๋กœ ๋ถ„๋ฆฌํ•ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ฐฐํฌ, ๋…๋ฆฝ ์Šค์ผ€์ผ๋ง ๊ฐ€๋Šฅ
  • Nginx + Ingress ์—ญํ•  ์ดํ•ด → ๊ตฌ์กฐ ์„ค๊ณ„๊ฐ€ ์‰ฌ์›Œ์ง€๊ณ , ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ/๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ๋ช…ํ™•

 

'โš“๏ธ k8s' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[k8s] Deployment / Service / Pod  (2) 2025.08.16