고객 ν”Œλž«νΌμ—μ„œ 지속적인 배포 κ΅¬ν˜„

True Engineeringμ—μ„œλŠ” 고객 μ„œλ²„μ— μ§€μ†μ μœΌλ‘œ μ—…λ°μ΄νŠΈλ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•œ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ„€μ •ν–ˆμœΌλ©° 이 κ²½ν—˜μ„ κ³΅μœ ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

μš°μ„  μš°λ¦¬λŠ” 고객을 μœ„ν•œ 온라인 μ‹œμŠ€ν…œμ„ κ°œλ°œν•˜κ³  이λ₯Ό 자체 Kubernetes ν΄λŸ¬μŠ€ν„°μ— λ°°ν¬ν–ˆμŠ΅λ‹ˆλ‹€. 이제 우리의 κ³ λΆ€ν•˜ μ†”λ£¨μ…˜μ€ 고객의 ν”Œλž«νΌμœΌλ‘œ μ΄λ™ν–ˆμœΌλ©°, 이λ₯Ό μœ„ν•΄ μ™„μ „ μžλ™ 지속적 배포 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ„€μ •ν–ˆμŠ΅λ‹ˆλ‹€. 덕뢄에 μš°λ¦¬λŠ” μ œν’ˆ ν™˜κ²½μ— λŒ€ν•œ λ³€ν™”λ₯Ό μ „λ‹¬ν•˜λŠ” μΆœμ‹œ 기간을 λ‹¨μΆ•ν–ˆμŠ΅λ‹ˆλ‹€.

이 λ¬Έμ„œμ—μ„œλŠ” CD(지속적 배포) ν”„λ‘œμ„ΈμŠ€μ˜ λͺ¨λ“  단계 λ˜λŠ” 고객 ν”Œλž«νΌμ— λŒ€ν•œ μ—…λ°μ΄νŠΈ μ œκ³΅μ— λŒ€ν•΄ μ„€λͺ…ν•©λ‹ˆλ‹€.

  1. 이 과정은 μ–΄λ–»κ²Œ μ‹œμž‘λ˜λ‚˜μš”?
  2. 고객의 Git μ €μž₯μ†Œμ™€ 동기화
  3. λ°±μ—”λ“œμ™€ ν”„λ‘ νŠΈμ—”λ“œμ˜ 쑰립,
  4. ν…ŒμŠ€νŠΈ ν™˜κ²½μ—μ„œ μžλ™ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 배포
  5. Prod에 μžλ™ 배포

κ·Έ κ³Όμ •μ—μ„œ μ„€μ • 세뢀정보λ₯Ό κ³΅μœ ν•˜κ² μŠ΅λ‹ˆλ‹€.

고객 ν”Œλž«νΌμ—μ„œ 지속적인 배포 κ΅¬ν˜„

1. CD μ‹œμž‘

지속적인 λ°°ν¬λŠ” κ°œλ°œμžκ°€ Git λ¦¬ν¬μ§€ν† λ¦¬μ˜ 릴리슀 뢄기에 λ³€κ²½ 사항을 ν‘Έμ‹œν•˜λŠ” κ²ƒμœΌλ‘œ μ‹œμž‘λ©λ‹ˆλ‹€.

우리 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜μ—μ„œ μ‹€ν–‰λ˜λ©° λͺ¨λ“  ꡬ성 μš”μ†ŒλŠ” ν•˜λ‚˜μ˜ μ €μž₯μ†Œμ— μ €μž₯λ©λ‹ˆλ‹€. 덕뢄에 λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ 쀑 ν•˜λ‚˜κ°€ λ³€κ²½λ˜λ”λΌλ„ λͺ¨λ“  λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€κ°€ μˆ˜μ§‘λ˜κ³  μ„€μΉ˜λ©λ‹ˆλ‹€.

μš°λ¦¬λŠ” μ—¬λŸ¬ κ°€μ§€ 이유둜 ν•˜λ‚˜μ˜ μ €μž₯μ†Œλ₯Ό 톡해 μž‘μ—…μ„ κ΅¬μ„±ν–ˆμŠ΅λ‹ˆλ‹€.

  • 개발 μš©μ΄μ„± - μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ ν™œλ°œνžˆ 개발 μ€‘μ΄λ―€λ‘œ λͺ¨λ“  μ½”λ“œλ₯Ό ν•œ λ²ˆμ— μž‘μ—…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 단일 μ‹œμŠ€ν…œμœΌλ‘œμ„œμ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λͺ¨λ“  ν…ŒμŠ€νŠΈλ₯Ό ν†΅κ³Όν•˜κ³  고객의 ν”„λ‘œλ•μ…˜ ν™˜κ²½μ— μ œκ³΅λ˜λ„λ‘ 보μž₯ν•˜λŠ” 단일 CI/CD νŒŒμ΄ν”„λΌμΈμž…λ‹ˆλ‹€.
  • λ²„μ „μ˜ ν˜Όλž€μ„ μ œκ±°ν•©λ‹ˆλ‹€. λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ 버전 맡을 μ €μž₯ν•˜κ³  Helm μŠ€ν¬λ¦½νŠΈμ—μ„œ 각 λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€μ— λŒ€ν•œ ꡬ성을 μ„€λͺ…ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

2. 고객 μ†ŒμŠ€ μ½”λ“œμ˜ Git μ €μž₯μ†Œμ™€ 동기화

λ³€κ²½ 사항은 고객의 Git μ €μž₯μ†Œμ™€ μžλ™μœΌλ‘œ λ™κΈ°ν™”λ©λ‹ˆλ‹€. κ±°κΈ°μ—μ„œ λΆ„κΈ°λ₯Ό μ—…λ°μ΄νŠΈν•œ ν›„ μ‹œμž‘λ˜κ³  계속 λ°°ν¬λ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ–΄μ…ˆλΈ”λ¦¬κ°€ κ΅¬μ„±λ©λ‹ˆλ‹€. 두 ν”„λ‘œμ„ΈμŠ€ λͺ¨λ‘ Git μ €μž₯μ†Œμ˜ ν™˜κ²½μ—μ„œ μ‹œμž‘λ©λ‹ˆλ‹€.

개발 및 ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•΄μ„œλŠ” 자체 ν™˜κ²½μ΄ ν•„μš”ν•˜κΈ° λ•Œλ¬Έμ— 고객의 μ €μž₯μ†Œμ™€ 직접 μž‘μ—…ν•  수 μ—†μŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” μ΄λŸ¬ν•œ λͺ©μ μœΌλ‘œ Git μ €μž₯μ†Œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. μ΄λŠ” Git μ €μž₯μ†Œμ™€ λ™κΈ°ν™”λ©λ‹ˆλ‹€. κ°œλ°œμžκ°€ μ €μž₯μ†Œμ˜ μ μ ˆν•œ 뢄기에 λ³€κ²½ 사항을 κ²Œμ‹œν•˜λ©΄ GitLab은 μ¦‰μ‹œ μ΄λŸ¬ν•œ λ³€κ²½ 사항을 κ³ κ°μ—κ²Œ ν‘Έμ‹œν•©λ‹ˆλ‹€.

고객 ν”Œλž«νΌμ—μ„œ 지속적인 배포 κ΅¬ν˜„

그런 λ‹€μŒ 쑰립을 ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ°±μ—”λ“œ 및 ν”„λŸ°νŠΈμ—”λ“œ 쑰립, ν…ŒμŠ€νŠΈ 및 ν”„λ‘œλ•μ…˜ 전달 λ“± μ—¬λŸ¬ λ‹¨κ³„λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.

3. λ°±μ—”λ“œμ™€ ν”„λ‘ νŠΈμ—”λ“œ 쑰립

λ°±μ—”λ“œμ™€ ν”„λŸ°νŠΈμ—”λ“œ ꡬ좕은 GitLab Runner μ‹œμŠ€ν…œμ—μ„œ μˆ˜ν–‰λ˜λŠ” 두 κ°€μ§€ 병렬 μž‘μ—…μž…λ‹ˆλ‹€. μ›λž˜ μ–΄μ…ˆλΈ”λ¦¬ ꡬ성은 λ™μΌν•œ μ €μž₯μ†Œμ— μžˆμŠ΅λ‹ˆλ‹€.

GitLabμ—μ„œ λΉŒλ“œν•˜κΈ° μœ„ν•œ YAML 슀크립트 μž‘μ„±μ„ μœ„ν•œ νŠœν† λ¦¬μ–Ό.

GitLab RunnerλŠ” ν•„μš”ν•œ μ €μž₯μ†Œμ—μ„œ μ½”λ“œλ₯Ό κ°€μ Έμ™€μ„œ Java μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λΉŒλ“œ λͺ…λ ΉμœΌλ‘œ μ‘°ν•©ν•˜μ—¬ Docker λ ˆμ§€μŠ€νŠΈλ¦¬λ‘œ λ³΄λƒ…λ‹ˆλ‹€. μ—¬κΈ°μ—μ„œλŠ” λ°±μ—”λ“œμ™€ ν”„λŸ°νŠΈμ—”λ“œλ₯Ό μ‘°ν•©ν•˜κ³  Docker 이미지λ₯Ό μ–»μ–΄ 고객 μΈ‘ μ €μž₯μ†Œμ— μ €μž₯ν•©λ‹ˆλ‹€. μš°λ¦¬κ°€ μ‚¬μš©ν•˜λŠ” Docker 이미지λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ Gradle ν”ŒλŸ¬κ·ΈμΈ.

이미지 버전을 Docker에 κ²Œμ‹œλ  릴리슀 버전과 λ™κΈ°ν™”ν•©λ‹ˆλ‹€. μ›ν™œν•œ μž‘λ™μ„ μœ„ν•΄ λͺ‡ κ°€μ§€ 쑰정을 μˆ˜ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.

1. ν…ŒμŠ€νŠΈ ν™˜κ²½κ³Ό ν”„λ‘œλ•μ…˜ ν™˜κ²½ 간에 μ»¨ν…Œμ΄λ„ˆκ°€ λ‹€μ‹œ λΉŒλ“œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ™μΌν•œ μ»¨ν…Œμ΄λ„ˆκ°€ ν…ŒμŠ€νŠΈ ν™˜κ²½κ³Ό ν”„λ‘œλ•μ…˜ ν™˜κ²½ λͺ¨λ‘μ—μ„œ λ‹€μ‹œ λΉŒλ“œν•˜μ§€ μ•Šκ³ λ„ λͺ¨λ“  μ„€μ •, ν™˜κ²½ λ³€μˆ˜ 및 μ„œλΉ„μŠ€μ™€ μž‘λ™ν•  수 μžˆλ„λ‘ λ§€κ°œλ³€μˆ˜ν™”λ₯Ό μˆ˜ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.

2. Helm을 톡해 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ—…λ°μ΄νŠΈν•˜λ €λ©΄ ν•΄λ‹Ή 버전을 μ§€μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” λ°±μ—”λ“œ, ν”„λ‘ νŠΈμ—”λ“œλ₯Ό κ΅¬μΆ•ν•˜κ³  μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ—…λ°μ΄νŠΈν•©λ‹ˆλ‹€. μ΄λŠ” μ„Έ κ°€μ§€ λ‹€λ₯Έ μž‘μ—…μ΄λ―€λ‘œ μ–΄λ””μ—μ„œλ‚˜ λ™μΌν•œ λ²„μ „μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‚¬μš©ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€. 이 μž‘μ—…μ—μ„œλŠ” K8S ν΄λŸ¬μŠ€ν„° ꡬ성과 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ™μΌν•œ Git μ €μž₯μ†Œμ— μžˆμœΌλ―€λ‘œ Git 기둝의 데이터λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

λͺ…λ Ή μ‹€ν–‰ κ²°κ³Όμ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 버전을 μ–»μŠ΅λ‹ˆλ‹€.
git describe --tags --abbrev=7.

4. ν…ŒμŠ€νŠΈ ν™˜κ²½(UAT)에 λŒ€ν•œ λͺ¨λ“  λ³€κ²½ 사항 μžλ™ 배포

이 λΉŒλ“œ 슀크립트의 λ‹€μŒ λ‹¨κ³„λŠ” K8S ν΄λŸ¬μŠ€ν„°λ₯Ό μžλ™μœΌλ‘œ μ—…λ°μ΄νŠΈν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ΄λŠ” 전체 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λΉŒλ“œλ˜κ³  λͺ¨λ“  μ•„ν‹°νŒ©νŠΈκ°€ Docker λ ˆμ§€μŠ€νŠΈλ¦¬μ— κ²Œμ‹œλœ κ²½μš°μ— λ°œμƒν•©λ‹ˆλ‹€. 이후 ν…ŒμŠ€νŠΈ ν™˜κ²½ μ—…λ°μ΄νŠΈκ°€ μ‹œμž‘λ©λ‹ˆλ‹€.

ν΄λŸ¬μŠ€ν„° μ—…λ°μ΄νŠΈλŠ” λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ μ‹œμž‘λ©λ‹ˆλ‹€. 투ꡬ μ—…λ°μ΄νŠΈ. 결과적으둜 κ³„νšλŒ€λ‘œ μ§„ν–‰λ˜μ§€ μ•Šμ€ 경우 Helm은 λͺ¨λ“  λ³€κ²½ 사항을 μžλ™μœΌλ‘œ λ…λ¦½μ μœΌλ‘œ λ‘€λ°±ν•©λ‹ˆλ‹€. 그의 μž‘μ—…μ€ ν†΅μ œλ  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

μš°λ¦¬λŠ” μ–΄μ…ˆλΈ”λ¦¬μ™€ ν•¨κ»˜ K8S ν΄λŸ¬μŠ€ν„° ꡬ성을 μ œκ³΅ν•©λ‹ˆλ‹€. λ”°λΌμ„œ λ‹€μŒ λ‹¨κ³„λŠ” configMap, 배포, μ„œλΉ„μŠ€, λΉ„λ°€ 및 λ³€κ²½λœ 기타 K8S ꡬ성을 μ—…λ°μ΄νŠΈν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

그런 λ‹€μŒ Helm은 ν…ŒμŠ€νŠΈ ν™˜κ²½μ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 자체의 RollOut μ—…λ°μ΄νŠΈλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ ν”„λ‘œλ•μ…˜μ— 배포되기 μ „μž…λ‹ˆλ‹€. μ΄λŠ” μ‚¬μš©μžκ°€ ν…ŒμŠ€νŠΈ ν™˜κ²½μ— ν¬ν•¨λœ λΉ„μ¦ˆλ‹ˆμŠ€ κΈ°λŠ₯을 μˆ˜λ™μœΌλ‘œ ν…ŒμŠ€νŠΈν•  수 μžˆλ„λ‘ ν•˜κΈ° μœ„ν•œ κ²ƒμž…λ‹ˆλ‹€.

5. Prod에 λŒ€ν•œ λͺ¨λ“  λ³€κ²½ 사항 μžλ™ 배포

ν”„λ‘œλ•μ…˜ ν™˜κ²½μ— μ—…λ°μ΄νŠΈλ₯Ό λ°°ν¬ν•˜λ €λ©΄ GitLabμ—μ„œ λ²„νŠΌ ν•˜λ‚˜λ§Œ ν΄λ¦­ν•˜λ©΄ λ©λ‹ˆλ‹€. 그러면 μ»¨ν…Œμ΄λ„ˆκ°€ ν”„λ‘œλ•μ…˜ ν™˜κ²½μ— μ¦‰μ‹œ μ „λ‹¬λ©λ‹ˆλ‹€.

λ™μΌν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ‹€μ‹œ κ΅¬μΆ•ν•˜μ§€ μ•Šκ³ λ„ ν…ŒμŠ€νŠΈ 및 ν”„λ‘œλ•μ…˜ λ“± λ‹€μ–‘ν•œ ν™˜κ²½μ—μ„œ μž‘λ™ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 아무것도 λ³€κ²½ν•˜μ§€ μ•Šκ³  λ™μΌν•œ μ•„ν‹°νŒ©νŠΈλ₯Ό μ‚¬μš©ν•˜κ³  λ§€κ°œλ³€μˆ˜λ₯Ό μ™ΈλΆ€μ—μ„œ μ„€μ •ν•©λ‹ˆλ‹€.

μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„€μ •μ˜ μœ μ—°ν•œ λ§€κ°œλ³€μˆ˜ν™”λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 싀행될 ν™˜κ²½μ— 따라 λ‹¬λΌμ§‘λ‹ˆλ‹€. λͺ¨λ“  ν™˜κ²½ 섀정을 μ™ΈλΆ€λ‘œ μ΄λ™ν–ˆμŠ΅λ‹ˆλ‹€. λͺ¨λ“  것은 K8S ꡬ성 및 Helm λ§€κ°œλ³€μˆ˜λ₯Ό 톡해 λ§€κ°œλ³€μˆ˜ν™”λ©λ‹ˆλ‹€. Helm이 ν…ŒμŠ€νŠΈ ν™˜κ²½μ— μ–΄μ…ˆλΈ”λ¦¬λ₯Ό λ°°ν¬ν•˜λ©΄ ν…ŒμŠ€νŠΈ 섀정이 ν•΄λ‹Ή μ–΄μ…ˆλΈ”λ¦¬μ— 적용되고 μ œν’ˆ 섀정이 ν”„λ‘œλ•μ…˜ ν™˜κ²½μ— μ μš©λ©λ‹ˆλ‹€.

κ°€μž₯ μ–΄λ €μ› λ˜ 점은 μ‚¬μš©λ˜λŠ” λͺ¨λ“  μ„œλΉ„μŠ€μ™€ ν™˜κ²½μ— μ˜μ‘΄ν•˜λŠ” λ³€μˆ˜λ₯Ό λ§€κ°œλ³€μˆ˜ν™”ν•˜κ³  이λ₯Ό Helm용 ν™˜κ²½ λ³€μˆ˜ 및 ν™˜κ²½ λ§€κ°œλ³€μˆ˜μ˜ μ„€λͺ…-κ΅¬μ„±μœΌλ‘œ λ³€ν™˜ν•˜λŠ” κ²ƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€.

μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 섀정은 ν™˜κ²½ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. ν•΄λ‹Ή 값은 Go ν…œν”Œλ¦Ώμ„ μ‚¬μš©ν•˜μ—¬ ν…œν”Œλ¦Ών™”λ˜λŠ” K8S configmap을 μ‚¬μš©ν•˜μ—¬ μ»¨ν…Œμ΄λ„ˆμ— μ„€μ •λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ ν™˜κ²½ λ³€μˆ˜λ₯Ό 도메인 μ΄λ¦„μœΌλ‘œ μ„€μ •ν•˜λŠ” μž‘μ—…μ€ λ‹€μŒκ³Ό 같이 μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

APP_EXTERNAL_DOMAIN: {{ (pluck .Values.global.env .Values.app.properties.app_external_domain | first) }}

.Values.global.env – 이 λ³€μˆ˜λŠ” ν™˜κ²½(prod, stage, UAT)의 이름을 μ €μž₯ν•©λ‹ˆλ‹€.
.Values.app.properties.app_external_domain – 이 λ³€μˆ˜μ—μ„œλŠ” .Values.yaml νŒŒμΌμ— μ›ν•˜λŠ” 도메인을 μ„€μ •ν•©λ‹ˆλ‹€.

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ—…λ°μ΄νŠΈν•  λ•Œ Helm은 ν…œν”Œλ¦Ώμ—μ„œ configmap.yaml νŒŒμΌμ„ μƒμ„±ν•˜κ³  μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ—…λ°μ΄νŠΈκ°€ μ‹œμž‘λ˜λŠ” ν™˜κ²½μ— 따라 APP_EXTERNAL_DOMAIN 값을 μ›ν•˜λŠ” κ°’μœΌλ‘œ μ±„μ›λ‹ˆλ‹€. 이 λ³€μˆ˜λŠ” 이미 μ»¨ν…Œμ΄λ„ˆμ— μ„€μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ•‘μ„ΈμŠ€ν•  수 μžˆμœΌλ―€λ‘œ 각 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν™˜κ²½μ€ 이 λ³€μˆ˜μ— λŒ€ν•΄ μ„œλ‘œ λ‹€λ₯Έ 값을 κ°–μŠ΅λ‹ˆλ‹€.

비ꡐ적 μ΅œκ·Όμ—λŠ” configMaps μž‘μ—…μ„ ν¬ν•¨ν•˜μ—¬ K8S 지원이 Spring Cloud에 λ‚˜νƒ€λ‚¬μŠ΅λ‹ˆλ‹€. μŠ€ν”„λ§ ν΄λΌμš°λ“œ μΏ λ²„λ„€ν‹°μŠ€. ν”„λ‘œμ νŠΈκ°€ 적극적으둜 개발되고 κΈ‰κ²©ν•˜κ²Œ λ³€ν™”ν•˜λŠ” λ™μ•ˆ ν”„λ‘œλ•μ…˜μ—μ„œλŠ” μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μš°λ¦¬λŠ” μƒνƒœλ₯Ό 적극적으둜 λͺ¨λ‹ˆν„°λ§ν•˜κ³  이λ₯Ό DEV ꡬ성에 μ‚¬μš©ν•©λ‹ˆλ‹€. μ•ˆμ •ν™”λ˜λŠ” λŒ€λ‘œ ν™˜κ²½ λ³€μˆ˜ μ‚¬μš©μ—μ„œ ν™˜κ²½ λ³€μˆ˜ μ‚¬μš©μœΌλ‘œ μ „ν™˜ν•˜κ² μŠ΅λ‹ˆλ‹€.

μ „μ²΄λ‘œ

λ”°λΌμ„œ 지속적인 배포가 κ΅¬μ„±λ˜μ–΄ μž‘λ™ν•©λ‹ˆλ‹€. λͺ¨λ“  μ—…λ°μ΄νŠΈλŠ” ν•œ 번의 ν‚€ μž…λ ₯으둜 λ°œμƒν•©λ‹ˆλ‹€. μ œν’ˆ ν™˜κ²½μ— λŒ€ν•œ λ³€κ²½ 사항은 μžλ™μœΌλ‘œ μ „λ‹¬λ©λ‹ˆλ‹€. 그리고 μ€‘μš”ν•œ 것은 μ—…λ°μ΄νŠΈκ°€ μ‹œμŠ€ν…œμ„ μ€‘μ§€ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

고객 ν”Œλž«νΌμ—μ„œ 지속적인 배포 κ΅¬ν˜„

ν–₯ν›„ κ³„νš: μžλ™ λ°μ΄ν„°λ² μ΄μŠ€ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜

μš°λ¦¬λŠ” λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ—…κ·Έλ ˆμ΄λ“œν•˜κ³  μ΄λŸ¬ν•œ λ³€κ²½ 사항을 λ‘€λ°±ν•  κ°€λŠ₯성을 κ³ λ €ν–ˆμŠ΅λ‹ˆλ‹€. κ²°κ΅­ 두 κ°€μ§€ μ„œλ‘œ λ‹€λ₯Έ λ²„μ „μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ™μ‹œμ— μ‹€ν–‰λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이전 버전은 μ‹€ν–‰ 쀑이고 μƒˆ 버전은 μ‹€ν–‰ μ€‘μž…λ‹ˆλ‹€. 그리고 μƒˆ 버전이 μž‘λ™ν•œλ‹€κ³  ν™•μ‹ ν•˜λŠ” κ²½μš°μ—λ§Œ 이전 버전을 끌 κ²ƒμž…λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ„ 톡해 두 λ²„μ „μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λͺ¨λ‘μ—μ„œ μž‘μ—…ν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ λ‹¨μˆœνžˆ 컬럼 μ΄λ¦„μ΄λ‚˜ 기타 데이터λ₯Ό λ³€κ²½ν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μƒˆ 열을 λ§Œλ“€κ³  이전 μ—΄μ˜ 데이터λ₯Ό ν•΄λ‹Ή 열에 λ³΅μ‚¬ν•œ λ‹€μŒ, 데이터λ₯Ό μ—…λ°μ΄νŠΈν•  λ•Œ λ™μ‹œμ— λ‹€λ₯Έ 열에 λ³΅μ‚¬ν•˜κ³  μ—…λ°μ΄νŠΈν•˜λŠ” 트리거λ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 그리고 μƒˆ λ²„μ „μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ„±κ³΅μ μœΌλ‘œ 배포된 ν›„ μΆœμ‹œ ν›„ 지원 기간이 μ§€λ‚˜λ©΄ λΆˆν•„μš”ν•΄μ§„ 이전 μ—΄κ³Ό 트리거λ₯Ό μ‚­μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μƒˆ λ²„μ „μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ œλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•ŠμœΌλ©΄ 이전 λ²„μ „μ˜ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό ν¬ν•¨ν•˜μ—¬ 이전 λ²„μ „μœΌλ‘œ λ‘€λ°±ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ°„λ‹¨νžˆ λ§ν•΄μ„œ, 우리의 λ³€κ²½ 사항을 톡해 μ—¬λŸ¬ λ²„μ „μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ™μ‹œμ— μž‘μ—…ν•  수 있게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

K8S μž‘μ—…μ„ 톡해 λ°μ΄ν„°λ² μ΄μŠ€ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ„ μžλ™ν™”ν•˜κ³  이λ₯Ό CD ν”„λ‘œμ„ΈμŠ€μ— 톡합할 κ³„νšμž…λ‹ˆλ‹€. 그리고 μš°λ¦¬λŠ” 이 κ²½ν—˜μ„ HabrΓ©μ—μ„œ ν™•μ‹€νžˆ κ³΅μœ ν•  κ²ƒμž…λ‹ˆλ‹€.

좜처 : habr.com

DDoS 보호, VPS VDS μ„œλ²„κ°€ μžˆλŠ” μ‚¬μ΄νŠΈλ₯Ό μœ„ν•œ μ•ˆμ •μ μΈ ν˜ΈμŠ€νŒ… κ΅¬μž… πŸ”₯ DDoS 곡격 λ°©μ§€ κΈ°λŠ₯이 νƒ‘μž¬λœ μ•ˆμ •μ μΈ μ›Ήμ‚¬μ΄νŠΈ ν˜ΈμŠ€νŒ…, VPS 및 VDS μ„œλ²„λ₯Ό κ΅¬λ§€ν•˜μ„Έμš” | ProHoster