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

DevOps

๋ฌด์ค‘๋‹จ ๋ฐฐํฌ (Zero Downtime Deployment)

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

๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋Š” ์„œ๋น„์Šค ์žฅ์• ์™€ ๋ฐฐํฌ์˜ ๋ถ€๋‹ด์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์šด์˜ ์ค‘์ธ ์„œ๋น„์Šค๋ฅผ ์ค‘๋‹จํ•˜์ง€ ์•Š๊ณ  ์‹ ๊ทœ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ธฐ์ˆ 

 

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

  • ๊ฐœ๋…: ๋‘ ๊ฐœ์˜ ํ™˜๊ฒฝ(๋ธ”๋ฃจ์™€ ๊ทธ๋ฆฐ)์„ ์œ ์ง€ํ•˜๋ฉฐ, ํ˜„์žฌ ์šด์˜ ์ค‘์ธ ์„œ๋น„์Šค ํ™˜๊ฒฝ์„ Blue, ์ƒˆ๋กญ๊ฒŒ ๋ฐฐํฌํ•  ํ™˜๊ฒฝ์„ Green์ด๋ผ๊ณ  ํ•จ
  • ๋ฐฐํฌ ๊ณผ์ •
    • ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ๊ทธ๋ฆฐ ํ™˜๊ฒฝ์— ๋ฐฐํฌํ•œ ํ›„, ์ถฉ๋ถ„ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์นจ
    • ํ…Œ์ŠคํŠธ ์™„๋ฃŒ ํ›„ ํŠธ๋ž˜ํ”ฝ์„ ๋ธ”๋ฃจ ํ™˜๊ฒฝ์—์„œ ๊ทธ๋ฆฐ ํ™˜๊ฒฝ์œผ๋กœ ์ „ํ™˜
    • ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค์‹œ ๋ธ”๋ฃจ ํ™˜๊ฒฝ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „ํ™˜ํ•˜์—ฌ ๋กค๋ฐฑ ์šฉ์ด
  • ์žฅ์ 
    • ๋กค๋ฐฑ์ด ๊ฐ„๋‹จํ•˜๊ณ  ์œ„ํ—˜์ด ์ ์Œ
    • ํ…Œ์ŠคํŠธ๊ฐ€ ์ถฉ๋ถ„ํžˆ ์ด๋ฃจ์–ด์ง„ ํ›„์— ์‹ค์ œ ์„œ๋น„์Šค์— ๋ฐ˜์˜
    • ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ ์—†์Œ
  • ๋‹จ์ 
    • ๋‘ ๊ฐœ์˜ ํ™˜๊ฒฝ์„ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ธํ”„๋ผ ๋น„์šฉ ์ฆ๊ฐ€

 

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

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

 

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

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

 

๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ๋ฐฉ์‹ ๋น„๊ต

์š”์†Œ ๋กค๋ง ๋ฐฐํฌ (Rolling Deployment) ์นด๋‚˜๋ฆฌ ๋ฐฐํฌ (Canary Deployment) ๋ธ”๋ฃจ-๊ทธ๋ฆฐ ๋ฐฐํฌ
(Blue-Green Deployment)
ํŠธ๋ž˜ํ”ฝ๊ณผ ๋ถ€ํ•˜ ํŠธ๋ž˜ํ”ฝ๊ณผ ๋ถ€ํ•˜๊ฐ€ ๋ถ„์‚ฐ๋˜๋ฉฐ, ์ ์ง„์  ์—…๋ฐ์ดํŠธ๋กœ ํŠธ๋ž˜ํ”ฝ ์ค‘๋‹จ ์ตœ์†Œํ™” ์†Œ๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ์„ ์ƒˆ๋กœ์šด ๋ฒ„์ „์œผ๋กœ ๋ผ์šฐํŒ…ํ•˜์—ฌ ์ดˆ๊ธฐ ์œ„ํ—˜์„ ์ตœ์†Œํ™” ์ „ํ™˜ ์‹œ์ ์— ํŠธ๋ž˜ํ”ฝ์ด ํ•œ ๋ฒˆ์— ์ด๋™, ์ถฉ๋ถ„ํ•œ ์ธํ”„๋ผ ํ•„์š”
๋ฐฐํฌ ์‹œ๊ฐ„๊ณผ ๋น„์šฉ ๋ช‡ ์‹œ๊ฐ„์—์„œ ๋ฉฐ์น  ์†Œ์š”, ์‹œ๊ฐ„ ์ฆ๊ฐ€๋กœ ์ธํ•ด ๋น„์šฉ ์ฆ๊ฐ€ ๊ฐ€๋Šฅ ๋ช‡ ์‹œ๊ฐ„์—์„œ ๋ฉฐ์น  ์†Œ์š”, ์ดˆ๊ธฐ ๋‹จ๊ณ„์˜ ์ถ”๊ฐ€ ๋ชจ๋‹ˆํ„ฐ๋ง ๋น„์šฉ ๋ฐœ์ƒ ๋ช‡ ๋ถ„์—์„œ ๋ช‡ ์‹œ๊ฐ„ ์†Œ์š”, ๋‘ ํ™˜๊ฒฝ ์œ ์ง€๋กœ ์ธํ•ด ๋น„์šฉ ์ฆ๊ฐ€
๊ธฐ์ˆ ์  ๊ตฌํ˜„ ๊ฐ€๋Šฅ์„ฑ Auto Scaling, Load Balancer ์„ค์ • ํ•„์š” ํŠธ๋ž˜ํ”ฝ ๋ถ„ํ•  ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง ์„ค์ • ํ•„์š” ๋‘ ํ™˜๊ฒฝ ์šด์˜ ๋ฐ Route 53 ๊ฐ™์€ ํŠธ๋ž˜ํ”ฝ ์ „ํ™˜ ๋„๊ตฌ ํ•„์š”

 

์ ํ•ฉํ•œ ๋ฐฐํฌ ๋ฐฉ์‹ ๋ถ„์„ ๋ฐ AWS ์„œ๋น„์Šค ์กฐ์‚ฌ

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

  • ์ ํ•ฉํ•œ ์ƒํ™ฉ
    • ๋‹ค์šดํƒ€์ž„ ์—†์ด ์•ˆ์ •์ ์œผ๋กœ ์ƒˆ ๋ฒ„์ „์„ ๋ฐฐํฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์ ํ•ฉ
    • ๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค๋‚˜ ์ค‘์š”ํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉ
  • AWS ๊ด€๋ จ ์„œ๋น„์Šค:
    • Route 53 (DNS ๋ผ์šฐํŒ…), Elastic Load Balancing, AWS CloudFormation ๋˜๋Š” AWS CodeDeploy ๋“ฑ
      • ๋‘ ํ™˜๊ฒฝ ๊ฐ„์˜ ๋™๊ธฐํ™”์™€ ์ „ํ™˜ ์‹œ์  ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”

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

  • ์ ํ•ฉํ•œ ์ƒํ™ฉ
    • ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค๋ฅผ ์ ์ง„์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅ
    • ๋‹จ์ผ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ์‹œ๊ฐ„์ด ์ƒ๋Œ€์ ์œผ๋กœ ์งง์€ ์„œ๋น„์Šค์— ์ ํ•ฉ
  • AWS ๊ด€๋ จ ์„œ๋น„์Šค:
    • Auto Scaling, Elastic Load Balancing (Application Load Balancer ๋“ฑ)
      • ๊ฐ ์ธ์Šคํ„ด์Šค์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์„ค์ •์ด ํ•„์š”
      • ECS์—์„œ ๋กค๋ง ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ ์ œ๊ณต

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

  • ์ ํ•ฉํ•œ ์ƒํ™ฉ
    • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ์„ฑ๋Šฅ์„ ์•ˆ์ •์ ์œผ๋กœ ํ‰๊ฐ€ํ•˜๊ณ ์ž ํ•  ๋•Œ ์ ํ•ฉ
    • ํŠน์ • ์ง€์—ญ ๋˜๋Š” ์‚ฌ์šฉ์ž ๊ทธ๋ฃน์— ๋Œ€ํ•ด ์‹คํ—˜์ ์œผ๋กœ ๋ฐฐํฌํ•  ๋•Œ ์œ ์šฉ
  • AWS ๊ด€๋ จ ์„œ๋น„์Šค:
    • AWS CodeDeploy, AWS Lambda, CloudWatch ๋“ฑ
      • ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„ํ• ํ•˜๊ณ  ๋ชจ๋‹ˆํ„ฐ๋ง

 

 

  • references
 

[Container ์ด๋ก ] 7. ๋ฐฐํฌ(Deployment)์˜ 3๊ฐ€์ง€ ๋ฐฉ์‹

๋ชฉ์ฐจ Blue/Green canary rolling update Blue/Green ๋ฐฐํฌ ๋ธ”๋ฃจ-๊ทธ๋ฆฐ ๋ฐฐํฌ๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ, Kubernetes์™€ ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ”Œ๋žซํผ ๋˜๋Š” ์ž๋™ํ™”๋œ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋น„๋กฏํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ

easyitwanner.tistory.com

 

๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์•„ํ‚คํ…์ฒ˜์™€ ๋ฐฐํฌ ์ „๋žต (Rolling, Blue/Green, Canary)

์ค‘๋‹จ ๋ฐฐํฌ ๋ฐฉ์‹๊ณผ ๋‹ค์šดํƒ€์ž„ ๋‹ค์šดํƒ€์ž„ ์„œ๋ฒ„ ํ•œ๋Œ€๋กœ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ํ˜„์žฌ ์„œ๋ฒ„์—๋Š” V1 ๋ฒ„์ „์ด ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ด๋ฒˆ์— ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•œ V2 ๋ฒ„์ „์„ ์ƒˆ๋กœ

hudi.blog

 

๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์•„ํ‚คํ…์ฒ˜(Zero Downtime Deployment)- ๊ธ€๋กœ๋ฒŒ ์„œ๋น„์Šค ์šด์˜์˜ ํ•„์ˆ˜ ์š”์†Œ | ์ธ์‚ฌ์ดํŠธ๋ฆฌํฌํŠธ |

 

www.samsungsds.com

 

'DevOps' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

CDN (Content Delivery Network)  (2) 2025.01.05
PM2 Research  (1) 2025.01.05