본문 바로가기
개발 일지/개발 공부

CI/CD(feat. DevOps)

by osul_world 2022. 5. 22.
728x90

프로젝트 배포를 준비하면서 여러 자료를 찾아보다가 DevOps , CI/CD 라는 키워드를 자주 접했다.

(지금 공부하고 있는 Docker에서도 CI 환경 구축이 포함되어있다.)

 

이전에 문서를 한번 읽어서 추상적인 느낌은 알고있었지만 정확한 정리가 한번은 필요하다고

생각해 CI/CD 시리즈의 시작으로 이 글을 포스트한다.

 

DevOps 모델에 관한 설명은 https://aws.amazon.com/ko/devops/what-is-devops/ 여기를 참고하면 좋을것 같다.

 

CI (Continuous Integration)

CI는 Continuous Integration 즉, 지속적인 통합이라는 의미이다.

지속적인 통합이란, 어플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어공유

레포지토리에 통합히는 것을 의미한다.

 

정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.

  1. 개발이 완료되면 코드를 git에 통합한다.
  2. 통합된 코드를 테스트를 통해 버그는 없는지 빌드는 되는지 검증한다.
  3. 버그가 발견되면 1,2과정을 반복한다.

 

CD (Continuous Deployment)

CD는 Continuous Deployment, 즉, 지속적인 배포이라는 의미이다.

CI에서 Bulid 되고 Test 된 후에, 배포 단계에서 release 할 준비 단계를 완료하면, 자동으로 배포를 진행하는 것을 의미한다.

 

 항상 신뢰 가능한 수준에서 배포될 수 있도록 관리하자는 개념으로 지속적 제공 (Continuous Delivery)로 사용되기도 한다.

지속적 제공 은 CI를 통해서 새로운 소스코드의 빌드와 테스트 병합까지 성공적으로 진행되었다면, 빌드와 테스트를 거쳐 github과 같은 저장소에 업로드하는 것을 의미한다.

 

 

정리하자면, CI/CD는 지속적인 통합과 지속적인 배포가 자동화된 환경을 의미한다.

대표적인 CI/CD의 방법으로는 Travis 와 Jenkins가 있다.

 

 

다음에 정리가 완료되면 도커와 Travis github AWS를 이용해 실제로 CI/CD환경 구축을 포스트 해야겠다.

 

Reference

https://seosh817.tistory.com/104

https://www.redhat.com/ko/topics/devops/what-is-ci-cd

https://tecoble.techcourse.co.kr/post/2021-08-14-ci-cd/

728x90