Search

CI/CD

Continuous Integration/Continuous Deployment
지속적 톡합 및 배포둜, μ†Œν”„νŠΈμ›¨μ–΄ 개발 및 전달 ν”„λ‘œμ„ΈμŠ€λ₯Ό μžλ™ν™”ν•˜κ³  μ΅œμ ν™”ν•˜λŠ” 방법

CD/CD κ³Όμ •

1.
PLAN
2.
CODE
3.
BUILD
4.
TEST
5.
RELEASE
6.
DEPLOY
7.
OPERATE
8.
MONITOR

Continuous Integration (CI)

지속적인 톡합. μ—¬λŸ¬ κ°œλ°œμžκ°€ μž‘μ„±ν•œ μ½”λ“œλ₯Ό μ§€μ†μ μœΌλ‘œ ν†΅ν•©ν•˜μ—¬ λΉŒλ“œ, ν…ŒμŠ€νŠΈ, ν†΅ν•©ν•˜λŠ” 것

CI κ³Όμ •

1.
PLAN (κ³„νš) : μ†Œν”„νŠΈμ›¨μ–΄ 개발 일정을 μˆ˜λ¦½ν•˜κ³  ν”„λ‘œμ νŠΈμ˜ μš”κ΅¬μ‚¬ν•­μ„ κ³„νšν•©λ‹ˆλ‹€.
2.
CODE (μ½”λ“œ μž‘μ„±) : μ‹€μ œ μ†Œν”„νŠΈμ›¨μ–΄ κΈ°λŠ₯을 κ°œλ°œν•˜κ³  μˆ˜μ •ν•˜λŠ” λ‹¨κ³„λ‘œ, μ½”λ”©κ³Ό μ½”λ“œ 리뷰λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.
3.
BUILD (λΉŒλ“œ) : μ†ŒμŠ€ μ½”λ“œλ₯Ό μ‹€ν–‰ κ°€λŠ₯ν•œ μ†Œν”„νŠΈμ›¨μ–΄λ‘œ λ³€ν™˜ν•˜μ—¬ λΉŒλ“œλœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μƒμ„±ν•©λ‹ˆλ‹€.
4.
TEST (ν…ŒμŠ€νŠΈ) : μžλ™ν™”λœ ν…ŒμŠ€νŠΈλ₯Ό 톡해 μ†Œν”„νŠΈμ›¨μ–΄μ˜ ν’ˆμ§ˆμ„ 보μž₯ν•˜κ³  μ½”λ“œ μ•ˆμ •μ„±μ„ ν™•μΈν•©λ‹ˆλ‹€.

CI νŠΉμ§•

1.
λΉˆλ²ˆν•œ 톡합 : κ°œλ°œμžλ“€μ΄ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³  버전 관리 μ‹œμŠ€ν…œμ— λ³€κ²½ 사항을 컀밋할 λ•Œλ§ˆλ‹€ μžλ™μœΌλ‘œ λΉŒλ“œ 및 ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.
2.
μžλ™ν™”λœ λΉŒλ“œ 및 ν…ŒμŠ€νŠΈ : μ½”λ“œ 변경이 κ°μ§€λ˜λ©΄ μžλ™μœΌλ‘œ λΉŒλ“œ 및 ν…ŒμŠ€νŠΈ ν”„λ‘œμ„ΈμŠ€κ°€ μ‹œμž‘λ˜μ–΄ μ½”λ“œμ˜ 무결성과 μž‘λ™ μ—¬λΆ€λ₯Ό ν™•μΈν•©λ‹ˆλ‹€.
3.
μ‘°κΈ° 였λ₯˜ 감지 : 톡합이 자주 μΌμ–΄λ‚˜κΈ° λ•Œλ¬Έμ— 잠재적인 문제λ₯Ό λΉ λ₯΄κ²Œ κ°μ§€ν•˜μ—¬ λΉ λ₯΄κ²Œ ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
CIλŠ” μ†Œν”„νŠΈμ›¨μ–΄ ν”„λ‘œμ νŠΈλ₯Ό μ•ˆμ •μ μ΄κ³  μ‹ λ’°ν•  수 μžˆλ„λ‘ μœ μ§€ν•˜λ©° νŒ€ κ°„ ν˜‘μ—…μ„ κ°•ν™”ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€. 일반적으둜 CIλŠ” CI/CD (Continuous Integration/Continuous Delivery λ˜λŠ” Continuous Integration/Continuous Deployment)의 μΌλΆ€λ‘œ κ΅¬ν˜„λ˜μ–΄ 전체적인 μ†Œν”„νŠΈμ›¨μ–΄ 개발 수λͺ…μ£ΌκΈ°λ₯Ό μžλ™ν™”ν•˜κ³  μ΅œμ ν™”ν•©λ‹ˆλ‹€.

λͺ©μ 

μ΅œμ’… μ‚¬μš©μžμ—κ²Œ λΉ λ₯΄κ²Œ μƒˆλ‘œμš΄ κΈ°λŠ₯을 μ œκ³΅ν•˜κ³  버그 μˆ˜μ •μ„ λ°°ν¬ν•˜κΈ° μœ„ν•œ λͺ©μ μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€.

CI/CD 기술 및 도ꡬ

CI/CD 도ꡬ νŠΈλžœλ“œ

ꡬ글 νŠΈλžœλ“œ 2023.12.24 일 κΈ°μ€€ 5λ…„κ°„ CI/CD λ„κ΅¬μ˜ νŠΈλžœλ“œλŠ” μˆœμœ„λŠ” μ•„λž˜μ™€ κ°™λ‹€. 1μœ„ : Jenkins 2μœ„ : GitLab 3μœ„ : Github Actions 4μœ„ : Circle CI 5μœ„ : Travis CI
β€’
Jenkins (μ  ν‚¨μŠ€)
β€’
GitLab CI/CD
β€’
Github Actions
β€’
Travis CI
β€’
Circle CI

Jenkins (μ  ν‚¨μŠ€)

μ˜€ν”ˆ μ†ŒμŠ€ CI/CD λ„κ΅¬λ‘œ, λ‹€μ–‘ν•œ ν”ŒλŸ¬κ·ΈμΈμ„ 톡해 λ‹€μ–‘ν•œ ν™˜κ²½κ³Ό 톡합이 κ°€λŠ₯ν•©λ‹ˆλ‹€. λŒ€ν‘œμ μ΄κ³  많이 μ‚¬μš©λ˜λŠ” CI 도ꡬ 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€.

GitLab CI/CD

GitLab은 μ½”λ“œ μ €μž₯μ†Œ, 이슈 νŠΈλž˜ν‚Ή, CI/CD 등을 ν†΅ν•©ν•œ 톡합 개발 ν™˜κ²½μ„ μ œκ³΅ν•˜λ©°, λ‚΄μž₯된 CI/CD κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

Github Actions

GitHub ActionsλŠ” GitHubμ—μ„œ μ œκ³΅ν•˜λŠ” 자체 CI/CD μ„œλΉ„μŠ€λ‘œ, GitHub μ €μž₯μ†Œμ—μ„œ 직접 μ‚¬μš©ν•  수 μžˆλŠ” μœ μ—°ν•˜κ³  κ°•λ ₯ν•œ λ„κ΅¬μž…λ‹ˆλ‹€.

Travis CI

Travis CIλŠ” GitHub와 ν†΅ν•©λ˜μ–΄ μ‚¬μš©λ˜λŠ” CI λ„κ΅¬λ‘œ, 특히 μ˜€ν”ˆ μ†ŒμŠ€ ν”„λ‘œμ νŠΈμ—μ„œ 자주 μ‚¬μš©λ©λ‹ˆλ‹€.

Circle CI

CircleCIλŠ” ν΄λΌμš°λ“œ 기반의 CI/CD ν”Œλž«νΌμœΌλ‘œ, λΉŒλ“œ 및 배포 νŒŒμ΄ν”„λΌμΈμ„ κ΅¬μ„±ν•˜κΈ° μœ„ν•œ 도ꡬλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
(CI μ„€λͺ… κ·Έλ¦Ό 및 μ˜ˆμ‹œ - μž‘μ„±μ€‘)

Continuous Deployment (CD)

CDλ₯Ό β€œContinuous Delivery” 라고 λΆ€λ₯΄κΈ°λ„함
CIλ₯Ό ν†΅κ³Όν•œ μ½”λ“œ λ³€κ²½ 사항을 μžλ™μœΌλ‘œ ν”„λ‘œλ•μ…˜ ν™˜κ²½μ— λ°°ν¬ν•˜λŠ” 것

CD κ³Όμ •

1. RELEASE (릴리슀)
: 배포할 μ€€λΉ„κ°€ 된 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ¦΄λ¦¬μŠ€ν•˜κ³  배포λ₯Ό μœ„ν•œ ν”„λ‘œλ•μ…˜ 릴리슀λ₯Ό μ€€λΉ„ν•©λ‹ˆλ‹€. 2. DEPLOY (배포) : 릴리슀된 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό ν”„λ‘œλ•μ…˜ ν™˜κ²½μ— λ°°ν¬ν•˜μ—¬ μ‚¬μš©μžμ—κ²Œ μ œκ³΅ν•©λ‹ˆλ‹€. 3. OPERATE (운영) : 배포된 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜κ³  μš΄μ˜ν•˜λ©°, 이상 징후λ₯Ό κ°μ§€ν•˜κ³  λŒ€μ‘ν•©λ‹ˆλ‹€. 4. MONITOR (λͺ¨λ‹ˆν„°λ§) : μ†Œν”„νŠΈμ›¨μ–΄μ˜ μ„±λŠ₯ 및 μ‚¬μš© ν˜„ν™©μ„ μ‹€μ‹œκ°„μœΌλ‘œ κ°μ‹œν•˜μ—¬ ν’ˆμ§ˆμ„ μ§€μ†μ μœΌλ‘œ μœ μ§€ν•©λ‹ˆλ‹€.
(CD μ„€λͺ… κ·Έλ¦Ό 및 μ˜ˆμ‹œ - μž‘μ„±μ€‘)