๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Dev/๋ฐฐํฌ

๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์ „๋žต

 

๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ž€?

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

 

๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์ฃผ์š” ์ „๋žต 3๊ฐ€์ง€

1. ๋ธ”๋ฃจ-๊ทธ๋ฆฐ ๋ฐฐํฌ (Blue-Green Deployment)

์ถœ์ฒ˜ : https://www.koyeb.com/blog/blue-green-rolling-and-canary-continuous-deployments-explained

๊ณผ์ •

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

์žฅ์ 

  • ๊ทธ๋ฆฐ ํ™˜๊ฒฝ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ๋‹ค์‹œ ๋ธ”๋ฃจ ํ™˜๊ฒฝ์œผ๋กœ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ๊ณผ ์œ ์‚ฌํ•œ ํ™˜๊ฒฝ์—์„œ ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ 

  • ๋‘ ๊ฐœ์˜ ํ™˜๊ฒฝ์„ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ธํ”„๋ผ์™€ ๋ฆฌ์†Œ์Šค๊ฐ€ 2๋ฐฐ๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๊ฐ์ง€๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ, ๊ทธ๋ฆฐ ํ™˜๊ฒฝ์œผ๋กœ ๊ฐ€๋Š” ํŠธ๋ž˜ํ”ฝ์ด ๋ชจ๋‘ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ธ”๋ฃจ-๊ทธ๋ฆฐ ๋ฐฐํฌ๋ฅผ ์ง€์›ํ•˜๋Š” ์„œ๋น„์Šค

  • AWS Elastic Beanstalk, AWS Elastic Load Balancing(ELB), AWS CodeDeploy
  • GCP Google Kubernetes Engine(GKE), Google Cloud Run

 

2. ์นด๋‚˜๋ฆฌ ๋ฐฐํฌ (Canary Deployment)

์ถœ์ฒ˜ : https://www.koyeb.com/blog/blue-green-rolling-and-canary-continuous-deployments-explained

๊ณผ์ •

  1. ๊ธฐ์กด ๋ฒ„์ „(stable)๊ณผ ์ƒˆ ๋ฒ„์ „(canary)์„ ๋™์‹œ์— ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  2. ์‚ฌ์šฉ์ž๋ฅผ ๋‘ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„์–ด ์†Œ๊ทœ๋ชจ์˜ ์‚ฌ์šฉ์ž๋Š” ์นด๋‚˜๋ฆฌ ๋ฒ„์ „์œผ๋กœ, ๋‚˜๋จธ์ง€๋Š” ๊ธฐ์กด ๋ฒ„์ „์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  4. ์นด๋‚˜๋ฆฌ ๋ฒ„์ „์ด ์•ˆ์ •์„ฑ์ด ํ™•์ธ๋˜๋ฉด ์ „์ฒด ํŠธ๋ž˜ํ”ฝ์„ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์žฅ์ 

  • ๊ธฐ์กด ๋ฒ„์ „์œผ๋กœ์˜ ๋กค๋ฐฑ์ด ๋น ๋ฆ…๋‹ˆ๋‹ค.
  • ๋ฌธ์ œ ๋ฐœ์ƒ์‹œ ์†Œ๊ทœ๋ชจ์˜ ์‚ฌ์šฉ์ž๋งŒ ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
  • ์‹ค์ œ ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ƒˆ ๋ฒ„์ „์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • * A/B ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    (* ๋‘ ๊ฐ€์ง€ ์ด์ƒ์˜ ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋น„๊ตํ•˜์—ฌ ์–ด๋–ค ๋ฒ„์ „์ด ๋” ๋‚˜์€ ์„ฑ๊ณผ๋ฅผ ๋‚ด๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ)

๋‹จ์ 

  • ๋‘ ๋ฒ„์ „์„ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค์™€ ๋น„์šฉ์ด ์ถ”๊ฐ€๋กœ ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‘ ๋ฒ„์ „์ด ํ•จ๊ป˜ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์นด๋‚˜๋ฆฌ ๋ฐฐํฌ๋ฅผ ์ง€์›ํ•˜๋Š” ์„œ๋น„์Šค

  • AWS CodeDeploy, AWS Elastic Container Service(ECS)
  • GCP Google Kubernetes Engine(GKE), Google Cloud Run

 

3. ๋กค๋ง ๋ฐฐํฌ (Rolling Deployment)

์ถœ์ฒ˜ : https://www.koyeb.com/blog/blue-green-rolling-and-canary-continuous-deployments-explained

๊ณผ์ •

  1. ๊ธฐ์กด ๋ฒ„์ „์˜ ์ผ๋ถ€ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค. 
  2. ๊ต์ฒดํ•œ ์ผ๋ถ€ ์ธ์Šคํ„ด์Šค์—์„œ ์•ˆ์ •์ ์œผ๋กœ ๋™์ž‘ํ•˜๋ฉด ์ ์ง„์ ์œผ๋กœ ๋‚˜๋จธ์ง€ ์ธ์Šคํ„ด์Šค์— ์ƒˆ ๋ฒ„์ „์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. 
  3. ์ „์ฒด ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋ฉด, ๊ตฌ ๋ฒ„์ „์˜ ์ธ์Šคํ„ด์Šค๋Š” ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ๋ฆฌ์†Œ์Šค ํ’€์—์„œ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

์žฅ์ 

  • ๋ธ”๋ฃจ-๊ทธ๋ฆฐ ๋ฐฐํฌ์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ, ์ „์ฒด ์ธํ”„๋ผ๋ฅผ ๋™์ผํ•˜๊ฒŒ ๊ตฌ์„ฑํ•˜๋Š” ๋Œ€์‹  ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋งŒ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ๋กค๋ฐฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์„ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ 

  • ์ „์ฒด ์‹œ์Šคํ…œ์ด ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋˜๊ธฐ๊นŒ์ง€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ธ”๋ฃจ-๊ทธ๋ฆฐ, ์นด๋‚˜๋ฆฌ ๋ฐฐํฌ์— ๋น„ํ•ด ๋กค๋ฐฑํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์นด๋‚˜๋ฆฌ ๋ฐฐํฌ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ธฐ์กด ๋ฒ„์ „๊ณผ ์ƒˆ ๋ฒ„์ „์ด ๋™์‹œ์— ์‹คํ–‰๋  ๋•Œ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กค๋ง ๋ฐฐํฌ๋ฅผ ์ง€์›ํ•˜๋Š” ์„œ๋น„์Šค

  • AWS Elastic Beanstalk, AWS Elastic Container Service(ECS)
  • GCP Google Kubernetes Engine(GKE), Google Cloud Run

 

๋ธ”๋ฃจ-๊ทธ๋ฆฐ ๋ฐฐํฌ vs ์นด๋‚˜๋ฆฌ ๋ฐฐํฌ vs ๋กค๋ง ๋ฐฐํฌ ๋น„๊ต ์ •๋ฆฌ

  ๋ธ”๋ฃจ-๊ทธ๋ฆฐ ๋ฐฐํฌ ์นด๋‚˜๋ฆฌ ๋ฐฐํฌ ๋กค๋ง ๋ฐฐํฌ
์„ค๋ช… ๋ธ”๋ฃจ/๊ทธ๋ฆฐ ๋‘ ๊ฐœ์˜ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑ, ๊ทธ๋ฆฐ ํ™˜๊ฒฝ์— ์ƒˆ ๋ฒ„์ „ ๋ฐฐํฌ ํ›„ ํŠธ๋ž˜ํ”ฝ ์ „ํ™˜ ์ผ๋ถ€ ์‚ฌ์šฉ์ž ํŠธ๋ž˜ํ”ฝ๋งŒ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ๋ฐฐํฌํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•˜๊ณ , ๋ฌธ์ œ ์—†์œผ๋ฉด ์ „์ฒด ํŠธ๋ž˜ํ”ฝ์„ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์ „ํ™˜  ๊ธฐ์กด ๋ฒ„์ „์˜ ์ผ๋ถ€ ์ธ์Šคํ„ด์Šค๋งŒ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•˜๊ณ , ๋ฌธ์ œ ์—†์œผ๋ฉด ๋‚˜๋จธ์ง€ ์ธ์Šคํ„ด์Šค๋„ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์ ์ง„์  ์—…๋ฐ์ดํŠธ
์žฅ์ 
  • ๋น ๋ฅด๊ณ  ๊ฐ„ํŽธํ•œ ๋กค๋ฐฑ
  • ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ๊ณผ ์œ ์‚ฌํ•œ ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ
  • ๋น ๋ฅด๊ณ  ๊ฐ„ํŽธํ•œ ๋กค๋ฐฑ
  • ์ƒˆ ๋ฒ„์ „ ๋ฌธ์ œ ๋ฐœ์ƒ์‹œ ์˜ํ–ฅ ์ตœ์†Œํ™”
  • ์‹ค์ œ ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์ƒ ํ…Œ์ŠคํŠธ
  • A/B ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ
  • ๋น„๊ต์  ์ ์€ ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค
๋‹จ์ 
  • ์ธํ”„๋ผ์™€ ๋ฆฌ์†Œ์Šค๊ฐ€ 2๋ฐฐ๋กœ ํ•„์š”
  • ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ์ „์ฒด ํŠธ๋ž˜ํ”ฝ์— ์˜ํ–ฅ
  • ์ถ”๊ฐ€์ ์ธ ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค
  • ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ
  • ์ „์ฒด ์‹œ์Šคํ…œ ์—…๋ฐ์ดํŠธ ๋น„๊ต์  ์˜ค๋ž˜ ๊ฑธ๋ฆผ
  • ๋น„๊ต์  ๋กค๋ฐฑ์ด ์˜ค๋ž˜ ๊ฑธ๋ฆผ
  • ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ

 

์ฐธ๊ณ 

What Is Blue-Green Deployment?

๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ž€? ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์ „๋žต์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

Blue-Green, Rolling, and Canary: Continuous Deployments Explained