Git

[CI/CD] CI / CD란?

dalooong 2023. 8. 10. 11:03

CI (Continuous Integration)

: 코드의 변화를 짧은 주기로 한 곳으로 모으는 개발 방식입니다.

개별 개발자가 작업에 참여한 시점의 코드가 통합되지 않은채로 오래 개발이 진행되면, 통합하는 과정에서 발생하는 문제가 더 복잡하고 많아질 가능성이 높아집니다. CI는 이러한 상황에 대하여 더 자주, 많게는 하루에 몇번이라도 각 개발자의 작업을 하나의 저장소로 통합하는 개발 방식입니다.

 

CI 특징

  • 통합 과정에 발생할 문제들을 좀더 빠르게 찾아내고 대응할 수 있습니다.
  • 빠른 피드백을 통해 개발 속도를 증진시킵니다.
  • 코드의 품질 향상과 안정성을 갖출 수 있습니다.

CI는 Git을 활용해 프로젝트를 관리하는 방식부터, 소스코드를 자동으로 빌드하고 테스트하도록 환경을 구성하는 등의 활동을 통해 달성합니다. 

 

CD(Continuous Delivery, Continuous Deployment) 

: Continuous Delivery(지속적 전달)는 CI를 확장하여, 짧은 주기로 통합되고 빌드되는 소프트웨어가 자동으로 배포될 수 있도록 구성하는 개발 방식을 부르는 말입니다. CD의 목표는 코드의 변화가 항상 배포 가능한 상태로 유지되어, 프로젝트를 진행하는 개발자들이 빠르고 신뢰성 있게 새로운 기능, 오류 수정 등의 결과물을 배포할 수 있도록 해주는 것입니다. 

Continuous Deployment(지속적 배포)와도 그 목표가 비슷한데, 둘의 차이점을 구분하면 일반적으로 배포 가능한 상태로 만들거나 테스트 환경에 배포하여 결과를 확인하는 목적이 Continuous Delivery라면, Continuous Deployment는 이를 실제로 사용자(End User)가 확인할 수 있는 상태까지 배포하는 목적을 가진 것이 Continuous Delivery입니다. 

출처 : https://velog.io/@eunsilson/CICD-%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0

Devops

데브옵스는 CI/CD를 포함하여, 개발 작업과 운영 작업의 통합과 자동화를 달성하여 이런 소프트웨어 개발 생명주기(SDLC)를 발전시키고 단춗히키는 것을 목표로하는 개발 방법론입니다, 

 

Gitlab

Gitlab은 DevOps를 위한 다양한 도구들을 갖춘 DevOps 플랫폼 입니다. Github 처럼 Git 저장소를 관리하는 용도로 활용할 수 있으며, yaml 형식의 설정 파일로 비교적 쉽게 CI/CD를 구성할 수 있습니다.

 

Gitlab Project와 CI/CD

: Gitlab에서는 프로젝트를 넓은 범위로 사용하게 됩니다. 간단하게는 깃허브의 깃 저장소와 동일하게 생각할 수 있습니다. 프로젝트에서 깃 저장소를 관리하고, 해당 저장소에 CI/CD 등의 설정을 적용하여 사용하게 됩니다.