DevOps

[DevOps] CI/CDλž€? DevOps의 핡심 기초 κ°œλ… μ΄ν•΄ν•˜κΈ° πŸ’»

데보 😎 2024. 8. 12. 14:45
728x90
λ°˜μ‘ν˜•

AIμ—κ²Œ 생성 μš”μ²­ν•œ CI/CD 이미지

 

DevOps의 μ€‘μš”ν•œ ꡬ성 μš”μ†Œ 쀑 ν•˜λ‚˜μΈ CI/CDλŠ” 개발과 μš΄μ˜μ„ μ—°κ²°ν•˜λŠ” 닀리 역할을 ν•©λ‹ˆλ‹€.

이 κΈ€μ—μ„œλŠ” CI/CD의 κΈ°λ³Έ κ°œλ…κ³Ό 이λ₯Ό 효과적으둜 κ΅¬ν˜„ν•˜κΈ° μœ„ν•œ 방법을 μ†Œκ°œν•©λ‹ˆλ‹€.

 

 

CI/CDλž€ 무엇인가?

1. Continuous Integration (CI)

 

Continuous Integration, 즉 지속적 톡합은 κ°œλ°œμžκ°€ μ½”λ“œ λ³€κ²½ 사항을 μ •κΈ°μ μœΌλ‘œ 메인 λΈŒλžœμΉ˜μ— λ³‘ν•©ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μž…λ‹ˆλ‹€. CIλŠ” κ°œλ°œμžκ°€ μž‘μ—…ν•œ μ½”λ“œκ°€ 잘 μž‘λ™ν•˜λŠ”μ§€ μžλ™μœΌλ‘œ ν…ŒμŠ€νŠΈν•˜κ³  ν†΅ν•©ν•˜μ—¬, μ½”λ“œμ˜ ν’ˆμ§ˆμ„ μœ μ§€ν•˜κ³ , 였λ₯˜ λ°œμƒμ„ μ΅œμ†Œν™”ν•˜λŠ” 데 쀑점을 λ‘‘λ‹ˆλ‹€.

 

μ˜ˆμ‹œ: μ™œ CIκ°€ μ€‘μš”ν•œκ°€?

 

예λ₯Ό λ“€μ–΄, μ—¬λŸ¬ λͺ…μ˜ κ°œλ°œμžκ°€ ν•˜λ‚˜μ˜ ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•œλ‹€κ³  κ°€μ •ν•΄λ³΄μ„Έμš”. 각 κ°œλ°œμžλŠ” μžμ‹ μ˜ 둜컬 ν™˜κ²½μ—μ„œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³  ν…ŒμŠ€νŠΈν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λͺ¨λ“  μ½”λ“œκ°€ 메인 λΈŒλžœμΉ˜μ— 톡합될 λ•Œ μ˜ˆμƒμΉ˜ λͺ»ν•œ 였λ₯˜κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. CIλŠ” μ΄λŸ¬ν•œ 문제λ₯Ό 쑰기에 λ°œκ²¬ν•˜μ—¬, μ½”λ“œκ°€ 병합될 λ•Œλ§ˆλ‹€ μžλ™μœΌλ‘œ ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•¨μœΌλ‘œμ¨ μΆ©λŒμ„ λ°©μ§€ν•©λ‹ˆλ‹€.

 

2. Continuous Deployment (CD)

 

Continuous Deployment, 즉 지속적 λ°°ν¬λŠ” μ½”λ“œ 변경이 CI ν”„λ‘œμ„ΈμŠ€λ₯Ό 톡해 ν†΅ν•©λ˜κ³  ν…ŒμŠ€νŠΈλœ ν›„, μžλ™μœΌλ‘œ ν”„λ‘œλ•μ…˜ ν™˜κ²½μ— λ°°ν¬λ˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. 이 λ‹¨κ³„μ—μ„œ μ½”λ“œλŠ” μ‹€μ œ μ‚¬μš©μžμ—κ²Œ 배포되며, μžλ™ν™”λœ ν”„λ‘œμ„ΈμŠ€λ₯Ό 톡해 μˆ˜λ™ κ°œμž… 없이 λΉ λ₯΄κ³  μ•ˆμ •μ μœΌλ‘œ μƒˆλ‘œμš΄ κΈ°λŠ₯을 μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

μ˜ˆμ‹œ: CDκ°€ μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ”κ°€?

 

κ°œλ°œμžκ°€ μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•˜κ±°λ‚˜ 버그λ₯Ό μˆ˜μ •ν•  λ•Œ, 이 λ³€κ²½ 사항이 μžλ™μœΌλ‘œ μ„œλ²„μ— λ°°ν¬λœλ‹€λ©΄ μ–Όλ§ˆλ‚˜ νš¨μœ¨μ μΌκΉŒμš”? 예λ₯Ό λ“€μ–΄, νŠΉμ • μ›Ήμ‚¬μ΄νŠΈμ—μ„œ μ‹ κ·œ νšŒμ› κ°€μž… κΈ°λŠ₯을 μΆ”κ°€ν–ˆλ‹€κ³  κ°€μ •ν•©μ‹œλ‹€. 이 κΈ°λŠ₯이 μ½”λ“œλ² μ΄μŠ€μ— λ³‘ν•©λ˜λ©΄ CI/CD νŒŒμ΄ν”„λΌμΈμ΄ μžλ™μœΌλ‘œ 이 μ½”λ“œλ₯Ό ν…ŒμŠ€νŠΈν•˜κ³ , λ¬Έμ œκ°€ 없을 경우 ν”„λ‘œλ•μ…˜ μ„œλ²„μ— λ°°ν¬ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ μ‹ κ·œ κΈ°λŠ₯이 μ¦‰μ‹œ μ‚¬μš©μžμ—κ²Œ μ œκ³΅λ©λ‹ˆλ‹€.

 

 

CI/CD의 이점

1. λΉ λ₯Έ 배포

CI/CDλ₯Ό μ‚¬μš©ν•˜λ©΄ μ½”λ“œ λ³€κ²½ 사항이 λΉ λ₯΄κ²Œ 배포될 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” 특히 μ‚¬μš©μž ν”Όλ“œλ°±μ— λΉ λ₯΄κ²Œ λŒ€μ‘ν•΄μ•Ό ν•˜λŠ” μƒν™©μ—μ„œ 큰 μž₯점이 λ©λ‹ˆλ‹€.

 

2. μ½”λ“œ ν’ˆμ§ˆ ν–₯상

μžλ™ν™”λœ ν…ŒμŠ€νŠΈμ™€ 톡합 덕뢄에 μ½”λ“œ ν’ˆμ§ˆμ΄ λ†’μ•„μ§€κ³ , 배포 쀑 λ°œμƒν•  수 μžˆλŠ” 였λ₯˜κ°€ μ€„μ–΄λ“­λ‹ˆλ‹€. μ΄λŠ” ꢁ극적으둜 더 λ‚˜μ€ μ‚¬μš©μž κ²½ν—˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

 

3. 더 λ‚˜μ€ ν˜‘μ—…

CI/CDλŠ” 개발자 κ°„μ˜ ν˜‘μ—…μ„ μ΄‰μ§„ν•©λ‹ˆλ‹€. 각자의 μž‘μ—…μ΄ μ§€μ†μ μœΌλ‘œ ν†΅ν•©λ˜κ³  ν…ŒμŠ€νŠΈλ˜λ―€λ‘œ, νŒ€μ€ λ”μš± μ›ν™œν•˜κ²Œ ν˜‘μ—…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

CI/CD 도ꡬ

 

 

1. Jenkins

JenkinsλŠ” μ˜€ν”ˆ μ†ŒμŠ€ μžλ™ν™” μ„œλ²„λ‘œ, λ‹€μ–‘ν•œ CI/CD νŒŒμ΄ν”„λΌμΈμ„ κ΅¬μΆ•ν•˜λŠ” 데 널리 μ‚¬μš©λ©λ‹ˆλ‹€. ν”ŒλŸ¬κ·ΈμΈ 기반으둜 λ‹€μ–‘ν•œ κΈ°λŠ₯을 μΆ”κ°€ν•  수 μžˆμ–΄ μœ μ—°ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

2. GitLab CI/CD

GitLab은 μ½”λ“œ 관리와 ν•¨κ»˜ CI/CD κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. ν”„λ‘œμ νŠΈμ˜ Git 리포지토리와 직접 ν†΅ν•©λ˜μ–΄, λ³€κ²½ 사항이 λ°œμƒν•  λ•Œλ§ˆλ‹€ μžλ™μœΌλ‘œ νŒŒμ΄ν”„λΌμΈμ„ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

3. CircleCI

CircleCIλŠ” ν΄λΌμš°λ“œ 기반 CI/CD λ„κ΅¬λ‘œ, λΉ λ₯΄κ³  κ°„νŽΈν•˜κ²Œ CI/CD νŒŒμ΄ν”„λΌμΈμ„ ꡬ좕할 수 μžˆμŠ΅λ‹ˆλ‹€. 특히, λΆ„μ‚°λœ νŒ€μ—μ„œ 효율적으둜 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

 

κ²°λ‘ 

CI/CDλŠ” ν˜„λŒ€μ μΈ μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ—μ„œ λΉ λ₯΄κ³  μ•ˆμ •μ μΈ 배포λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” μ€‘μš”ν•œ λ°©λ²•λ‘ μž…λ‹ˆλ‹€. 지속적인 톡합과 배포λ₯Ό 톡해 κ°œλ°œμžλŠ” μ½”λ“œμ˜ ν’ˆμ§ˆμ„ μœ μ§€ν•˜λ©΄μ„œλ„ μƒˆλ‘œμš΄ κΈ°λŠ₯을 λΉ λ₯΄κ²Œ μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Jenkins, GitLab, CircleCI와 같은 도ꡬλ₯Ό ν™œμš©ν•΄ μ—¬λŸ¬λΆ„μ˜ ν”„λ‘œμ νŠΈμ— CI/CDλ₯Ό λ„μž…ν•΄ λ³΄μ„Έμš”.

728x90
λ°˜μ‘ν˜•
loading