[CI/CD] CI/CDμ κ°λ λ° μ’ λ₯
πCI/CDλ?
μννΈμ¨μ΄ κ°λ° λ° λ°°ν¬ κ³Όμ μ μλννκ³ λΉ λ₯΄κ² μ²λ¦¬νκΈ° μν λ°©λ²λ‘ . μ΄λ₯Ό ν΅ν΄ κ°λ°μλ€μ΄ μ½λ λ³κ²½μ μμ£Ό, μμ μ μΌλ‘, κ·Έλ¦¬κ³ μ§μμ μΌλ‘ λ°°ν¬ν μ μλλ‘ λλλ€.
Continuous Integration (CI)
μ§μμ μΈ ν΅ν© : κ°λ°μλ€μ΄ μμ±ν μ½λλ₯Ό ν΅ν©νλ νλ‘μΈμ€.
λͺ©ν : μ½λ λ³κ²½ μ¬νμ΄ μ¦μ ν μ€νΈ λκ³ , λ¬Έμ λ₯Ό μ‘°κΈ°μ λ°κ²¬νμ¬ ν΄κ²°νλ κ²
ν΅μ¬ μμ : μλνλ λΉλμ ν μ€νΈ
[CIμ μ΄μ ]
- μ½λ λ³κ²½ μ λΉ λ₯΄κ² νΌλλ°±μ λ°μ μ μμ.
- μλνλ ν μ€νΈλ₯Ό ν΅ν΄ λ¬Έμ λ₯Ό μ΄κΈ°μ λ°κ²¬νκ³ ν΄κ²°ν μ μμ.
- ν λ΄ μ¬λ¬ κ°λ°μκ° λμμ μμ ν μ μμΌλ©°, μλ‘μ μ½λ λ³κ²½μ΄ μΆ©λνμ§ μλλ‘ κ΄λ¦¬ κ°λ₯
Continuous Delivery (CD)
μ§μμ μΈ λ°°ν¬ : ν΅ν©λ μ½λλ₯Ό νλ‘λμ νκ²½μ λ°°ν¬ν μ€λΉ.
ν΅μ¬ μμ : μ½λκ° νμ λ°°ν¬ν μ€λΉκ° λ μνλ‘ μ μ§λλ κ², νμ§λ§ μ€μ λ°°ν¬λ μλμΌλ‘ μ΄λ£¨μ΄μ§.
[CDμ μ΄μ ]
- μ½λλ₯Ό μμ£Ό λ°°ν¬ν μ€λΉκ° λμ΄ μκΈ° λλ¬Έμ, λΉμ¦λμ€ μꡬμ¬ν λ³νμ λΉ λ₯΄κ² λμν μ μμ.
- λ°°ν¬ νλ‘μΈμ€κ° μλνλμ΄ μΈμ μ€λ₯λ₯Ό μ€μΌ μ μμ.
Continuous Deployment (CD)
Continuous Deliveryμ νμ₯, μ€λΉλ μ½λλ₯Ό μλμΌλ‘ νλ‘λμ νκ²½μ λ°°ν¬ν¨. μ¦, λ°°ν¬ κ³Όμ μ΄ μμ ν μλνλμ΄ μ¬λμ΄ κ°μ ν νμκ° μμ΅λλ€.
[Continuous Deploymentμ μ΄μ ]
- λΉ λ₯΄κ² κΈ°λ₯ λ°°ν¬ κ°λ₯.
- μΈμ μ€λ₯λ₯Ό μ€μ΄λ©°, λ°°ν¬ μ£ΌκΈ°λ₯Ό κ·Ήλ¨μ μΌλ‘ μ§§κ² λ§λ¦.
πCI/CD νμ΄νλΌμΈμ μ£Όμ λ¨κ³
μννΈμ¨μ΄ κ°λ°λΆν° λ°°ν¬κΉμ§μ κ³Όμ μ μλννκΈ° μν μ¬λ¬ λ¨κ³λ‘ ꡬμ±
- μ½λ μμ± (Code): κΈ°λ₯μ μΆκ°νκ±°λ λ²κ·Έλ₯Ό μμ ν ν 컀λ°
- λΉλ (Build): 컀λ°λ μ½λκ° μλμΌλ‘ λΉλ. λΉλμμλ μ’ μμ± κ΄λ¦¬, μ»΄νμΌ, ν¨ν€μ§ λ±μ΄ μ΄λ£¨μ΄μ§.
- ν μ€νΈ (Test): λΉλλ μ ν리μΌμ΄μ μ λν΄ μλνλ ν μ€νΈ μ€ν. μ λ ν μ€νΈ, ν΅ν© ν μ€νΈ, κΈ°λ₯ ν μ€νΈ λ±μ΄ ν¬ν¨λ μ μμ.
- λ°°ν¬ μ€λΉ (Release): ν μ€νΈλ₯Ό ν΅κ³Όν λΉλλ λ°°ν¬ μ€λΉ μνλ‘ λ³κ²½. Continuous Deliveryμμλ μλ μΉμΈμ κ±°μΉκ³ , Continuous Deploymentμμλ μλν.
- λ°°ν¬ (Deploy): μ€λΉλ μ½λλ νλ‘λμ νκ²½μ λ°°ν¬. CI/CDμ λ°λΌ μλ λλ μλμΌλ‘ λ°°ν¬κ°λ₯.
- λͺ¨λν°λ§ (Monitor): λ°°ν¬ ν, μ ν리μΌμ΄μ μ μνλ₯Ό λͺ¨λν°λ§νμ¬ λ¬Έμ κ° λ°μνλμ§ νμΈ.
πCI/CD λꡬ
- Jenkins: κ°μ₯ λ리 μ¬μ©λλ μ€νμμ€ CI/CD λꡬ. νλ¬κ·ΈμΈ κΈ°λ°μΌλ‘ λ€μν κΈ°λ₯μ μ 곡νλ©°, μ μ°νκ² μ€μ κ°λ₯
- GitLab CI/CD: GitLabμμ μ 곡νλ CI/CD κΈ°λ₯μΌλ‘, GitLab 리ν¬μ§ν 리μ λ°μ νκ² ν΅ν©λ¨.
- CircleCI: ν΄λΌμ°λ κΈ°λ° CI/CD λꡬλ‘, λΉ λ₯Έ μ€ν μλμ μ€μ μ κ°νΈν¨.
- Travis CI: GitHubκ³Ό κΈ΄λ°νκ² ν΅ν©λ CI λꡬλ‘, κ°νΈν μ€μ κ³Ό μ¬μ©λ²μ΄ μ₯μ .
- AWS CodePipeline: AWS νκ²½μ μ΅μ νλ CI/CD λꡬλ‘, AWS μλΉμ€μμ ν΅ν©μ΄ κ°λ ₯ν¨.
- Github Actions: GitHubμμ μ 곡νλ μλν μν¬νλ‘μ° λꡬλ‘, μ½λ νΈμ, ν 리νμ€νΈ, μ΄μ μμ± λ± λ€μν GitHub μ΄λ²€νΈμ λν μλνλ₯Ό μ€μ ν μ μμ.
πCI/CD κ΅¬μΆ λ°©λ²
1. μ½λ 리ν¬μ§ν 리 μ€μ
- Gitκ³Ό κ°μ λ²μ κ΄λ¦¬ μμ€ν μ μ¬μ©νμ¬ μ½λ 리ν¬μ§ν 리 μ€μ
- μ½λκ° λ³κ²½λ λλ§λ€ νΈλ¦¬κ±°κ° λ°μνμ¬ CI/CD νμ΄νλΌμΈμ΄ λμνλλ‘ μ€μ
2. λΉλ μλν
- λΉλ λꡬλ₯Ό μ¬μ©νμ¬ μ ν리μΌμ΄μ μ λΉλνλ νλ‘μΈμ€ μλν
- CI λꡬμμ λΉλ μ€ν¬λ¦½νΈλ₯Ό νΈλ¦¬κ±°ν μ μλλ‘ μ€μ
3. μλνλ ν μ€νΈ μ€μ
- μ λ ν μ€νΈ, ν΅ν© ν μ€νΈ, κΈ°λ₯ ν μ€νΈ λ± λ€μν ν μ€νΈλ₯Ό μλμΌλ‘ μ€ννλλ‘ μ€μ
- ν μ€νΈ ν΅κ³Ό μ¬λΆμ λ°λΌ λ€μ λ¨κ³λ‘ μ§νλ μ μλλ‘ μ€μ
4. λ°°ν¬ μ€μ
- νλ‘λμ νκ²½ λλ μ€ν μ΄μ§ νκ²½μ λ°°ν¬ν μ€λΉκ° μλ£λλ©΄, μλμΌλ‘ λ°°ν¬ν μ μλλ‘ μ€μ
- AWS, Google Cloud, Docker λ± λ€μν νλ«νΌκ³Όμ ν΅ν©μ κ³ λ €ν μ μμ.
5. λͺ¨λν°λ§κ³Ό νΌλλ°± 루ν
- λ°°ν¬ ν μ ν리μΌμ΄μ μ μνλ₯Ό λͺ¨λν°λ§ν μ μλλ‘ μ€μ
- λ°°ν¬λ μ ν리μΌμ΄μ μμ λ¬Έμ κ° λ°μνλ©΄ μ¦μ λμν μ μλ κ²½κ³ μμ€ν ꡬμΆ
5. CI/CD κ΅¬μΆ μ μ£Όμν μ
- ν μ€νΈ νμ§: CI/CDμμ κ°μ₯ μ€μν κ²μ μλνλ ν μ€νΈμ νμ§μ λλ€. ν μ€νΈκ° μ λλ‘ μ€κ³λμ§ μμΌλ©΄, λ¬Έμ κ° μλ μ½λκ° νλ‘λμ μ λ°°ν¬λ μ μμ.
- λ°°ν¬ λΉλ: λ°°ν¬λ₯Ό λ무 μμ£Ό νκ±°λ λ무 μ κ² νλ κ²μ λͺ¨λ λ¬Έμ κ° λ μ μκΈ° λλ¬Έμ μ μ ν λΉλλ‘ λ°°ν¬νλλ‘ μ λ΅μ μ립νλ κ²μ΄ μ€μ
- 보μ: λ―Όκ°ν μ λ³΄κ° μ μΆλμ§ μλλ‘ μ£Όμν΄μΌ νλ©°, νμν κ²½μ° λ³λμ 보μ ν μ€νΈλ₯Ό μΆκ°ν΄μΌ ν¨.
κ²°λ‘
CI/CDλ μννΈμ¨μ΄ κ°λ°κ³Ό λ°°ν¬μ μλλ₯Ό λΉ λ₯΄κ² νκ³ , νμ§μ λμ΄λ©°, μΈμ μ€λ₯λ₯Ό μ€μ΄λ κ°λ ₯ν λꡬμ λλ€. μ§μμ μΈ ν΅ν©κ³Ό λ°°ν¬λ₯Ό ν΅ν΄ κ°λ°μλ€μ λ λΉ λ₯΄κ³ μμ μ μΌλ‘ μ νμ μ 곡ν μ μλ€.
μλ¬Έμ
λ컀λ λμ§? …
λ€μ κΈμμ…
μΌλ¨ μ΄λ‘ μ λμΆ©μ΄λλ§ κ³΅λΆνκ³ μ€μ΅ κΈλ λ°λ‘ κΌκΌ μ¬λ €μΌμ§!!
- μ°μ github actions + AWS S3λ‘ λ€λ€ λ§μ΄ CI/CD ꡬμΆμ μ§ννλ λ― λ³΄μ!!