CI/CD

CI (Contiuous Integration)

πŸ” 버전 관리λ₯Ό μœ„ν•΄ μƒˆλ‘œμš΄ μ½”λ“œλ₯Ό λΉŒλ“œν•˜κ³  ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ μžλ™ν™” ν”„λ‘œμ„ΈμŠ€

CI λž€, μƒˆλ‘œμš΄ μ½”λ“œμ˜ 변경사항이 μ •κΈ°μ μœΌλ‘œ λΉŒλ“œ 및 ν…ŒμŠ€νŠΈλ˜μ–΄ 곡유 λ ˆν¬μ§€ν† λ¦¬μ— ν†΅ν•©λ˜λŠ” 것을 λ§ν•œλ‹€. λ‹€μˆ˜μ˜ κ°œλ°œμžκ°€ μ°Έμ—¬ν•˜λŠ” 규λͺ¨κ°€ 큰 ν”„λ‘œμ νŠΈμ—μ„œ ν˜•μƒκ΄€λ¦¬ 툴(Git)을 μ‚¬μš©ν•˜λŠ” ν™˜κ²½μ—μ„œ 수 λ§Žμ€ 컀밋(commit)에 λŒ€ν•΄ μžλ™μœΌλ‘œ λΉŒλ“œ/ν…ŒμŠ€νŠΈ/병합을 μˆ˜ν–‰ν•˜λ©° 컀밋 κ°„ μ½”λ“œ μΆ©λŒμ„ λ°©μ§€ν•  수 μžˆλ‹€.

특히, κΈ°λŠ₯λ³„λ‘œ μž‘κ²Œ μͺΌκ°œμ–΄ μ„œλΉ„μŠ€λ₯Ό κ°œλ°œν•˜λŠ” MSAν™˜κ²½μ—μ„œλŠ” κΈ°λŠ₯λ‹¨μœ„μ˜ κ°œλ°œμ„ μ‹œν–‰ν•˜κΈ° λ•Œλ¬Έμ— 각 κΈ°λŠ₯의 μΆ©λŒμ„ λ°©μ§€ ν•  수 μžˆλ‹€.

⭐ λΉ λ₯Έ 버그 ν•΄κ²°, μ†Œν”„νŠΈμ›¨μ–΄ ν’ˆμ§ˆ κ°œμ„ , μ—…λ°μ΄νŠΈ 검증 및 릴리즈 μ‹œκ°„ 단좕


CD (Contiuous Delivery / Contiuous Deployment)

πŸ” CI ν”„λ‘œμ„ΈμŠ€λ₯Ό ν†΅κ³Όν•œ μ½”λ“œλ₯Ό λ°°ν¬ν•˜λŠ” κ³Όμ •

CIν”„λ‘œμ„ΈμŠ€μ˜ μ½”λ“œ ν…ŒμŠ€νŠΈ 및 λΉŒλ“œ 과정을 이상없이 ν†΅κ³Όν•œ μ½”λ“œλ₯Ό μžλ™μ μœΌλ‘œ λ°°ν¬ν•˜λŠ” 과정을 톡틀어 CD라고 ν•˜λ©°,
μ„ΈλΆ€μ μœΌλ‘œλŠ” 두 개의 λ‹¨κ³„λ‘œ λ‚˜λˆŒμˆ˜ μžˆλ‹€ :

  • Contiuous Delivery 지속적 전달 : ν…ŒμŠ€νŠΈ/λΉŒλ“œλ₯Ό 마친 μ½”λ“œλ₯Ό μ‚¬μš©ν•˜κ³  μžˆλŠ” λ ˆν¬μ§€ν† λ¦¬μ— 릴리즈(컀밋). (Github/GitLab λ“±μ˜ λ ˆν¬μ§€ν† λ¦¬)
  • Contiuous Deployment 지속적 배포 : 지속적 전달을 톡해 λ ˆν¬μ§€ν† λ¦¬μ— 릴리즈된 버전에 λŒ€ν•œ μžλ™ 배포.

κ°„λ‹¨ν•œ 예λ₯Ό μ‚¬μš©ν•˜μžλ©΄, CIνˆ΄μ„ μ΄μš©ν•΄ μ½”λ“œ ν…ŒμŠ€νŠΈ 및 λΉŒλ“œλ₯Ό 거쳐 지속적 전달을 톡해 ν”νžˆ μ‚¬μš©λ˜λŠ” Github에 μ»€λ°‹λ˜λ©΄, 지속적 배포가 ν•΄λ‹Ή 컀밋을 기반으둜 μ„œλΉ„μŠ€μ— λŒ€ν•œ 배포(μ—…λ°μ΄νŠΈ 및 ν•«ν”½μŠ€ λ“±)λ₯Ό μ§„ν–‰ν•˜λŠ” 것이닀. λ‹€λ§Œ, λ‹¨μˆœ Github은 CI/CDκΈ°λŠ₯이 μ—†κΈ° λ•Œλ¬Έμ— λ‹€λ₯Έ νˆ΄μ„ μ‚¬μš©ν•΄ μ§„ν–‰ν•  수 μžˆλ‹€.

⭐ μ‚¬μš©μžκ°€ μ΅œλŒ€ν•œ λΉ λ₯Έ μ‹œκ°„λ‚΄μ— μ΅œμ‹  λ²„μ „μ˜ ν”„λ‘œλ•μ…˜ 릴리즈λ₯Ό 제곡 받을 수 μžˆλ‹€.


CI/CD Pipeline


CI/CD 배경지식

CI/CD 툴 : CI/CDλ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” ν•΄λ‹Ή κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” νˆ΄μ„ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€. (Jenkins, GitLab λ“±)

GitLab ? Github ?

  • Github : 무료둜 μ½”λ“œ(μ†ŒμŠ€) 관리 및 배포가 κ°€λŠ₯ν•œ μ„œλΉ„μŠ€λ‘œμ„œ μ†ŒμŠ€ μ½”λ“œκ°€ μ˜€ν”ˆ(public)λ˜μ–΄ μ½”λ“œ κ°œμ„  μ œμ•ˆμ΄ κ°€λŠ₯ν•œ μ˜€ν”ˆμ†ŒμŠ€ ν”„λ‘œμ νŠΈκ°€ νŠΉμ§•μ΄λ‹€.

  • GitLab : μ†ŒμŠ€μ½”λ“œλ₯Ό privateν•˜κ²Œ κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ λ„κ΅¬λ‘œ νšŒμ‚¬ μ°¨μ›μ—μ„œ μ˜€ν”ˆν•˜μ§€ μ•ŠλŠ” ν”„λ‘œμ νŠΈκ΄€λ¦¬μ— μ‚¬μš©λ˜λ©° CI/CI에 λŒ€ν•œ κΈ°λŠ₯이 μΆ”κ°€λ˜μ–΄ μžˆλ‹€.

Jenkins ?

λΉŒλ“œ 및 ν…ŒμŠ€νŠΈ λ„κ΅¬λ‘œμ„œ Jenkinsκ°€ κ°€μž₯ 많이 μ‚¬μš©λ˜κ³  μžˆλ‹€. μ΄λŠ” 무료둜 μ‚¬μš©μ΄ κ°€λŠ₯ν•¨μœΌλ‘œ 타 도ꡬ(tool)에 λΉ„ν•΄ μ‚¬μš©μžκ°€ λ§Žμ•„ λ§Žμ€ 레퍼런슀 및 μ •λ³΄μ˜ 쑴재, μ„€μΉ˜ 및 μ‚¬μš©μ˜ 간단, λΉ λ₯Έ ν”ŒλŸ¬κ·ΈμΈ κ°œλ°œμ†λ„ λ“±μ˜ μž₯점을 κ°€μ§€κ³  μžˆλ‹€. CI/CD의 섀정은 수 λ§Žμ€ ν”ŒλŸ¬κ·ΈμΈμ„ μ‘°ν•©ν•˜μ—¬ μ»€μŠ€ν…€ ꡬ좕을 ν•  수 있으며 λŒ€μ²΄λ‘œ λΉŒλ“œ, 컀밋, μŠ€μΊ” 및 ν…ŒμŠ€νŠΈ, μ •μ μ½”λ“œ λΆ„μ„μˆ˜ν–‰, 배포 ν”ŒλŸ¬κ·ΈμΈμ„ 많이 μ‚¬μš©ν•œλ‹€.


Why CI/CD ?

  1. μžλ™ν™”λ₯Ό ν†΅ν•œ μ½”λ“œ 톡합 κ³Όμ •μ—μ„œμ˜ λΆˆν•„μš”ν•œ λ°˜λ³΅μž‘μ—…μ˜ 단좕
  2. λ‹€μˆ˜μ˜ κ°œλ°œμžκ°€ μ°Έμ—¬ν•˜λŠ” ν”„λ‘œμ νŠΈμ˜ μ—¬λŸ¬λ³€κ²½μ‚¬ν•­μ— λŒ€ν•œ μΆ©λŒλ°©μ§€
  3. μ½”λ“œκ°œλ°œλΆ€ν„° λ°°ν¬κΉŒμ§€ μ‹ μ†ν•˜κ³  효율적인 ν”„λ‘œμ„ΈμŠ€ μ§„ν–‰
  4. κΈ°λŠ₯별 λ‹¨μœ„ κ°œλ°œμ— μ ν•©ν•œ Alige 방법둠에 μ•Œλ§žλŠ” 방식

β­πŸ”πŸ””πŸ“Œβœ¨

profile
λ³΅μž‘ν•œ 문제λ₯Ό μ‰¬μš΄ μ½”λ“œλ‘œ ν•΄κ²°ν•΄ λ‚˜κ°€λŠ” 개발자

0개의 λŒ“κΈ€

Powered by GraphCDN, the GraphQL CDN