CI/CD란?
어플리케이션 개발 단계부터 배포 단계 사이를 자동화시켜 사용자에게 효율적이고 빈번하게 배포시키는 것 -엘리-
1. CI란?
Continuous Integration -> 지속적인 통합
하나의 코드에 대해 여러 명의 사람이 지속적으로 수정하고 품질을 관리하는 것.
-> Git Repository에 지속적으로 commit하고 merge하는 것.
1-1. 코드 변경사항을 주기적으로 빈번하게 머지해야한다
-
여러 사람이 작업할 때, 충돌이 발생하면 개발에 사용하는 시간보다 충돌을 잡는 시간에 더 많은 시간을 투자하게 됨.
-
충돌을 최대한 적게 발생시키기 위해 최소한의 단위로 나누어 빈번하기 머지 해야 함.
1-2. 통합을 위한 단계 (빌드, 테스트, 머지)의 자동화
- 개발자가 merge를 할 때마다 해당 코드가 반영된 어플리케이션이 빌드가 잘 되는 자동으로 판단.
- 빌드가 성공했다면, 다른 코드에 영향이 없는지 테스트.
- 테스트까지 통과했다면, 배포 시 반영.
1-3. CI의 장점
- 생산성이 증가
- CI를 주기적으로 merge를 하기 때문에 충돌을 잡는데 사용하는 시간이 현저히 감소.
- 버그 수정에 용이
- 통합을 위한 단계가 자동화되므로 내가 merge한 코드가 버그가 있는지 즉시 확인 가능.
- 또한 작은 단위로 merge하다 보니 rollback 시 risk가 적음.
- 위 2개의 장점이 합쳐져 코드의 퀄리티가 향상됨
2. CD란?
Continuous Delivery(Deployment) -> 지속적인 제공(배포)
CI가 끝난 후 마지막 배포 단계가 자동화하는 것
2-1. Continuous Delivery
2-2. Continuous Deployment
- Continuous Delivery + 배포 검증부터 배포까지 자동화
3. 정리

4. CI/CD 파이프라인
CI/CD에는 여러 가지 파이프라인이 존재하지만 나는 다음 파이프라인에 대해 공부해 볼 예정이다.

출처
드림코딩 : 보고 한방에 이해해서 다른 자료 볼 필요 없다고 자부함.