어플리케이션 개발 단계부터 배포 때까지 이 모든 단계들을 자동화를 통해서 조금 더 효율적이고 빠르게 사용자에게 빈번이 배포할 수 있도록 만드는 것을 의미.
지속적으로 코드를 합치고 코드를 배포.
CI : Continuous Integration 지속적인 통합
CD : Continuous Delivery 지속적인 제공 or Continous Deployment 지속적인 배포
CI Continuous Integration 지속적인 통합
장점 : 개발 생산성 향상, 문제점을 빠르게 발견, 버그 수정 용이, 코드의 퀼리티 향상.
CI/CD 파이프라인
CI/CD 를 위한 다양한 tool
Jenkins Buildkite
GitHub Actions ...
혼자가 아닌 수많은 개발자가 코드를 합치고 배포를 계속해서 시스템 없이 수동으로 한다면 아래와 같은 일들이 발생
A개발자 배포 => B개발자 환경에서 안됨.
여러 명의 개발자가 동시에 개발을 하게 될 것이고 이는 앞과 같은 문제가 발생하게 되는데 이를 수동으로 하나하나 해결할 수는 없음.
=> CI/CD 라는 개념이 도래했고 이를 쉽게 해주는 툴 등이 등장.
코드 구축부터 시작해서 배포까지의 일련의 과정들을 CI/CD 파이프라인이라고 함.
총 3가지의 단계로 구성됨.
Continuous Integration : 코드를 빌드하고 테스트하고 합침.
Continuous Delivery : 해당 레퍼지토리에 릴리스.
Continuous Deployment : 이를 프로덕션, 즉 실제 서비스에 배포.
파이프라인이 주는 장점은 코드배포까지 좀 더 체계적으로 만드는 점과 테스트가 강제된다는 점.
파이프라인 자체내에 테스트가 있기 때문에 테스트 없으면 코드 머지자체가 안되게 만들 수 있음.
테스트는 함수 등 작은 단위를 테스팅하는 단위테스트.
모듈을 통합할 때 테스트하는 통합테스트.
사용자가 서비스를 사용하는 상황을 가정해서 테스트하는 엔드투엔드테스트.
배포는 그저 사용자를 위한 서비스를 배포할 수도 있다고 생각할 수 있지만,
그뿐만이 아닌 내부적으로 QA엔지니어나 관리자페이지를 위한 배포, 데이터웨어하우스로부터 데이터를 가공해서 백엔드개발자를 위한 배포 등을 포함.
출처 :
https://www.youtube.com/watch?v=0Emq5FypiMM
https://www.youtube.com/watch?v=KTHZyV9yJGY