πŸš› μ—¬λŸ¬κ°€μ§€ μ†Œν”„νŠΈμ›¨μ–΄ 배포 μ „λž΅

λ°•ν˜•μ„Β·2022λ…„ 3μ›” 29일
0

λ°œν‘œμžλ£Œ

λͺ©λ‘ 보기
5/5
post-thumbnail

μ†Œν”„νŠΈμ›¨μ–΄ 배포 μ „λž΅

μ„œλΉ„μŠ€λ₯Ό μ€‘μ§€ν•˜μ§€ μ•Šκ³  μƒˆλ‘œμš΄ 버전을 배포λ₯Ό ν•˜κΈ°μœ„ν•΄ λ‹€μ–‘ν•œ μ „λž΅λ“€μ΄ μžˆλ‹€.

κ³Όκ±°μ—λŠ” 수 κ°œμ›” ν˜Ήμ€ 수 년에 ν•œ λ²ˆμ”© μ„œλΉ„μŠ€λ₯Ό 릴리슀 ν–ˆμ§€λ§Œ, μ΅œκ·Όμ—λŠ” μ„œλΉ„μŠ€λ₯Ό 더 μž‘κ²Œ λ§Œλ“€κ³  더 자주 배포 ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ³€ν™”ν•˜κ³  μžˆλ‹€.(ex-λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€)


Q.블루/κ·Έλ¦°, 둀링, μΉ΄λ‚˜λ¦¬ 배포의 차이점과 μ–΄λ–€ κ²½μš°μ— 각각의 배포방식을 μ‹œλ„ν•˜λŠ”μ§€ μ‘°μ‚¬ν•΄λ³΄μ„Έμš”.


1. 둀링 배포(Rolling Update Deployment)

μ—¬λŸ¬ 개의 가동쀑인 μ„œλ²„λ₯Ό ꡬ λ²„μ „μ—μ„œ μƒˆ λ²„μ „μœΌλ‘œ νŠΈλž˜ν”½μ„ μ μ§„μ μœΌλ‘œ μ „ν™˜ν•˜λ©°, ꡬ λ²„μ „μ˜ μΈμŠ€ν„΄μŠ€λ„ 점차 μ‚­μ œλ¨.

μž₯점

  • λ‹€μš΄νƒ€μž„μ΄ μ—†μŒ
  • 문제 λ°œμƒ μ‹œ 둀링 배포λ₯Ό "reverse"둜 μ΄λ™ν•˜μ—¬ 이전 버전을 λ‹€μ‹œ μ‹œμž‘ν•  수 μžˆλ‹€.

단점

  • ꡬ버전과 신버전이 ν•¨κ»˜ κ³΅μ‘΄ν•˜κΈ° λ•Œλ¬Έμ— ν˜Έν™˜μ„± λ¬Έμ œκ°€ μžˆμ„ 수 μžˆλ‹€.
  • 배포 쀑 μΈμŠ€ν„΄μŠ€μ˜ μˆ˜κ°€ κ°μ†Œ 되기 λ•Œλ¬Έμ— μ„œλ²„ 처리 μš©λŸ‰ 고렀해야함.
  • 느린 λ‘€λ°±: μƒˆ μΆœμ‹œκ°€ μ•ˆμ •μ μ΄μ§€ μ•ŠλŠ” 경우 μƒˆ λ³΅μ œλ³Έμ„ μ’…λ£Œν•˜κ³  이전 버전을 μž¬λ°°ν¬ν•  수 μžˆλ‹€.

νŠΉμ§•

μ„œλ²„ 수의 μ œμ•½μ΄ μžˆμ„ 경우 μœ μš©ν•œ 방법이 될 수 μžˆλ‹€.


2. 블루/κ·Έλ¦° 배포(Blue/Green Delployment)

μƒˆλ‘œμš΄ 변경사항이 ν¬ν•¨λœ μ–΄ν”Œλ¦¬κ²Œμ΄μ…˜μ„ μœ„ν•œ μƒˆλ‘œμš΄ ν™˜κ²½μ„ κ΅¬μΆ•ν•˜κ³  κ΅μ²΄ν•˜λŠ” 방법.

ν˜„μž¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 버전을, 그린은 μƒˆ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 버전을 λ‚˜νƒ€λ‚Έλ‹€. ν•œ λ²ˆμ— ν•˜λ‚˜μ˜ λ²„μ „λ§Œ κ²Œμ‹œλ˜λ©°, κ·Έλ¦° 배포가 μƒμ„±λ˜κ³  ν…ŒμŠ€νŠΈλ˜λŠ” λ™μ•ˆ νŠΈλž˜ν”½μ΄ 블루 배포둜 λΌμš°νŒ…λœλ‹€. ν…ŒμŠ€νŠΈλ₯Ό μ™„λ£Œν•˜λ©΄ νŠΈλž˜ν”½μ„ μƒˆ λ²„μ „μœΌλ‘œ λΌμš°νŒ…ν•œλ‹€.

μž₯점

  • λ‹€μš΄νƒ€μž„ μ—†μŒ: 블루/ κ·Έλ¦° 배포λ₯Ό μ‚¬μš©ν•˜λ©΄ λ‹€μš΄νƒ€μž„ 없이 μ‹ μ†ν•˜κ²Œ μ»·μ˜€λ²„ν•  수 μžˆλ‹€.
  • 즉각적인 λ‘€λ°±: λ‘œλ“œλ°ΈλŸ°μ„œλ₯Ό μ‘°μ •ν•΄ νŠΈλž˜ν”½μ„ λ‹€μ‹œ λΈ”λ£¨ν™˜κ²½μ— 전달 ν•¨μœΌλ‘œμ¨ μ–Έμ œλ“ μ§€ λ‘€λ°±ν•  수 μžˆλ‹€.
  • ν™˜κ²½ 뢄리: 블루와 그린은 λ™μ‹œμ— κ·Έλ¦° ν™˜κ²½μ„ 가동해도 λΈ”λ£¨ν™˜κ²½μ„ μ§€μ›ν•˜λŠ” λ¦¬μ†ŒμŠ€μ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šλ„λ‘ 함.

고렀사항

  • λΉ„μš© 및 운영: 인프라가 λ™μΌν•œ μ€‘λ³΅ν™˜κ²½μ„ μœ μ§€ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— λΉ„μš©μ¦κ°€κ°€ μžˆμ„ 수 μžˆλ‹€.

3. μΉ΄λ‚˜λ¦¬ 배포(Canary Deployment)

가동 쀑인 μ„œλ²„λ“€μ˜ μΌλΆ€μ—λ§Œ μƒˆλ‘œμš΄ 앱을 λ°°ν¬ν•˜μ—¬, 일뢀 νŠΈλž˜ν”½μ„ μƒˆ λ²„μ „μ˜ ν™˜κ²½μœΌλ‘œ λΆ„μ‚°ν•˜λŠ” 방법이닀.
배포된 μΌλΆ€μ˜ μƒˆλ‘œμš΄ 버전이 μš΄μ˜ν™˜κ²½μ—μ„œ λŒμ•„κ°€λ©° ν…ŒμŠ€νŠΈλ₯Ό ν•  수 μžˆλ‹€.

μž₯점

  • 문제 λ°œμƒμ‹œ λ¨Όμ € 배포가 λ˜μ—ˆλ˜ μ„œλ²„λ§Œ λ‘€λ°±ν•˜λ©΄ λœλ‹€.
  • μš΄μ˜ν™˜κ²½μ—μ„œ μ‹ κ·œλ²„μ „μ„ ν…ŒμŠ€νŠΈ κ°€λŠ₯.
  • λ‹€μš΄νƒ€μž„ 없이 μ‹€μ‹œκ°„ ν”„λ‘œλ•μ…˜ νŠΈλž˜ν”½μ„ λ‹€λ₯Έ λ²„μ „μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ λΌμš°νŒ… κ°€λŠ₯.

고렀사항

  • 느린 μΆœμ‹œ: 점진적 μΆœμ‹œλ§ˆλ‹€ μ μ ˆν•œ κΈ°κ°„ λ™μ•ˆ λͺ¨λ‹ˆν„°λ§μ΄ ν•„μš”ν•˜λ―€λ‘œ 전체 μΆœμ‹œκ°€ 지연될 수 μžˆλ‹€.

μ μ ˆν•œ μ „λž΅ 선택

μœ„μ˜ 세가지 배포 μ „λž΅λ“€μ€ 무쀑단 배포λ₯Ό λͺ©ν‘œλ‘œ λ‹€μ–‘ν•œ 배포 μ „λž΅μ΄ μ‘΄μž¬ν•œλ‹€. μ΅œμ„ μ˜ 선택은 λΉ„μ¦ˆλ‹ˆμŠ€μ˜ μš”κ΅¬μ‚¬ν•­κ³Ό μ œμ•½μ‚¬ν•­μ— 따라 λ‹¬λΌμ§€μ§€λ§Œ λ‹€μŒ 사항에 따라 전약을 선택 ν•΄μ•Όν•œλ‹€.

  • κ°€μž₯ μ€‘μš”ν•œ 고렀사항이 뭔지?(λΉ„μš© λ˜λŠ” λ‹€μš΄νƒ€μž„ ν—ˆμš©)
  • ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ 배포인지 μ•„λ‹Œμ§€?
  • λ‘€λ°± 기간이 λΉ λ₯Έμ§€?
  • ν˜Έν™˜μ„±μ€ 어떀지?
  • μΆœμ‹œ κΈ°ν•œ

레퍼런슀

profile
Better Than Yesterday

0개의 λŒ“κΈ€