프로젝트 배포를 준비하면서 여러 자료를 찾아보다가 DevOps , CI/CD 라는 키워드를 자주 접했다.
(지금 공부하고 있는 Docker에서도 CI 환경 구축이 포함되어있다.)
이전에 문서를 한번 읽어서 추상적인 느낌은 알고있었지만 정확한 정리가 한번은 필요하다고
생각해 CI/CD 시리즈의 시작으로 이 글을 포스트한다.
DevOps 모델에 관한 설명은 https://aws.amazon.com/ko/devops/what-is-devops/ 여기를 참고하면 좋을것 같다.
CI (Continuous Integration)
CI는 Continuous Integration 즉, 지속적인 통합이라는 의미이다.
지속적인 통합이란, 어플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어공유
레포지토리에 통합히는 것을 의미한다.
정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.
- 개발이 완료되면 코드를 git에 통합한다.
- 통합된 코드를 테스트를 통해 버그는 없는지 빌드는 되는지 검증한다.
- 버그가 발견되면 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
'개발 일지 > 개발 공부' 카테고리의 다른 글
실전을 위한 MVC 재 정리(feat. 입력을 원하는 타입으로 가공하는 책임은 어디일까?) (0) | 2022.11.22 |
---|---|
매개변수 3개는 무조건 피해야할까? (0) | 2022.11.08 |
인텔리제이(Intellij)로 디버깅하기 (0) | 2022.02.17 |
VUE.js + SpringBoot 환경 CORS 이슈 해결(feat.SPA 원리) (0) | 2022.02.15 |
Polling보다 WebSocket이 무조건 좋은가? (0) | 2022.02.12 |