Kubernetes์˜ ํ™œ๋™์„ฑ ํ”„๋กœ๋ธŒ๋Š” ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”๋ชจ. ๋ฒˆ์—ญ: Zalando์˜ ์ˆ˜์„ ์—”์ง€๋‹ˆ์–ด์ธ Henning Jacobs๋Š” Kubernetes ์‚ฌ์šฉ์ž๋“ค ์‚ฌ์ด์—์„œ ํ™œ์„ฑ(๋ฐ ์ค€๋น„) ํ”„๋กœ๋ธŒ์˜ ๋ชฉ์ ๊ณผ ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ทธ๋Š” ์ด ๋ฐฉ๋Œ€ํ•œ ๋…ธํŠธ์— ์ž์‹ ์˜ ์ƒ๊ฐ์„ ์ •๋ฆฌํ–ˆ๊ณ , ์ด๋Š” ๊ฒฐ๊ตญ K8s ๋ฌธ์„œ์˜ ์ผ๋ถ€๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Kubernetes์˜ ํ™œ๋™์„ฑ ํ”„๋กœ๋ธŒ๋Š” ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์•Œ๋ ค์ง„ ์ƒํƒœ ํ™•์ธ ํ™œ์„ฑ ํ”„๋กœ๋ธŒ (์ฆ‰, ๋ฌธ์ž ๊ทธ๋Œ€๋กœ "์ƒ์กด ๊ฐ€๋Šฅ์„ฑ ํ…Œ์ŠคํŠธ" - ๋Œ€๋žต ๋ฒˆ์—ญ), ๊ฝค ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์œ ์ผํ•œ ์˜ˆ์™ธ๋Š” ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ์ •๋ง ํ•„์š”ํ•˜๊ณ  ํ•ด๋‹น ๊ธฐ๋Šฅ ์‚ฌ์šฉ์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ๊ณผ ๊ฒฐ๊ณผ๋ฅผ ์™„์ „ํžˆ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ„ํ–‰๋ฌผ์—์„œ๋Š” ํ™œ์„ฑ ์ƒํƒœ ๋ฐ ์ค€๋น„ ์ƒํƒœ ํ™•์ธ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ  ์–ด๋–ค ๊ฒฝ์šฐ์—๋„ ์•Œ๋ ค์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋น„์šฉ ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

๋‚ด ๋™๋ฃŒ Sandor๋Š” ์ตœ๊ทผ ์ค€๋น„/ํ™œ์„ฑ ํ”„๋กœ๋ธŒ ์‚ฌ์šฉ๊ณผ ๊ด€๋ จ๋œ ์˜ค๋ฅ˜๋ฅผ ํฌํ•จํ•˜์—ฌ ์ž์‹ ์ด ์ง๋ฉดํ•˜๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜๋ฅผ Twitter์—์„œ ๊ณต์œ ํ–ˆ์Šต๋‹ˆ๋‹ค.

Kubernetes์˜ ํ™œ๋™์„ฑ ํ”„๋กœ๋ธŒ๋Š” ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž˜๋ชป ๊ตฌ์„ฑ๋จ livenessProbe ๊ณ ๋ถ€ํ•˜ ์ƒํ™ฉ(๋ˆˆ๋ฉ์ด ์ข…๋ฃŒ + ์ž ์žฌ์ ์œผ๋กœ ๊ธด ์ปจํ…Œ์ด๋„ˆ/์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘ ์‹œ๊ฐ„)์„ ์•…ํ™”์‹œํ‚ค๊ณ  ์ข…์†์„ฑ ์ €ํ•˜์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ถ€์ •์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋˜ํ•œ๋ณด์‹ญ์‹œ์˜ค ๋‚ด ์ตœ๊ทผ ๊ธฐ์‚ฌ K3s+ACME ์กฐํ•ฉ์˜ ์š”์ฒญ ์ˆ˜ ์ œํ•œ์— ๋Œ€ํ•ด). ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ ์ƒํƒœ ํ™•์ธ๊ณผ ๊ฒฐํ•ฉ๋˜๋ฉด ์ƒํ™ฉ์€ ๋”์šฑ ์•…ํ™”๋ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ DB ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.!

์ผ๋ฐ˜ ๋ฉ”์‹œ์ง€ "ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”" ์ด ๊ฒฝ์šฐ์—๋Š” ๋ณ„๋กœ ๋„์›€์ด ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ค€๋น„ ์ƒํƒœ ๋ฐ ํ™œ์„ฑ ์ƒํƒœ ํ™•์ธ์˜ ๋ชฉ์ ์ด ๋ฌด์—‡์ธ์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์•„๋ž˜ ํ…Œ์ŠคํŠธ์˜ ๋Œ€๋ถ€๋ถ„์€ ์›๋ž˜ Zalando์˜ ๋‚ด๋ถ€ ๊ฐœ๋ฐœ์ž ๋ฌธ์„œ์— ํฌํ•จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ค€๋น„ ์ƒํƒœ ๋ฐ ํ™œ๋™์„ฑ ํ™•์ธ

Kubernetes๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ™œ์„ฑ ํ”„๋กœ๋ธŒ ๋ฐ ์ค€๋น„ ํ”„๋กœ๋ธŒ. HTTP ์š”์ฒญ ๋ณด๋‚ด๊ธฐ, TCP ์—ฐ๊ฒฐ ์—ด๊ธฐ, ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋ช…๋ น ์‹คํ–‰ ๋“ฑ์˜ ์ž‘์—…์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ค€๋น„ ์ƒํƒœ ํ”„๋กœ๋ธŒ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํŠธ๋ž˜ํ”ฝ์„ ์ˆ˜์šฉํ•  ์ค€๋น„๊ฐ€ ๋œ ์‹œ๊ธฐ๋ฅผ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ค€๋น„๋˜๋ฉด ํฌ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ํ•œ ๊ฐ€์ง€ ์šฉ๋„๋Š” Kubernetes ์„œ๋น„์Šค(ํŠนํžˆ Ingress)์˜ ๋ฐฑ์—”๋“œ๋กœ ์‚ฌ์šฉ๋˜๋Š” Pod๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

ํ™œ์„ฑ/์ค€๋น„ ํ™•์ธ์— ์‹คํŒจํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐฐํฌํ•˜๋ ค๊ณ  ํ•˜๋ฉด Kubernetes๊ฐ€ ์ƒํƒœ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ฉด์„œ ํ•ด๋‹น ๋กค์•„์›ƒ์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. Ready ๋ชจ๋“  ํฌ๋“œ์—์„œ.

์˜ˆ

๋‹ค์Œ์€ ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•˜๋Š” ์ค€๋น„ ํ”„๋กœ๋ธŒ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค. /health ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ HTTP๋ฅผ ํ†ตํ•ด(๊ฐ„๊ฒฉ: 10 ์ดˆ, ์‹œ๊ฐ„ ์ œํ•œ: 1 ์ดˆ, ์„ฑ๊ณต ๊ธฐ์ค€์ : 1, ์‹คํŒจ ์ž„๊ณ„๊ฐ’: ์‚ผ):

# ั‡ะฐัั‚ัŒ ะพะฑั‰ะตะณะพ ะพะฟะธัะฐะฝะธั deployment'ะฐ/ัั‚ะตะบะฐ
podTemplate:
  spec:
    containers:
    - name: my-container
      # ...
      readinessProbe:
        httpGet:
          path: /health
          port: 8080

์ถ”์ฒœ

  1. HTTP ์—”๋“œํฌ์ธํŠธ(REST ๋“ฑ)๊ฐ€ ์žˆ๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ ํ•ญ์ƒ ์ค€๋น„ ์ƒํƒœ ํ”„๋กœ๋ธŒ๋ฅผ ์ •์˜ํ•˜์‹ญ์‹œ์˜ค., ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(ํฌ๋“œ)์ด ํŠธ๋ž˜ํ”ฝ์„ ์ˆ˜๋ฝํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. ์ค€๋น„ ์ƒํƒœ ํ”„๋กœ๋ธŒ๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ์‹ค์ œ ์›น ์„œ๋ฒ„ ํฌํŠธ์˜ ๊ฐ€์šฉ์„ฑ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.:
    • "admin" ๋˜๋Š” "management"(์˜ˆ: 9090)๋ผ๊ณ  ํ•˜๋Š” ๊ด€๋ฆฌ ๋ชฉ์ ์œผ๋กœ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ readinessProbe, ๊ธฐ๋ณธ HTTP ํฌํŠธ(์˜ˆ: 8080)๊ฐ€ ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•  ์ค€๋น„๊ฐ€ ๋œ ๊ฒฝ์šฐ์—๋งŒ ์—”๋“œํฌ์ธํŠธ๊ฐ€ OK๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”*.

      *์ €๋Š” Zalando์—์„œ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์€ ์‚ฌ๋ก€๋ฅผ ์ตœ์†Œ ํ•œ ๊ฑด ์ด์ƒ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. readinessProbe '๊ด€๋ฆฌ' ํฌํŠธ๋ฅผ ํ™•์ธํ–ˆ๋Š”๋ฐ, ์บ์‹œ ๋กœ๋”ฉ ๋ฌธ์ œ๋กœ ์ธํ•ด ์„œ๋ฒ„ ์ž์ฒด๊ฐ€ ์ž‘๋™์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

    • ์ค€๋น„ ์ƒํƒœ ํ”„๋กœ๋ธŒ๋ฅผ ๋ณ„๋„์˜ ํฌํŠธ์— ์—ฐ๊ฒฐํ•˜๋ฉด ๊ธฐ๋ณธ ํฌํŠธ์˜ ๊ณผ๋ถ€ํ•˜๊ฐ€ ์ƒํƒœ ํ™•์ธ์— ๋ฐ˜์˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์„œ๋ฒ„์˜ ์Šค๋ ˆ๋“œ ํ’€์ด ๊ฐ€๋“ ์ฐผ์ง€๋งŒ ์ƒํƒœ ํ™•์ธ์—์„œ๋Š” ์—ฌ์ „ํžˆ ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ด๋ผ๊ณ  ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ).
  3. ํ™•์ธ ์ค€๋น„ ์ƒํƒœ ํ”„๋กœ๋ธŒ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ดˆ๊ธฐํ™”/๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฐ€๋Šฅ;
    • ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ์ดˆ๊ธฐํ™”๊ฐ€ ์™„๋ฃŒ๋œ ํ›„์—๋งŒ HTTP ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์˜ˆ: ํ”Œ๋ผ์ด์›จ์ด ๋“ฑ๋“ฑ.); ์ฆ‰, ์ƒํƒœ ํ™•์ธ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋Œ€์‹  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์›น ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜์ง€ ๋งˆ์„ธ์š”*.

      * ํฌ๋“œ ์™ธ๋ถ€์˜ ์ดˆ๊ธฐํ™” ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ๋…๋ฆฝํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ์ฆ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์™ธ๋ถ€ ์กฐ์ • ์—†์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์›ํ•˜๋Š” ์ƒํƒœ๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํŒฌ์ž…๋‹ˆ๋‹ค.

  4. ์‚ฌ์šฉ httpGet ์ผ๋ฐ˜์ ์ธ ์ƒํƒœ ํ™•์ธ ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ†ตํ•œ ์ค€๋น„ ์ƒํƒœ ํ™•์ธ(์˜ˆ: /health).
  5. ๊ธฐ๋ณธ ๊ฒ€์‚ฌ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ดํ•ด (interval: 10s, timeout: 1s, successThreshold: 1, failureThreshold: 3):
    • ๊ธฐ๋ณธ ์˜ต์…˜์€ ํฌ๋“œ๊ฐ€ ์ค€๋น„๋˜์ง€ ์•Š์€ ์•ฝ 30์ดˆ ํ›„(3๋ฒˆ์˜ ์˜จ์ „์„ฑ ๊ฒ€์‚ฌ ์‹คํŒจ).
  6. ๊ธฐ์ˆ  ์Šคํƒ(์˜ˆ: Java/Spring)์—์„œ ํ—ˆ์šฉํ•˜๋Š” ๊ฒฝ์šฐ "๊ด€๋ฆฌ" ๋˜๋Š” "๊ด€๋ฆฌ"์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒํƒœ ๋ฐ ๋ฉ”ํŠธ๋ฆญ ๊ด€๋ฆฌ๋ฅผ ์ผ๋ฐ˜ ํŠธ๋ž˜ํ”ฝ๊ณผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • ํ•˜์ง€๋งŒ ํฌ์ธํŠธ 2๋ฅผ ์žŠ์ง€ ๋งˆ์„ธ์š”.
  7. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ค€๋น„ ์ƒํƒœ ํ”„๋กœ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์บ์‹œ๋ฅผ ์›Œ๋ฐ์—…/๋กœ๋“œํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์›Œ๋ฐ์—…๋  ๋•Œ๊นŒ์ง€ 503 ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋‚˜๋Š” ๋˜ํ•œ ๋‹น์‹ ์ด ์ƒˆ๋กœ์šด ์ˆ˜ํ‘œ๋ฅผ ์ฝ์–ด ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค startupProbe, ๋ฒ„์ „ 1.16์— ๋“ฑ์žฅ (์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋Ÿฌ์‹œ์•„์–ด๋กœ ์ผ์Šต๋‹ˆ๋‹ค ์—ฌ๊ธฐ์— - ๋Œ€๋žต. ๋ฒˆ์—ญ).

์ฃผ์˜ ์‚ฌํ•ญ

  1. ์™ธ๋ถ€ ์˜์กด์„ฑ์— ์˜์กดํ•˜์ง€ ๋งˆ์„ธ์š” (์˜ˆ: ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค) ์ค€๋น„/ํ™œ์„ฑ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ - ์ด๋กœ ์ธํ•ด ๊ณ„๋‹จ์‹ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด ํ•˜๋‚˜์˜ Postgres ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋”ฐ๋ผ 10๊ฐœ์˜ ํฌ๋“œ๊ฐ€ ์žˆ๋Š” ์ƒํƒœ ์ €์žฅ REST ์„œ๋น„์Šค๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฒ€์‚ฌ๊ฐ€ DB์— ๋Œ€ํ•œ ์ž‘๋™ ์ค‘์ธ ์—ฐ๊ฒฐ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ/DB ์ธก์— ์ง€์—ฐ์ด ์žˆ์œผ๋ฉด 10๊ฐœ์˜ ํฌ๋“œ๊ฐ€ ๋ชจ๋‘ ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ๋ณด๋‹ค ๋” ๋‚˜์˜๊ฒŒ ๋๋‚œ๋‹ค.
    • Spring Data๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค*.

      * ์ด๋Š” Spring Data Redis์˜ ๊ธฐ๋ณธ ๋™์ž‘(์ ์–ด๋„ ๋‚ด๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ™•์ธํ•œ ๊ฒƒ์ž„)์œผ๋กœ ์ธํ•ด "์น˜๋ช…์ ์ธ" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. Redis๋ฅผ ์ž ์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜๋ฉด ๋ชจ๋“  ํฌ๋“œ๊ฐ€ "์ถฉ๋Œ"ํ–ˆ์Šต๋‹ˆ๋‹ค.

    • ์ด๋Ÿฌํ•œ ์˜๋ฏธ์—์„œ "์™ธ๋ถ€"๋Š” ๋™์ผํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค๋ฅธ ํฌ๋“œ๋ฅผ ์˜๋ฏธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์—ฐ์†์ ์ธ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ฒ€์‚ฌ๋Š” ๋™์ผํ•œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋‹ค๋ฅธ ํฌ๋“œ ์ƒํƒœ์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
      • ๋ถ„์‚ฐ ์ƒํƒœ(์˜ˆ: ํฌ๋“œ์˜ ์ธ๋ฉ”๋ชจ๋ฆฌ ์บ์‹ฑ)๊ฐ€ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š” ํฌ๋“œ์˜ ๊ฒฝ์šฐ(์ •๋ง ํ•„์š”ํ•˜๊ณ  ๊ท€ํ•˜๊ฐ€ ํฌ๋“œ ์‚ฌ์šฉ์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ๊ณผ ๊ฒฐ๊ณผ๋ฅผ ์™„์ „ํžˆ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค):
    • ํ™œ๋™์„ฑ ํ”„๋กœ๋ธŒ๋Š” ์ •์ง€๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์™„์ „ํžˆ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ •์ง€๋œ ํ”„๋กœ์„ธ์Šค ๋ฐ ๊ต์ฐฉ ์ƒํƒœ์™€ ๊ฐ™์€ ์ผ์€ ์ด์ƒ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ข‹์€ ๋Œ€์•ˆ์€ ์˜๋„์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ถฉ๋Œ์‹œํ‚ค๊ณ  ์ด์ „์˜ ์•ˆ์ •๋œ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    • ํ™œ์„ฑ ์—ฌ๋ถ€ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋˜๊ณ  ์ด๋กœ ์ธํ•ด ๋กœ๋“œ ๊ด€๋ จ ์˜ค๋ฅ˜์˜ ๊ฒฐ๊ณผ๊ฐ€ ์•…ํ™”๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ๊ฐ€๋™ ์ค‘์ง€ ์‹œ๊ฐ„(์ ์–ด๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘ ๊ธฐ๊ฐ„ ๋™์•ˆ, ์˜ˆ๋ฅผ ๋“ค์–ด 30์ดˆ ์ด์ƒ)์ด ๋ฐœ์ƒํ•˜์—ฌ ์ƒˆ๋กœ์šด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. , ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์˜ ๋ถ€ํ•˜ ์ฆ๊ฐ€ ๋ฐ ์‹คํŒจ ๊ฐ€๋Šฅ์„ฑ ์ฆ๊ฐ€ ๋“ฑ
    • ์™ธ๋ถ€ ์ข…์†์„ฑ๊ณผ ๊ฒฐํ•ฉ๋œ ํ™œ์„ฑ ๊ฒ€์‚ฌ๋Š” ์—ฐ์‡„ ์‹คํŒจ๋ฅผ ์œ„ํ˜‘ํ•˜๋Š” ์ตœ์•…์˜ ์กฐํ•ฉ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธก์—์„œ ์•ฝ๊ฐ„์˜ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค!
  3. ํ™œ์„ฑ ๋ฐ ์ค€๋น„ ์ƒํƒœ ํ™•์ธ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋‹ฌ๋ผ์•ผํ•ฉ๋‹ˆ๋‹ค:
    • ์ƒํƒœ ํ™•์ธ์€ ๋™์ผํ•˜์ง€๋งŒ ์‘๋‹ต ์ž„๊ณ„๊ฐ’์ด ๋” ๋†’์€ ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(failureThreshold), ์˜ˆ๋ฅผ ๋“ค์–ด ์ƒํƒœ๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ค€๋น„๋˜์ง€ ์•Š์€ 3๋ฒˆ์˜ ์‹œ๋„ ํ›„, 10๋ฒˆ์˜ ์‹œ๋„ ํ›„์— ํ™œ์„ฑ ์—ฌ๋ถ€ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹คํŒจํ•œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.
  4. ์‹คํ–‰ ๊ฒ€์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”, ์ด๋Š” ์ข€๋น„ ํ”„๋กœ์„ธ์Šค์˜ ์ถœํ˜„์œผ๋กœ ์ด์–ด์ง€๋Š” ์•Œ๋ ค์ง„ ๋ฌธ์ œ์™€ ์—ฐ๊ด€๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ฐœ์š”

  • ์ค€๋น„ ์ƒํƒœ ํ”„๋กœ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋“œ๊ฐ€ ํŠธ๋ž˜ํ”ฝ์„ ์ˆ˜์‹ ํ•  ์ค€๋น„๊ฐ€ ๋œ ์‹œ๊ธฐ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
  • ์ค€๋น„ ์ƒํƒœ/ํ™œ์„ฑ ์ƒํƒœ ํ”„๋กœ๋ธŒ๋ฅผ ๋ถ€์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€์šฉ์„ฑ์ด ๊ฐ์†Œํ•˜๊ณ  ์—ฐ์†์ ์ธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes์˜ ํ™œ๋™์„ฑ ํ”„๋กœ๋ธŒ๋Š” ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์ œ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ž๋ฃŒ

1๋…„ 2019์›” 09์ผ 29์ฐจ ์—…๋ฐ์ดํŠธ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์œ„ํ•œ ์ดˆ๊ธฐํ™” ์ปจํ…Œ์ด๋„ˆ ์ •๋ณด: ๊ฐ์ฃผ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

EJ๊ฐ€ ๋‚˜ํ•œํ…Œ ์ƒ๊ธฐ์‹œ์ผœ์คฌ์–ด PDB ์ •๋ณด: ํ™œ์„ฑ ํ™•์ธ์˜ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋Š” Pod ๊ฐ„์˜ ์กฐ์ •์ด ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ํฌ๋“œ ์ค‘๋‹จ ์˜ˆ์‚ฐ(PDB) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋™์‹œ ์˜ค๋ฅ˜ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด ๊ฒ€์‚ฌ๋Š” PDB๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” K8s์— "ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ํ•˜๋‚˜์˜ ํฌ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋˜ ์ƒํ™ฉ์ด ๋” ์•…ํ™”๋˜์ง€ ์•Š๋„๋ก ํฌ๋“œ๋ฅผ ๋ชจ๋‘ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์ง€ ๋งˆ์„ธ์š”"๋ผ๊ณ  ์ง€์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ธŒ๋ผ์ด์–ธ์ด ์™„๋ฒฝํ•˜๊ฒŒ ํ‘œํ˜„ํ–ˆ์–ด์š”: โ€œ๋ฌด์—‡์ด ๋ฌด์—‡์ธ์ง€ ์ •ํ™•ํžˆ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ ํ™œ์„ฑ๋„ ์กฐ์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค"(๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๋„ˆ๋ฌด ํฅ๋ถ„ํ•˜์ง€ ๋งˆ์„ธ์š”).

Kubernetes์˜ ํ™œ๋™์„ฑ ํ”„๋กœ๋ธŒ๋Š” ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2๋…„ 2019์›” 09์ผ 29์ฐจ ์—…๋ฐ์ดํŠธ

์‚ฌ์šฉ ์ „ ์„ค๋ช…์„œ ์ฝ๊ธฐ์— ๋Œ€ํ•ด: ํ•ด๋‹น ์š”์ฒญ์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค(๊ธฐ๋Šฅ ์š”์ฒญ) ํ™œ์„ฑ ํ”„๋กœ๋ธŒ์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋ฒˆ์—ญ๊ฐ€์˜ ์ถ”์‹ 

๋ธ”๋กœ๊ทธ์—์„œ๋„ ์ฝ์–ด๋ณด์„ธ์š”.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€