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 μ€λͺ
κ·Έλ¦Ό λ° μμ - μμ±μ€)