Skip to content

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋””ํ”Œ๋กœ์ด๋จผํŠธ ๋ฐฐํฌ ๋ฐฉ์‹์˜ ์ข…๋ฅ˜ย #35

@jokbalkiller

Description

@jokbalkiller

๐Ÿฅท๐Ÿป ๊ธ€์„ ์ฝ๊ณ  ๊ผญ ๋Œ€๋‹ตํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋Š” ์งˆ๋ฌธ

  1. ๋กค๋ง์—…๋ฐ์ดํŠธ์‹œ ์šด์˜๋˜๋Š” POD์˜ ์ด ๊ฐœ์ˆ˜๋Š” ๊ณ ์ •๋˜๋‚˜์š”?
  2. ๋กค๋ง ์—…๋ฐ์ดํŠธ ์‹œ ์†๋„๋ฅผ ์กฐ์ ˆ ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  3. ์‚ญ์ œํ• ๋•Œ ์–ด๋–ค POD๊ฐ€ ์‚ญ์ œ๋˜๋‚˜์š”?

๐Ÿ“š ๋ชฉ์ฐจ

  1. POD ์˜ค๋ธŒ์ ํŠธ์˜ ์ข…๋ฅ˜
  2. Rolling Update
  3. Blue, Green
  4. Canary
  5. ์‹ค์ œ ์‚ฌ์šฉ ํ˜„ํ™ฉ๊ณผ ์ธ์‚ฌ์ดํŠธ

๐Ÿ“– ํ•ต์‹ฌ ๋‚ด์šฉ

1. POD๋ฅผ ๋„์šธ์ˆ˜ ์žˆ๋Š” ์˜ค๋ธŒ์ ํŠธ ์ข…๋ฅ˜

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—๋Š” POD๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์˜ค๋ธŒ์ ํŠธ๋“ค์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ž„์˜ 2์ฐจ์ „์ง์ฒ˜๋Ÿผ POD์— ๊ฐ๊ฐ์˜ ํŠน์„ฑ๋“ค์ด ํ•ฉ์ณ์ ธ ์ง„ํ™”๋œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ด๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

POD + ๋ฌด์กฐ๊ฑด ๋”ฑ ํ•œ๋ฒˆ๋งŒ ๋Œ์•„ = Job(eg, ํ•œ๋ฒˆ๋งŒ ์‹คํ–‰๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ)
POD + ๋ณต์ œ์ธ๋ฐ ์ƒํƒœ๊ฐ’์ด ๋‹ค ๋‹ฌ๋ผ์„œ ๋”ฐ๋กœ ๊ตฌ๋ถ„ํ•ด = StatefulSet(eg,DB์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์กด์žฌํ•ด๋„ ์•ˆ์— ๋‹ด๊ณ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ฌ๋ผ ๋”ฐ๋กœ ๊ตฌ๋ถ„)
POD + ์ƒํƒœ์ €์žฅ ๊ทธ๋Ÿฐ๊ฑฐ์—†๊ณ  ๊ทธ๋ƒฅ ๋˜‘๊ฐ™์€๊ฑฐ ๋ฌดํ•œ๋ณต์ œ = Deployment(eg,ํ”„๋ก ํŠธ์—”๋“œ,๋ฐฑ์—”๋“œ์™€ ๊ฐ™์€ ์•ฑ๋“ค์€ ๋ณดํ†ต ํŠน์ • ์ƒํƒœ๊ฐ’์„ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ˆœ API๋งŒ ์ฒ˜๋ฆฌ)
POD + ๋…ธ๋“œ๋งˆ๋‹ค ํ•œ๊ฐœ์”ฉ๋งŒ ๋“ค์–ด๊ฐ€์„œ ์ฃฝ์ง€๋งˆ = DemonSet(eg,๋งคํŠธ๋ฆญ ๋น„ํŠธ,kube-proxy ์ฒ˜๋Ÿผ ๋…ธ๋“œ๋งˆ๋‹ค ๋”ฑ ํ•œ๊ฐœ์”ฉ๋งŒ ์žˆ์–ด๋„ ๋˜๋Š”๊ฒƒ๋“ค)

ํ‚คํฌ์ธํŠธ1. ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐฑ์—”๋“œ๋Š” ์™œ ์ฃผ๋กœ Deployment ๋กœ ๋„์›Œ์ง€๋‚˜์š”?

๊ทธ์ค‘์—์„œ๋„ ์ด๋ฒˆ ๊ธ€์€ Deployment์˜ ๋ฐฐํฌ ๋ฐฉ์‹์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

2. Rolling Update(Default)

Rolling์€ Deployment์˜ ๊ธฐ๋ณธ ๋ฐฐํฌ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์‹ค ์ด์™ธ ๋‚˜๋จธ์ง€ ๋ฐฐํฌ ๋ฐฉ๋ฒ•์€ ํ”„๋กœ์„ธ์Šค์ ์œผ๋กœ ์œ ์ €๋“ค์ด ๊ณ ์•ˆํ•ด๋‚ธ ๋ฐฐํฌ ๋ฐฉ์‹์ธ๋ฟ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์ง์ ‘ ์ง€์›ํ•˜๋Š” ์˜ต์…˜์€ ๋กค๋ง๋ฟ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋งํ•˜๋ฉด ๋กค๋ง์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๋ผ๊ณ  ๋””ํ”Œ๋กœ์ด๋จผํŠธ๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ •๋„๋กœ ๋งค์šฐ ์ค‘์š”ํ•œ ๋ฐฐํฌ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
๋กค๋ง ์—…๋ฐ์ดํŠธ๋Š” ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ๋„์›Œ์ง„ POD ์—์„œ ์กฐ๊ธˆ์”ฉ ์ ์ง„์ ์œผ๋กœ ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€์˜ POD ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์ด์ œ Deployment์—์„œ ๋กค๋ง์—…๋ฐ์ดํŠธ์™€ ๊ด€๋ จ๋œ ์ฃผ์š” ์˜ต์…˜ 2๊ฐ€์ง€๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์˜ต์…˜๊ฐ’์—๋Š” N ํ˜น์€ N%๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

max_surge: ์—…๋ฐ์ดํŠธ ์‹œ์ž‘ ์‹œ ์„ค์ •๋œ replicas ๊ฐœ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•˜์—ฌ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ Pod(New)์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜ ๋˜๋Š” ๋น„์œจ(์•„๋ฌด๊ฒƒ๋„ ๋„ฃ์–ด์ฃผ์ง€ ์•Š์œผ๋ฉด 25%), ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด New ๋ฅผ ํ•œ๋ฒˆ์— ์ƒ์„ฑํ•˜๋Š” ๊ฐœ์ˆ˜
max_unavailable : ์—…๋ฐ์ดํŠธ ์‹œ์ž‘ ์‹œ ์‚ญ์ œ๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์กด Pod(Old)์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜ ๋˜๋Š” ๋น„์œจ(์•„๋ฌด๊ฒƒ๋„ ๋„ฃ์–ด์ฃผ์ง€ ์•Š์œผ๋ฉด 25%), ๊ทธ๋ƒฅ ๋‹จ์ˆœํ•˜๊ฒŒ old ๊ฐ€ ํ•œ๋ฒˆ์— ์ง€์›Œ์ง€๋Š” ๊ฐœ์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค.

์—ฌ๊ธฐ์„œ ํฌ์ธํŠธ๋Š” ํ•ด๋‹น ์˜ต์…˜๊ฐ’๋“ค์€ ๋ ˆํ”Œ๋ฆฌ์นด์˜ ์ด ๊ฐœ์ˆ˜๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ๋งŽ๊ฒŒ ์ค„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ฆ‰ 100%๋ฅผ ๋„ฃ์–ด์ฃผ๊ฑฐ๋‚˜ N๊ฐ’์„ ์ด ๋ ˆํ”Œ๋ฆฌ์นด ๊ฐœ์ˆ˜๋กœ ๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ๋งŽ๊ฒŒ ์ฃผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ 2๊ฐ€์ง€์˜ ๊ฒฝ์šฐ ์‹คํ–‰์กฐ์ฐจ ์•ˆ๋˜์ง€๋งŒ ๊ฐ€์ •์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Case 1. max_surge = 100%, ํ˜น์€ ์ด ๋ ˆํ”„๋ฆฌ์นด ์ˆ˜
๋กค๋ง ์—…๋ฐ์ดํŠธ๊ฐ€ ์‹œ์ž‘ํ•˜๋ฉด ๊ธฐ์กด์— ๋Œ๊ณ ์žˆ๋Š” Old Pod๋Š” ๊ทธ๋Œ€๋กœ ์กด์žฌํ•˜๋ฉด์„œ ๋˜‘๊ฐ™์€ ์ˆ˜๋งŒํผ New Pod๊ฐ€ ๋œจ๊ฒŒ๋ฉ๋‹ˆ๋‹ค. ์ „์ฒด๋ฅผ ๋˜‘๊ฐ™์ด ๋ณต์‚ฌํ•˜์—ฌ ํ†ต์งธ๋กœ ๋ฐ”๊ฟ”๋ฒ„๋ฆฌ๊ฒŒ ๋˜๊ธฐ์— Blue, Green ๋ฐฐํฌ์™€ ๊ฐ™๊ฒŒ๋˜๋ฉฐ ๋งค์šฐ ํฐ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ์ง„์  ๋ฐฐํฌ๋ฅผ ๋ชฉ์ ์œผ๋กœ ์„ค๊ณ„ํ•œ ์ทจ์ง€์— ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Case 2. max_unavailable = 100%, ํ˜น์€ ์ด ๋ ˆํ”„๋ฆฌ์นด ์ˆ˜
๋กค๋ง ์—…๋ฐ์ดํŠธ๊ฐ€ ์‹œ์ž‘ํ•˜๋ฉด ๊ธฐ์กด์— ๋Œ๊ณ ์žˆ๋˜ Old Pod๊ฐ€ ํ•˜๋‚˜๋„ ๋‚จ์ง€์•Š๊ณ  ๋™์‹œ์— ๋ชจ๋‘ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์„œ๋น„์Šค์˜ ์ค‘๋‹จ์ด๋ฏ€๋กœ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ๋ชฉ์ ์œผ๋กœ ์„ค๊ณ„ํ•œ ์ทจ์ง€์™€ ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ‚คํฌ์ธํŠธ2. ๋กค๋ง ์—…๋ฐ์ดํŠธ์˜ 2๊ฐ€์ง€์˜ ์˜ต์…˜ ๊ฐ’์€ ์ตœ์†Œ ์ตœ๋Œ€ ์–ด๋–ป๊ฒŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ทธ ์˜๋ฏธ๋Š”?

์œ„ 2๊ฐ€์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋ƒ์— ๋”ฐ๋ผ ๊ฐ™์€ ๋กค๋ง ์—…๋ฐ์ดํŠธ์—ฌ๋„ ํŠน์„ฑ์ด ๋‹ฌ๋ผ์ง€๊ฒŒ ๋˜๊ณ  ์ธํ”„๋ผ๊ฐ€ ๋งค์šฐ ๊ณจ๋•Œ๋ฆฌ๋Š” ๋ถ€๋ถ„์œผ๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค. ์ดํ›„ ๊ณผ์ •์€ ์˜ต์…˜์— ๋”ฐ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฒ˜๋Ÿผ replicas์˜ ๊ฐœ์ˆ˜๋งŒํผ ๋ชจ๋‘ New๊ฐ€ ๋  ๋•Œ๊ฐ€์ง€ ๋ฐ˜๋ณต ์ง„ํ—น๋ฉ๋‹ˆ๋‹ค.

Case 1

    replicas: 4
    strategy {
      rolling_update {
        max_surge       = "0"
        max_unavailable = "1"
      }
      type = "RollingUpdate"
    }

์‚ญ์ œ๊ฐ€ ๋˜์ž๋งˆ์ž ๋‹ค์Œ Old๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ๋•Œ๋ฌธ์— New๊ฐ€ ๋œจ๋Š”๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๋ฉด ๊ทธ ์™€์ค‘์— ๊ณ„์† ์‚ญ์ œํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ ๋„์ค‘ ์ตœ์†Œ 3๊ฐœ์˜ Pod๋Š” ํ•ญ์ƒ ์‹คํ–‰ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
maxSurge 0 ์„ค์ •์œผ๋กœ ์ธํ•ด ํ•œ ๋ฒˆ์— ์ƒˆ๋กœ์šด Pod๋ฅผ ์ถ”๊ฐ€ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ๊ธฐ์กด Pod๋ฅผ ์žฌํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—…๋ฐ์ดํŠธ ๊ณผ์ •์ด ๋” ๋А๋ฆฌ๊ฒŒ ์ง„ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ƒˆ๋กœ์šด Pod๋ฅผ ์ถ”๊ฐ€๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํด๋Ÿฌ์Šคํ„ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Case 2

    replicas: 4
    strategy {
      rolling_update {
        max_surge       = "1"
        max_unavailable = "0"
      }
      type = "RollingUpdate"
    }

Case 3

    replicas: 4
    strategy {
      rolling_update {
        max_surge       = "1"
        max_unavailable = "1"
      }
      type = "RollingUpdate"
    }

๐ŸŽ ์ฃผ์˜ํ•ด์•ผํ•  ์ 
๋กค๋ง ์—…๋ฐ์ดํŠธ๋Š” ์•„๋ฌด๋ฆฌ ๋น„์œจ๊ณผ ์˜ต์…˜์„ ์ž˜ ์กฐ์ ˆํ•œ๋‹ค ํ•˜์—ฌ๋„ ๊ฒฐ๊ตญ Old์™€ New Pod๊ฐ€ ๋™์‹œ์— ๋œจ๋Š” ๊ตฌ๊ฐ„์ด ํ•„์—ฐ์ ์œผ๋กœ ๋ฐœ์ƒํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ๊ตฌ๊ฐ„์—์„œ Old, New POD๊ฐ€ ๋™์‹œ์— DB ํ˜น์€ ๋‚˜๋จธ์ง€ POD๋“ค์— ์—ฐ๊ฒฐ๋˜๋”๋ผ๋„ ์„œ๋น„์Šค์— ๋ฌธ์ œ๊ฐ€ ์—†๋„๋ก ๋กœ์ง์„ ์ž‘์„ฑํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•˜๋ฉฐ ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ ๋กค๋ง ์—…๋ฐ์ดํŠธ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜์—†์œผ๋ฉฐ ํ†ต์œผ๋กœ ๋ฐ”๊ฟ”๋ฒ„๋ฆฌ๋Š” Blue, Green ๋ฐฐํฌ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

Blue, Green

Deployment์™€ Service๋Š” Label๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค๋Š” ํŠน์„ฑ์„ ์ด์šฉํ•˜์—ฌ Deployment๋ฅผ ๊ธฐ์กด๊ณผ ๋ฐ˜๋Œ€์ธ ์ƒ‰์œผ๋กœ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด ๋‘๊ณ  ์„œ๋น„์Šค์˜ ๋ผ๋ฒจ๋งŒ ๋ฐ”๊พธ์–ด์„œ ๋ฐ”๋กœ ๊ต์ฒดํ•œ ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. Old Image๋ฅผ ๊ฐ€์ง„ Backend Deployment ๊ฐ€ ์กด์žฌํ•˜๋ฉฐ version: blue๋ผ๋Š” ํƒœ๊ทธ๊ฐ€ ์žˆ๊ณ  Backend Service๋„ version: blue ํƒœ๊ทธ๊ฐ€ ์กด์žฌํ•˜์—ฌ ์„œ๋กœ ๋งค์น˜๊ฐ€ ์ž˜ ๋œ ์ƒํƒœ๋กœ ์„œ๋น„์Šค๊ฐ€ ์šด์˜๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๊ทธ ์ƒํƒœ์—์„œ ๊ทธ๋Œ€๋กœ New Image๋ฅผ ๊ฐ€์ง„ Backend Deployment๋ฅผ ์ถ”๊ฐ€๋กœ ์ƒ์„ฑํ•˜๋ฉฐ version: green ํƒœ๊ทธ๋ฅผ ๋ถ™์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด Backend Service๋Š” version : blue ์ธ Deployment๋ฅผ ์ฐพ๊ณ ์žˆ๊ธฐ์— ์ „ํ˜€ ์ง€์žฅ์ด ์—†์Šต๋‹ˆ๋‹ค.
  3. Backend Service์—์„œ version : green ํƒœ๊ทธ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  4. Backend Service ๋Š” New Image๋ฅผ ๊ฐ€์ง„ version: green ์˜ Backend Deployment๋ฅผ ์ฐพ์•„ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
  5. ๊ธฐ์กด version: blue ์˜€๋˜ Deployment๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

๐ŸŽ ์ฃผ์˜ํ•ด์•ผํ•  ์ 
ํ•ด๋‹น POD ์™€ ๊ฒฐํ•ฉ์„ฑ์ด ๊ฐ•ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋œ DB๊ฐ™์€ ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ ๋ธ”๋ฃจ ๊ทธ๋ฆฐ์œผ๋กœ ๊ฐ™์ด 2๊ฐ€์ง€๋ฅผ ๋งŒ๋“ค์–ด ๋™์‹œ์— ๋ฐ”๊ฟ”์ค˜์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ํ•„์š”ํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฐ ์ „๋žต์ด ๋งŽ์ด ํ•„์š”ํ•œ ๋ฐฐํฌ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

Canary

๐ŸŽ ์ฃผ์˜ํ•ด์•ผํ•  ์ 
๋กค๋ง ์—…๋ฐ์ดํŠธ๋Š” ์•„๋ฌด๋ฆฌ ๋น„์œจ๊ณผ ์˜ต์…˜์„ ์ž˜ ์กฐ์ ˆํ•œ๋‹ค ํ•˜์—ฌ๋„ ๊ฒฐ๊ตญ Old์™€ New Pod๊ฐ€ ๋™์‹œ์— ๋œจ๋Š” ๊ตฌ๊ฐ„์ด ํ•„์—ฐ์ ์œผ๋กœ ๋ฐœ์ƒํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ๊ตฌ๊ฐ„์—์„œ Old, New POD๊ฐ€ ๋™์‹œ์— DB ํ˜น์€ ๋‚˜๋จธ์ง€ POD๋“ค์— ์—ฐ๊ฒฐ๋˜๋”๋ผ๋„ ์„œ๋น„์Šค์— ๋ฌธ์ œ๊ฐ€ ์—†๋„๋ก ๋กœ์ง์„ ์ž‘์„ฑํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•˜๋ฉฐ ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ ๋กค๋ง ์—…๋ฐ์ดํŠธ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜์—†์œผ๋ฉฐ ํ†ต์œผ๋กœ ๋ฐ”๊ฟ”๋ฒ„๋ฆฌ๋Š” Blue, Green ๋ฐฐํฌ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.


๐Ÿ’ก ์ฐธ๊ณ  ์ž๋ฃŒ:

  • ๋งํฌ๋‚˜ ์ฐธ๊ณ ํ•œ ์ž๋ฃŒ ์ถœ์ฒ˜๋ฅผ ์—ฌ๊ธฐ์— ์ ์–ด ์ฃผ์„ธ์š”.

Metadata

Metadata

Assignees

Labels

์ธํ”„๋ผ์งˆ๋ฌธ ๋ฆฌ์ŠคํŠธ์˜ ์ง๋ฌด ๊ตฌ๋ถ„์„ ์œ„ํ•œ ๋ผ๋ฒจ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions