TIL-230823(CI/CD)
📝오늘 공부한 것
- CI/CD
알게 된 점❗
애플리케이션 개발과정을 자동화하고 지속적으로 개발된 코드를 안정적으로 배포하는 데 사용되는 개념과 접근 방법을 나타낸다.
- 주로 사용되는 툴 : Jenkins, Tekton Pipelines, GoCD
장점 :
- 빠른 피드백 : 코드 변경에 대한 테스트와 피드백을 신속하게 받아 개발자들이 문제를 빠르게 수정할 수 있다.
- 자동화된 릴리스 : 코드 변경 사항을 자동으로 배포하므로 릴리스 프로세스가 더 효율적이고 안정적으로 이루어진다.
- 더 낮은 버그 비율 : 자동화된 테스트와 지속적인 통합으로 인해 버그 발생 가능성이 줄어든다.
- 작업의 용이성 : 작은 변경 사항도 주기적으로 통합되므로 병합 작업이 줄어들어 개발자 간의 협업이 용이해진다.
[ CI : Continuous Integration ]
- 개발자들을 위한 자동화 프로세스
- 개발자들이 작성한 코드를 일정 주시로 통합하면서, 이 과정에서 변경된 사항과 기존 코드 간의 충돌이나 버그를 빠르게 발견할 수 있다.
- 빌드와 테스트를 자동화하여 통합 및 검증 단계의 효율성을 향상시킬 수 있다.
- 주로 사용되는 툴 : Jenkins, Travis, CircleCi
[ CD : Continuous Deployment / Continuous Delivery ]
- 지속적인 서비스 제공 및 지속적인 배포
- 개발자들이 애플리케이션에 적용한 변경사항이 버그 테스트를 거쳐 리포지토리에 자동으로 업로드되는 것을 뜻함.
- 개발자의 변경사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스하는 것을 의미. 이는 애플리케이션 제공 속도를 저해하는 수동 프로세스로 인한 운영팀의 프로세스 과부하 문제를 해결
- 단계별 테스트, 코드 리뷰, 시스템 검증 등을 자동화하고, 운영 환경과 유사한 환경에서 코드를 테스트하여 배포 준비. 배포는 개발자 혹은 관리자의 승인을 거쳐 수행
- 사용자에게 실시간으로 업데이트 및 새로운 기능을 제공할 수 있다.
- 지속적인 배포를 위해서는 배포 전 검증 및 테스트 자동화가 철저히 이루어져야 한다.
개발된 코드를 자동으로 운영 환경으로 배포하는 프로세스를 의미
- 모든 테스트를 통과한 코드 변경 사항이 자동으로 운영 환경으로 배포되는 것을 의미하며, CD는 테스트를 통과한 코드가 승인 단계를 거쳐 배포되는 것을 의미한다.
- CD시스템은 코드를 배포하는 작업을 자동화하고, 운영환경에 안정적으로 변경 사항을 반영하여 빠르게 소프트웨어를 개발 및 업데이트할 수 있도록 돕는다.
- 주로 사용되는 툴 : Jenkins,Spinnaker, Screwdriver
https://www.redhat.com/ko/topics/devops/what-is-ci-cd
CI/CD(CI CD, 지속적 통합/지속적 배포): 개념, 툴, 구축, 차이
CI/CD는 애플리케이션의 통합 및 테스트 단계부터 제공 및 배포까지 애플리케이션 라이프사이클 전체에서 지속적인 자동화와 지속적인 모니터링을 제공하는 것을 뜻합니다.
www.redhat.com
https://unity.com/kr/solutions/what-is-ci-cd
CI/CD
CI/CD(지속적 통합/지속적 제공 및 배포)에는 저장소에서 이루어지는 코드 관련 변경 사항을 하루에 여러 차례 통합하는 작업이 포함됩니다. 자세히 읽고 CI/CD 복잡성에 대해 알아보세요.
unity.com
느낀 점🤔
CICD에서 항상 Github Actions, Codedeploy를 사용했었다.
이번에 CICD를 공부하면서 Jenkins를 가장 많이 봤다.
다음에는 Jenkins를 공부해보고 사용해봐야겠다.