매번 개발자가 코드를 작성하거나 수정하고 빌드와 테스트를 하고 매번 배포를 하게되면 많은 시간이 소요됩니다. 하지만 git에 코드를 올리는 것으로 빌드와 테스트 그리고 배포까지 자동으로 된다면 쓸데없는 시간을 단축시키고 개발에 시간을 더 쏟을 수 있습니다. 그래서 오늘 CI
와 CD
에 대해 정리해보겠습니다.
CI란?
CI는 간단히 빌드/테스트 자동화
과정입니다. CI를 성공적으로 구현한 경우 애플리케이션에 대한 새로운 코드나 코드의 변경사항이 발생하면 정기적으로 빌드 및 테스트되어 공유 레포지토리에 통합되어 여러명의 개발자가 동시에 개발하는 경우 서로 충돌할 수 있는 문제를 해결할 수 있습니다.
커밋할 때마다 빌드와 테스트가 자동적으로 이루어져 정상동작 하는지 확인하고 문제가 생기는 부분이 없도록 보장해줍니다.
CD란?
CD는 간단히 배포 자동화
과정입니다. CI는 Continuous Delivery
혹은 Continuous Deployment
두 용어로 사용됩니다.Continuous Delivery
는 공유 레포지토리로 자동 Release 하는것, Continuous Deployment
는 Production 레벨까지 자동으로 deploy하는 것을 의미합니다.
CI/CD 적용 전과 후
CI/CD 적용 전
- 개발자들이 개발하여 코드를 수정한다.
- 각자의 feature 브랜치에 코드를 push한다.
- 각자의 코드를 git에 올리고 통합합니다.
- 에러 벌생시 에러가 발생한 부분을 찾기 위해 디버깅하고 코드를 수정합니다.
- 1~4 과정을 반복합니다.
- 배포를 시작하지만, 배포도 개발자가 직접 하므로 시간이 많이 소요됩니다.
CI/CD 적용 후
- 개발자들이 개발하고 feature 브랜치에 push합니다.
- git push가 trigger되어 CI서버에서 알아서 build, test를 실행하고 결과를 전송합니다.
- 개발자는 에러가 발생하면 에러부분을 수정하고 커밋하는 과정을 반복합니다.
- CI가 성공했다면 main 브랜치에 merge합니다.
- main에 merge되면 trigger되어 Ci 서버에서 build, test를 수행하고 deploy까지 자동적으로 진행됩니다.
'DevOps' 카테고리의 다른 글
[ELK] 로그 모니터링 시스템 (1) | 2024.01.05 |
---|---|
[CI/CD] Jenkins로 CI/CD 구축하기 (0) | 2024.01.03 |
[UBUNTU] 우분투 서버 SSH로 접속 세팅하기 (0) | 2023.10.17 |
[Ubuntu] 22.04.3LTS Java 설치 및 환경 변수 설정 (1) | 2023.10.14 |
리눅스 서버 외부에서 접속하기 (0) | 2023.10.07 |