본문 바로가기
지식창고

CI/CD 도대체 뭘까..?

by 킹명주 2022. 9. 3.

스프링하기도 벅찬데 요즘 CI/CD도 공부해야할 것 같다..

그래서 CI/CD에 대해 정리하면서 이게 무엇인지, 툴은 무엇이 있는지 알아보도록 하자


CI/CD 개념

 

나무위키를 참고해보면  지속적 통합(Continuous integration, CI)지속적 제공(Continuous delivery, CD), 줄여서 CI/CD는 애플리케이션 개발팀이 더 자주, 안정적으로 코드 변경을 제공하기 위해 사용하는 문화와 운영 원칙, 일련의 작업 방식으로 구성하는 것이라고 되어있다.

또한, CI/CD는 데브옵스팀을 위한 권장 사항이자 애자일 방법론의 권장 사항이기도 하다. CI/CD는 통합과 제공을 자동화함으로써 소프트웨어 개발팀이 코드 품질과 소프트웨어 보안을 보장하는 동시에 비즈니스 요구사항을 충족하는 데 집중할 수 있게 해준다.  

여기서 데브옵스팀과 에자일 방법론의 권장 사항이라고 되어있는데, 그렇다면 이 개념들에 대해 무엇인지 살펴보고 넘어가자!


DevOps란?

DevOps는 개발(Development) + 운영(Operation)을 결합한 것으로 애플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철학, 방식 및 도구의 조합이다. 쉽게 말하면 개발자와 운영을 담당하는 전문가 사이의 소통, 협업, 통합 및 자동화를 강조하는 개발 방법론이다.


애자일이 뭐야..?

 

나에게 애자일을 딱 한 문장으로 나타내라고 하면 "문서보다는 개발 중심" 이라고 대답할 것 같다. 물론 이 한 문장 안에 많은 말들이 스킵되어 있다. 자세하게 살펴보자!

 

agile의 뜻은 날렵한, 민첩한의 뜻을 가지고 있다. 즉, 짧은주기의 개발단위를 반복하며 하나의 프로젝트를 완성해 나가는

방식이다. 애자일하면 가장 많이 비교되는 것이 워터폴 방식이다. 워터폴 방식은

이런식으로 앞단계가 끝나야 다음단계로 넘어가게 된다. 워터폴 방식은 확실한 프로젝트에서는 문서를 적립하면서 사용하면 장점이 많은 방법이다. 그러나, 시장 변화에 유연하게 대처해야하고 고객의 피드백을 즉각적으로 반영하기는 힘들다. 이에 반해 애자일 방법은 중간 중간 고객의 변경사항을 반영할 수 있고 시장변화에도 유연하게 대처할 수 있다.

 

다시 CI/CD로 돌아와서 정리해보면 CI/CD는 통합과 제공을 자동화함으로써 소프트웨어 개발팀이 코드 품질과 소프트웨어 보안을 보장하는 동시에 비즈니스 요구사항을 충족하는데 집중할 수 있게 해주는 것이라고 생각하면 될 것이다.


CI/CD Tool

 

대표적인 CI/CD 툴을 소개하고자 한다.

 

1. 젠킨스 (Jenkins)

 

젠킨스는 빌드, 테스트, 배포 프로세스를 자동화하여 소프트웨어 품질과 개발 생산성을 높일 수 있다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유영역에 있는 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해준다.

 

 

2. Github Action

 

GitHub Actions를 사용하면 자동으로 코드 저장소에서 어떤 이벤트(event)가 발생했을 때 특정 작업이 일어나게 하거나 주기적으로 어떤 작업들을 반복해서 실행시킬 수 있다. 쉽게 말해 다른 개발자가 코드 저장소에 Pull Request를 생성하게 되면 GitHub Actions를 통해 해당 코드 변경분에 문제가 없는지 각종 검사를 진행할 수 있다. 특정 브랜치에 이벤트(push, merge ...)가 발생하면 GitHub Actions를 통해 소프트웨어를 빌드하고 상용 서버에 배포할 수 있다.

 

 

3. GitLab

 

gitlab은 자체적으로 CI/CD 를 제공하고 있는데 이는 Github action과 개념이 유사하기 때문에 넘어가겠다.

 

 

 

'지식창고' 카테고리의 다른 글

[Github Actions] CI 맛보기!  (2) 2022.11.06
Micro-Service Architecture(MSA) 정체가 뭘까?  (0) 2022.10.24